Projekt Unicorn. Gene Kim

Projekt Unicorn - Gene Kim


Скачать книгу
zu gehen. Sie weiß nicht, wohin, aber sie kann einfach nicht länger bleiben.

      Erst als sie schon in ihrem Auto am Steuer sitzt, entscheidet sie sich, zur früheren Schule ihrer Kinder zu fahren. Zum Glück sind ihre Kinder bereits an einer weiterführenden Schule – und sowieso in einem Alter, in dem sie nicht mehr mit ihren Eltern gesehen werden wollen. Nein, sie will in die Grundschule, in der sich die Fünft- und Sechstklässler zu außerschulischen Aktivitäten treffen. Sie ist stolz darauf, dass sie dem Kollegium vor drei Jahren geholfen hat, einen sehr beliebten Programmier-Club zu gründen. Und sie freut sich, dass sich so viele Schülerinnen und Schüler gefunden haben, die schon vor der weiterführenden Schule Spaß an Wissenschaft, Technik, Ingenieurwesen und Mathematik haben.

      Maxine ist der Ansicht, dass das Erlernen solcher Fähigkeiten unglaublich wichtig ist, denn Programmieren wird vermutlich im nächsten Jahrzehnt in den meisten Berufen benötigt werden und nicht mehr nur auf Entwickler beschränkt sein.

      Sie kommt in das Klassenzimmer und erkennt sofort Maia und Paige, zwei der Kinder, mit denen sie am liebsten arbeitet. Die beiden sind beste Freundinnen, aber gleichzeitig auch ernste Konkurrentinnen, manchmal gar Erzrivalinnen. Beide sind smart, ehrgeizig und besitzen eine besondere Gabe, Probleme zu lösen.

      Es ist das erste Mal in diesem Schuljahr, dass Maxine die Schule besucht. Sie ist überrascht, wie viel älter die Kinder wirken und wie fortgeschritten ihre Programmierkenntnisse sind. Einige schreiben anscheinend Spiele in JavaScript, andere arbeiten an Webservern und zwei der Schüler an Smartphone-Apps.

      Die nächste Stunde verbringt sie damit, sich zeigen zu lassen, woran die einzelnen Gruppen arbeiten, und sich an den Ergebnissen zu erfreuen, die ihr präsentiert werden. Sie liebt es, wenn die Kinder ihr Fragen stellen. Als Maia und Paige sie bitten, bei der Lösung eines Problems zu helfen, zieht sie sich schnell einen Stuhl heran.

      Die beiden versuchen, eine anspruchsvolle Aufgabe zu beenden, bei der der Mittelwert, der Modalwert und die Interquartilsabstände einer Reihe von Zahlen in Python berechnet werden sollen. Sie sieht sofort, dass die Kinder immer wieder den gleichen Einrückungsfehler gemacht haben.

      Wenn sie versuchen, ihr Programm auszuführen, beschwert sich der Python-Parser an diesen Stellen natürlich. Sie haben sich ziemlich bemüht, herauszufinden, was genau sie falsch gemacht haben, und alles versucht, um die Fehler zu beseitigen.

      »Darf ich einen Vorschlag machen?«, beginnt Maxine, aktiver mitzuwirken.

      »Natürlich, Mrs. Chambers«, stimmt Maia zu. Maxine seufzt, immer noch nicht sicher, wie sie von Teenagern angesprochen werden will.

      Maxine erklärt ihnen, wie die Einrückung bei Python funktioniert und inwiefern sich Python von den meisten anderen Programmiersprachen unterscheidet. »Aber egal, welche Sprache ihr verwendet, das Wichtigste ist, euer Programm immer wieder laufen zu lassen«, sagt sie. »Wenn ich etwas zum ersten Mal mache, lasse ich mein Programm jedes Mal laufen, wenn ich irgendetwas geändert habe, um sicherzugehen, dass es sich noch kompilieren und ausführen lässt. Auf diese Weise baue ich nicht stundenlang immer wieder den gleichen Fehler ein, ohne dass ich es merke. Es ist besser, den Fehler direkt beim ersten Mal abzufangen, oder?«

      Sie zeigt den Kindern, wie sie einige der Einrückungen korrigieren können. »Mal sehen, ob das den ersten Fehler behebt …«

      Sie checkt die Schaltflächen im Editor. »Es sieht so aus, als ließe sich euer Programm einfach durch Drücken von Strg+Enter ausführen. Ah, es sieht so aus, als ob noch eine kleine Änderung nötig wäre. Jepp, den ersten Fehler habt ihr jetzt behoben. Behebt nun nach und nach die weiteren Fehler, bis ihr wieder einen funktionierenden Zustand habt. Wenn ihr alles nach jeder kleinen Änderung überprüft, werdet ihr niemals etwas wirklich Großes reparieren müssen …«

      Ihren eigenen Worten nachsinnend, ergänzt sie: »Wenn man sein Programm häufig laufen lässt, kann man sich auch immer wieder selbst über das freuen, was man geschaffen hat, und genau um diese Freude geht es beim Programmieren.«

      Die Mädchen lächeln verständig und merzen die restlichen Fehler in schneller Folge aus. Maxine schmunzelt, als die beiden die Tastaturkürzel benutzen, die sie ihnen gezeigt hat.

      Die Mädchen freuen sich, weil ihr Programm jetzt tatsächlich läuft. Als Maia die Ergebnisse betrachtet, stellt sie fest, dass etwas nicht in Ordnung zu sein scheint. Ihr errechneter Durchschnitt ist eindeutig falsch.

      »Hmm … ich denke, das ist ein Off-by-one-Fehler«, sagt Maxine. »Das ist einer der am häufigsten vorkommenden Fehler, die Programmierer machen. Das passiert oft, wenn dabei Elemente eines Arrays in einer Schleife durchlaufen und wir dabei falsch berechnen, welches Element das letzte ist. Genau das passiert hier: Wir haben das letzte Element übersehen – und ob ihr es glaubt oder nicht, wenn ihr versehentlich ein Element zu viel verarbeitet, kann das Programm abstürzen oder schlimmstenfalls sogar von einem Hacker missbraucht werden.«

      Maxine lächelt die ganze Zeit vor sich hin. Sie freut sich ungemein, ihr Wissen teilen zu können, weil sie über die Jahrzehnte gelernt hat, dass Zustandsveränderungen und die Verwendung von Schleifen sehr, sehr gefährlich und schwierig zu korrigieren sind. Der Absturz des ODBC-Datenbanktreibers, den sie vor einem Jahrzehnt mitten in der Nacht gefixt hatte und durch den sie zu einer Art Legende geworden war, ging auf diese Art von Problem zurück.

      Deshalb engagiert sich Maxine so sehr für die Anwendung funktionaler Programmierprinzipien. Das Erlernen von Clojure, ihrer Lieblingsprogrammiersprache, war das Schwierigste, was sie je getan hat, da ihr Clojure völlig die Fähigkeit nahm, Variablen zu ändern oder zu mutieren. Zweifellos war dies eine ihrer lohnendsten Lektionen, denn sie stellte fest, dass etwa 95 Prozent der Fehler, die sie früher gemacht hatte (wie die, mit denen die Mädchen zu kämpfen hatten), völlig verschwunden waren.

      Funktionale Programmierung ist wirklich ein hervorragendes Denkwerkzeug.

      »Wollt ihr etwas Cooles sehen?«, fragt Maxine die Mädchen. Als sie nicken, sagt sie: »Ich würde Folgendes tun. Es sieht ein wenig seltsam aus, aber man kann Schleifen ganz loswerden, indem man Iteratoren verwendet – eine einfachere und viel sicherere Art, eine Schleife zu schreiben.«

      Sie scannt die Python-Dokumentation, die sie im Internet findet, tippt eine Zeile Code in ihren Editor ein, drückt ein paarmal auf Strg+Enter und landet bei der richtigen Antwort.

      »Voilà! Seht euch das an. Es macht dasselbe wie der Code, den ihr geschrieben habt, aber ohne Schleifen oder bedingte Logik wie in der Prüfung auf das Array-Ende. Tatsächlich ist es nur eine einzige Codezeile ohne die Gefahr, einen Off-by-one-Fehler einzubauen«, sagt sie und ist stolz auf das, was sie gerade geschrieben hat.

      Maxine wird mit »Ohs« und »Ahs« belohnt, und die Mädchen bekommen große Augen, als Maxine ihnen die Lösung zeigt. Sie ist zufrieden, denn diese kleine Übung hat ein wenig überflüssige Komplexität aus der Welt verbannt. Dies könnte die Mädchen vor jahrzehntelanger Frustration bewahren und die Welt etwas sicherer machen.

      Die nächste Stunde verbringt sie damit, zwischen den Teams hin- und herzupendeln, den Kindern beim Lösen von Problemen zuzuschauen und ihnen hier und da kleine Tricks beizubringen, um sie produktiver zu machen und zu erfreuen. Als die Kinder schließlich ihre riesigen, schweren Rucksäcke packen, merkt Maxine, in welch guter Stimmung sie ist.

      Es ist ihr eine große Freude, anderen Menschen, die gern lernen wollen, etwas beizubringen. Außerdem sind es wirklich großartige Kinder. Sie denkt darüber nach, wie einfach hier alles ist. Du drückst Strg+Enter, und das Programm wird kompiliert und ausgeführt. Wenn es einen Fehler gibt, behebst du ihn, drückst eine Taste und versuchst es erneut.

      In ihrer derzeitigen Arbeit ist das absolute Gegenteil der Fall. Sie kann noch immer nicht mal einen Teil-Build des Phoenix-Systems durchführen. Irgendwie gehören Builds nicht mehr zur allgemeinen täglichen Arbeit.

      Maia und Paige haben eine halbe Stunde lang den gleichen Einrückungsfehler gemacht. Bei Parts Unlimited gibt es wahrscheinlich 100 Entwickler, die größere Fehler machen – und es wird Monate dauern, bis sie überhaupt merken, dass sie sie eingebaut haben.

      Die Kinder


Скачать книгу