Lautsprecher | Transkript |
| Aurora Tiffany-Davis | Hallo, ich bin Aurora Tiffany-Davis. Ich bin Softwareentwicklerin im JMP Live-Team. Und ich möchte heute mit Ihnen darüber sprechen, wie wir im JMP Live-Team Software entwickeln. |
| Zunächst möchte ich, dass Sie sich vorstellen, wie das Erstellen von Software aussieht. Wenn Sie selbst kein Entwickler sind, ist das Bild, das Sie im Kopf haben, wahrscheinlich durch das Fernsehen und Filme geprägt, die Sie gesehen haben. |
| Sie stellen sich vielleicht jemanden vor, der allein arbeitet, jemanden, der wirklich schlau ist, vielleicht sogar ein Genie, und dessen Vorgehen ganz einfach ist. |
| Sie denken über ein Problem nach, schreiben Code und stellen dann sicher, dass er funktioniert. Und das tut er wahrscheinlich auch, denn schließlich sind sie Genies. |
| Wenn wir alle Genies in JMP Live wären, würde dieser einfache Prozess für uns funktionieren. Aber das sind wir nicht und wir leben in der realen Welt. Wir brauchen also ein bisschen mehr als das. |
| Erstens arbeiten wir nicht allein, sondern in großem Maßstab zusammen. Unser Prozess umfasst mehrere Schritte, die sicherstellen sollen, dass wir nicht nur irgendeine Software produzieren, sondern qualitativ hochwertige Software. |
| Ich möchte darauf hinweisen, dass es keinen einzigen richtigen Weg gibt, Software zu entwickeln. Es kann von Unternehmen zu Unternehmen oder sogar innerhalb von Unternehmen unterschiedlich sein, aber ich werde Sie durch unseren Prozess führen |
| indem ich Ihnen sage, was ich tun würde, wenn ich eine neue Funktion in JMP Live entwickeln würde. |
| Bevor ich mich hinsetze und Code schreibe, muss ich zunächst ein gewisses Bedürfnis dazu verspüren. |
| Es muss da draußen einen echten Benutzer mit einem echten Problem geben, etwas, das er in JMP Lives identifiziert hat und das nicht funktioniert ... das nicht so funktioniert, wie er denkt, dass es funktionieren sollte. |
| Das ist eine nette Art zu sagen, dass sie einen Fehler oder eine angeforderte Funktion gefunden haben. |
| Wir verfolgen diese Anfragen intern in einem System. Als Erstes gehe ich in dieses System, suche mir ein Problem mit hoher Priorität, das gut zu meinen Fähigkeiten passt, und beginne mit der Arbeit daran. |
| Als nächstes muss ich den Bedarf ein bisschen besser verstehen. Ich werde mit Leuten sprechen und versuchen herauszufinden, welche Art von Benutzern diese Funktion möchte. Wie werden sie sie nutzen? |
| Und dann werde ich JMP Live auf meinem Rechner ausführen und mir ansehen, wie diese Funktion in das heutige JMP Live passen könnte. |
| Oder ich öffne den Code und schaue, wo der neue Code in unsere vorhandene Codebasis passen könnte. |
| Sobald ich glaube, dass ich ziemlich genau verstanden habe, was benötigt wird, beginne ich mit der Arbeit am Design. Auch hier spreche ich mit Leuten. Ich spreche mit Leuten im Team und frage: „Haben Sie schon einmal an einer ähnlichen Funktion gearbeitet? Haben Sie schon einmal an diesem Teil des Codes gearbeitet?“ |
| Und ich werde mit den User Experience-Experten sprechen, die wir bei JMP haben. |
| Ich werde versuchen, das Rad nicht neu zu erfinden. Wenn es also einen Aspekt der Funktion gibt, der sehr häufig vorkommt und nicht spezifisch für JMP Live ist, beispielsweise das Protokollieren einiger Informationen in einer Datei. |
| Das ist ein gelöstes Problem, Tausende von Menschen hatten dieses Problem in der Vergangenheit. Es könnte eine gute Open-Source-Lösung dafür geben. |
| Und wenn ja, würde ich es möglicherweise verwenden, nachdem ich es sorgfältig geprüft habe, um sicherzustellen, dass es sicher in der Anwendung ist. |
| Es bleibt also noch viel zu tun, es muss noch viel JMP Live-spezifischer Code geschrieben werden. Ich werde also Artikel und Diagramme schreiben und |
| Beschreiben Sie, was ich vorschlage, und stellen Sie sicher, dass alle im Team mit der Richtung, die ich mit dem Design einschlage, einverstanden sind. Dann setze ich mich hin und schreibe den Code. |
| Dazu verwende ich eine integrierte Entwicklungsumgebung, also ein Tool zum Schreiben von Code, das über jede Menge Schnickschnack verfügt, der Ihnen hilft, Ihre Arbeit effizienter zu erledigen. |
| Jetzt habe ich etwas Code geschrieben. Bevor ich ihn einchecke, möchte ich die Probleme finden, die in dem Code vorhanden sind, den ich gerade geschrieben habe. Ich bin nur ein Mensch, daher ist die Wahrscheinlichkeit, dass ich beim ersten Versuch 100 % fehlerfreien Code geschrieben habe, ziemlich gering. |
| Ich werde zunächst nach sehr offensichtlichen Problemen suchen und dazu eine statische Analyse verwenden. |
| Bei der statischen Analyse wird mein Code nicht während der Ausführung betrachtet, sondern so, als wäre er gerade auf eine Seite geschrieben worden. Eine Analogie wäre die Rechtschreibprüfung in Microsoft Word. |
| Die Rechtschreibprüfung kann Ihnen nicht sagen, ob Sie einen spannenden Roman geschrieben haben, aber sie kann Ihnen sagen, ob Sie irgendwo ein Komma vergessen haben. Die statische Analyse erledigt das für Code. |
| Sobald ich wirklich offensichtliche Dinge wie diese gefunden und behoben habe, mache ich mich daran, weniger offensichtliche Probleme zu finden. Und dafür verwenden wir eine automatisierte Testsuite. |
| Dies unterscheidet sich von der statischen Analyse, da der Code tatsächlich ausgeführt wird. Es wird ein Teil des Codes mit einer bestimmten Eingabe ausgeführt und eine bestimmte Ausgabe erwartet. Wir haben eine breite Palette von Tests für unseren Code geschrieben. |
| Und ich werde mich hinsetzen und Tests für die Funktion schreiben, an der ich gerade arbeite. |
| Das ist wirklich nützlich, denn wenn ich mich hinsetze, um die Tests zu schreiben, muss ich mir klarmachen, wie der Code genau funktionieren soll. Außerdem schützt es davor, dass jemand anderes die Funktion in Zukunft versehentlich kaputt macht. Es ist eine großartige Möglichkeit, Probleme frühzeitig zu erkennen. |
| Fahren Sie nun mit den manuellen Tests fort. Ich werde JMP Live auf meinem Computer ausführen, die neue Funktion testen und sicherstellen, dass sie wie erwartet funktioniert. |
| Ich könnte sogar in der Datenbank herumstöbern, die hinter JMP Live liegt und die Datensätze, Beiträge, Gruppen, Benutzer und Kommentare verfolgt, um sicherzustellen, dass alle diese Datensätze so geschrieben werden, wie ich es für richtig halte. |
| Jetzt bin ich vorsichtig optimistisch, dass ich guten Code geschrieben habe, und der nächste Schritt ist die Peer-Review. Ich möchte, dass meine Kollegen mir helfen, den Code durchzusehen und alles zu finden, was ich möglicherweise übersehen habe. |
| Ich habe vielleicht etwas übersehen, weil ich einfach Scheuklappen habe oder weil jemand anderes in meinem Team einfach über Kenntnisse verfügt, die mir fehlen. Dieser Schritt ist oft auch für den Prüfer sehr hilfreich, da er dadurch neue Techniken kennenlernt. |
| Nachdem der Code das Peer-Review durchlaufen hat, sind wir bereit, ihn tatsächlich festzuschreiben oder in ein Quellcode-Repository einzuchecken. |
| Wir haben auf unseren Servern ein kontinuierliches Build-System, das darauf achtet, dass wir Code einchecken. Und wenn wir das tun, macht es eine Menge Sachen mit diesem Code. |
| Stellen Sie beispielsweise sicher, dass die richtigen Dateien am richtigen Ort vorhanden sind, die richtigen Namen haben usw. Außerdem werden unsere Stapelanalyse und unsere gesamte automatisierte Testsuite erneut ausgeführt. |
| Das ist nützlich, denn wir sind schließlich nur Menschen. Jemand könnte vergessen haben, diese Dinge früher im Prozess zu tun, oder etwas könnte sich geändert haben, seit er es das letzte Mal getan hat. |
| Sobald der Code den kontinuierlichen Build durchlaufen hat, steht er nun Personen außerhalb der Entwicklungsgruppe zur Verfügung. Die ersten, die dies bemerken, sind unsere Testexperten bei JMP. |
| Sie werden alles durchgehen und möglicherweise unsere automatisierte Testsuite ergänzen. Möglicherweise führen sie auch einige manuelle Tests durch. |
| Sie schauen sich beispielsweise an, wie die Software auf verschiedenen Betriebssystemen, in verschiedenen Browsern usw. funktioniert. Sie denken sich verrückte Dinge aus, die der Benutzer tun könnte, und schauen sich an, was passiert und wie die Software darauf reagiert. |
| Sie stellen einen wirklich entscheidenden Teil unseres Prozesses dar. Sie denken wirklich kreativ darüber nach, wenn es darum geht, Probleme in unserem Produkt zu finden. |
| Sobald sie sich abgemeldet haben, ist die Software verfügbar und kann in unserer nächsten Softwareversion verwendet werden. Lassen Sie mich jetzt herauszoomen und Ihnen das Produkt zeigen … den gesamten Prozess. |
| Und es sind viele Schritte. Das ist eine Menge Zeug. Machen wir das wirklich für unseren gesamten Code? |
| Ob Sie es glauben oder nicht, dieser Prozess ist sehr skalierbar. Für einen wirklich einfachen, offensichtlichen Fehler werden wir diesen Prozess also ziemlich schnell durchgehen. |
| Aber um eine sehr komplexe neue Funktion zu erreichen, werden wir bei jedem Schritt dieses Prozesses langsamer vorgehen, uns Zeit lassen und sehr sorgfältig darauf achten, dass wir es wirklich richtig machen. |
| Alles, was Zeit kostet, kostet ein Unternehmen Geld. Warum ist JMP also bereit, dieses Geld in Softwarequalität zu investieren? |
| Ein Grund dafür ist ganz einfach: Wir sind stolz auf unsere Arbeit und möchten ein gutes Produkt herstellen. |
| Der zweite Grund ist etwas weniger idealistisch. Wir wissen, dass unsere Kunden Probleme finden werden, wenn unser Produkt Probleme hat und wir diese nicht finden. Und das ist nicht gut fürs Geschäft. Deshalb möchten wir das minimieren. |
| Ich möchte darauf hinweisen, dass JMP zwar Zeit und Geld in die Softwarequalität investiert, |
| Wir investieren nicht so viel Geld wie beispielsweise eine Organisation wie die NASA, daher können wir keine Perfektion versprechen. Wie bei jeder Software, die auf dem Markt ist, |
| Sie könnten etwas in JMP Live finden, das nicht so funktioniert, wie Sie es sich vorstellen. Wenn Sie einen Vorschlag finden, |
| Wir möchten Sie einladen, www.jmp.com/support zu besuchen und uns mitzuteilen, ob Ihrer Meinung nach etwas anders funktionieren sollte oder ob Sie sich Funktionen für die Zukunft wünschen. |
| Solches Feedback aus der Praxis von echten Benutzern ist für uns unglaublich wertvoll und wir begrüßen es sehr. Das ist alles, was ich heute für Sie habe, aber ich hoffe wirklich, dass Ihnen der Rest von Discovery gefällt. Vielen Dank. |