Zum Inhalt springen

Was ich durch Programmieren gelernt habe

WISE 2014

Wie manche wissen, habe ich im Frühsommer einen Developer-Kurs gemacht (Frontend). Ich wollte und will verstehen, wie die Dinge funktionieren, über die ich berichte. Und ich will die Sprache sprechen können, in der diese Dinge verfasst sind. Was kann ich nach zehn laaangen Samstagen in einer sehr ambitionierten Gruppe (viele davon aus der Tech-Industrie) und Dutzenden Stunden alleine mit Sublime Text 2 erzählen? Das hier:

(1) Der Einstieg ist leicht…
Es war noch nie so einfach, Web Development zu lernen. Frameworks wie Bootstrap oder Foundation sind ein ordentliches Fundament, um mit ein paar Modifikationen ansehnliche Seiten zu basteln, inklusive responsiven Designs (der Frontend-Vorteil ist, dass die Resultate gleich sichtbar sind). Dazu tauchen viele Probleme immer wieder auf – und sind auf StackOverflow schon gelöst.

(2)… alles andere nicht.
„Ansehnlich“ heißt noch nicht gut, und Informationsdesign ist eben doch etwas anders, als <div> unter <div> zu setzen. Für Anfänger wird es mit JavaScript und jQuery schnell komplex und UI-/UX-Design ist nochmal eine ganz andere Sportart. Und dann kommen auf der nächsten Ebene (die für Newbies wie mich noch weit weg ist) noch die ganzen Dialekte (JS-Frameworks, abgeleitete Sprachen, etc.) dazu. Mal eben eine neue Sprache lernen? Selbst für Profis gar nicht mehr so einfach. Meine Vermutung: Der Einstiegslevel ist niedriger geworden, der Profi-Level höher.

(3) Coden ist Handwerk
Der Computer ist ein unerbittlicher Gesprächspartner. Es schmerzt, stundenlang nach einem Bug zu suchen. Es ist toll, ihn gefunden zu haben. Es schmerzt, dass noch ein weiterer Bug im Code ist. Und so weiter. Kurz: Programmieren ist Handwerk, nur Übung und Experimente machen Dich besser.

(4) Logik ist schön
Mein Alltagsjob ist eher kreativ assoziierend – das genaue Gegenteil dessen, was ich im Kurs gelernt habe (Computer bauen eben auf Nullen und Einsen auf). Die Prägnanz von Code, das Zusammenspiel von Verweisen, Bedingungen und Input ist faszinierend, ja sogar schön. Es gibt für Probleme brachiale Lösungen oder filigrane, je nach Level von Handwerk und Kreativität. Es existiert eine Form von Schönheit im Code, die Außenstehenden nur schwer zu vermitteln ist.

(5) Lerne nicht alleine
Ich mag Code Academy, aber ein Kurs in der physischen Welt ist etwas anderes. Weil Du im Dialog die Lösungen findest, Hilfe erhältst und deinen eigenen Fortschritt und den der anderen sehen kannst.

(6) Was ist guter Code?
Wenn ich meinen Dozenten, immerhin ein Googler, nach „gutem Code“ gefragt habe, verstand er die Frage manchmal gar nicht. Er kommt aus einer Schule des Learning-by-Doing, die mir immer weiter verbreitet scheint, weil man als Programmierer nicht mehr zwangsläufig Computerwissenschaften Informatik* studiert haben muss. Das ist gut, aber ich bin mir nicht sicher, ob das software-architektonisch und bei der späteren Code-Pflege nicht seinen Preis hat.

(7) Gute APIs, schwer zu finden
APIs waren für mich immer die Wunderinstrumente des Webs. Einfach anzapfen, raussaugen und woanders wieder einlaufen lassen. Soweit die Theorie. In der Praxis gibt es wenige gut dokumentierte zugängliche APIs, die brauchbar sind (ja, ich weiß, dass es auch bilaterale API-Zugänge gibt, danke der Nachfrage). Für mein Projekt, ein interaktives Museum, wollte ich Gemälde per Zufallsgenerator erscheinen lassen. Ich habe wirklich Abende lang gesucht, bis ich etwas gefunden habe – obwohl auf den Bildern kein Urheberrecht mehr ist. Die Krönung war ein amerikanisches Museum, dass eine API anbot, aber die Metadaten-Kategorien „Metadata“, „Metadata“, „Metadata“ und „Metadata“ nannte.

(8) Kinder sollten coden lernen
Meine Haltung zu Programmier-Kursen in der Schule steht schon länger fest – auch, weil ich sehe, was die Kids hier an den besseren Schulen im Silicon Valley auf die Beine stellen. Der Kurs hat mich noch einmal bestärkt: Programmieren muss so früh wie möglich auf den Lehrplan. Großbritannien hat Coden zum Pflichtfach ab acht Jahren erklärt, Deutschland muss nachziehen. Nicht morgen, sondern gestern. Software ist die Architektur, auf der das 21. Jahrhundert aufbaut.

(9) Das Härteste: Weitermachen
Ich war weder in einem Bootcamp, noch bereite ich mich auf eine Bewerbung vor oder habe besonders viel Zeit oder Naturtalent. Gerade deshalb begann der härteste Part erst nach Kursende: Weiter programmieren. Ich setze mich an manchen Abenden hin, aber es ist natürlich ungleich mühsamer, weil in dieser Phase noch so viele Frustrationspunkte sind. Aber ich werde mich weiter quälen, um Erfolgsmomente zu erleben und in den Logikmustern zu bleiben. Selbst wenn ich die Newbie-Stufe nie verlassen sollte.

(10) Erstaunliche Dinge sind möglich
Meine bessere Hälfte hat aus ihrem (Backend-)Kurs ein Zitat von Zed Shaw mitgebracht, das vielleicht nicht ganz korrekt ist, aber mich ziemlich motiviert hat:

“People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.“

Genau deshalb ist (8) eigentlich falsch: Jeder, der Ehrgeiz hat, sollte coden lernen.

*Update, 16.10.: Siehe Kommentar iTOtto

12 Gedanken zu „Was ich durch Programmieren gelernt habe“

  1. Sehr schöner Artikel! Ich habe ja von Deinem Kurs auch etwas mitbekommen und fand den aber auch ganz schön krass, was die Geschwindigkeit und Art des Vorgehens betrifft. Oder anders: Mit einem anderen Lehrer ginge das auch etwas leichter. Aber im Grunde hast Du völlig Recht: Programmieren lernen ist so einfach wie nie, aber immer noch eine ziemliche Hürde. Aber andererseits: Eine Fremdsprache lernen ist auch kein Spaziergang.

    Mal noch ein paar Anmerungen en Detail:

    ad (3): Dass man nach Bugs stundenlang sucht, hört nicht auf. Das passiert einem auch später immer wieder. Aber: Das passiert einem nur noch sehr selten. Mit der Zeit kommt die Routine und dann steigt auch die Freude daran nochmal wieder.

    ad (4): Definitiv! WordPress … dass hier ja auch seinen Dienst tut trägt als Claim „Code is Poetry“. Schöner Code hat wirklich eine eigene Ästhetik.

    ad (6): Ja! Meiner bescheidenen Meinung nach gibt es einen goldenen Mittelweg zwischen dem „was funktioniert ist gut“-Ansatz der Learning-by-Doing-Leute und der „perfekten Abstraktion“ wie sie viele Informatiker verinnerlicht haben. Eine schlanke und elegante Form, mit wenig Code viel zu erreichen, sich auf die Probleme zu konzentrieren, die vor einem liegen, immer mit einem Auge auf die Zukunft. Mir hat da „der pragamatische Programmierer“ gerade in meinen ersten Jahren als „Profi“ sehr geholfen.

    ad (9): Hier gilt ja wie immer: Nichts schlägt intrinsische Motivation. Programmieren lernen während man etwas baut, das man gebaut haben will führt genau zu jene mythischen Nächten, in denen man gegen 19:00 nur ’noch schnell‘ dieses neue Funktion fertig stellen wollte, dann eines zum andere kam und kurz Zeit später feststellt, dass es ja schon 2:30 ist.

    Abschließend: Großartiges, abschließendes Zitat eigentlich und vermutlich total richtig. Gerade wenn man sich die App-Industrie ansieht. Das macht doch nachdenklich … danke!

  2. [..] Der Computer ist ein unerbittlicher Gesprächspartner

    also, ich habe vor 30 jahren mit einem ti 99/4a mit datasette, 64kb speicher, von denen nur noch 16 kb übrig blieben, wenn das extented basic drinne war, übrigblieben, angefangen und … ich sehe das fröhlicher

    ich hatte bis dahin eigentlich immer erlebt, daß das, was ich gemacht habe, von anderen bewertet wurde. ob das jetzt der vater war, der ölüberströmt in der grube nach einem schraubenzieher schrie und der war dann kein schlitz- sondern ein kreuzschraubenzieher, ob das die lehrer waren, immer war einer da, dem das nie gut genug war und in einer art anfall von schwarzer pädagogik jeden spaß am lernen zertrümmerte.

    der computer war sanft, der sagte „nope, funktioniert nicht!“. kein schimpfen, kein „bist du zu blöd, den richtigen schraubenzieher zu holen?“. einfach nur „nein, machs noch mal!“. das hat mich komplett verändert. ich war plötzlich der einzige, der bewerten konnte, ob das, was ich tat, „gut“ war oder nicht.

    um mich rum gabs ja nur eins zwei komplett irre, die sich einen sinclair zusammengeschraubt hatten oder einen c64 in besitz, mit denen ich nicht mal reden geschweige denn programme austauschen konnte. nur ich und dieses ding, aus dem ich ne grafik nur dadurch herausquetschen konnte, wenn ich den kompletten ascii zeichensatz bit für bit auf großen karierten blättern, 8*8 kästchen, umdefinierte und dann als horusauge in ner pyramide erscheinen lassen konnte.

    mich hat das in vielerlei hinsicht verändert. man betrachtet die welt nicht mehr in wertungen, gut, böse, man sieht sie als etwas, wo man verstehen lernt, wie dinge zusammengesetzt sind, weil man lernt, sie in einzelne schritte zu zerlegen, die abzuarbeiten, wieder zusammenzusetzen wie eine uhr. vor allem aber lernt mal, daß der kern der dinge _problemlösung_ und nicht wertung ist. mir ist doch egal, wer „schuld“ ist, ich will, daß das funktioniert. einfache sache.

    nur, leb mal mit diesen _mutationen_ in einer welt, die das nicht kapiert. wo du zu deinen freunden, die dich fragen, „was machst du denn da“, denen du dann antwortest „ich schreib eine adressverwaltung“ und die dann genüsslich ihren taschenkalender zücken und grienen „hey, guck ma‘ geht ganz ohne strom“.

    hihi, die haben alle heute ein handy mit ner adressverwaltung .. ich hab‘ immer noch keins. bis sie das verstanden haben, wird wohl auch noch mal 20 jahre dauern …

    ich hab‘ meinen kram hier als ziemlich dumme ideen erzählt, ist ein bißchen ausschweifend, so bin ich halt. und mein erstes computerprogramm, das ich genau 3 mal verkauft habe, hier. es ist ein heidenspaß, wenn man zu jemandem sagt „soll ich dir mal mein erstes computerprogramm zeigen?“, der dann erwartungsvoll gen computer starrt und man einfach ein tape zückt. haptisch as hell.

    ich liebe das programmieren, es ist meditation, der weg zur meisterschaft in vielen kleinen übungen, zen pur.

  3. @Hardy: Viele interessante Punkte, dass es um „Problemlösung statt Wertung“ geht, finde ich besonders interessant. Ich weiß nicht, ob das überall so ist, aber ist in jedem Fall eine sehr spannende Perspektive.
    @Ben: Danke für den Lesetipp!

  4. @joha

    habe ich schon viel zu oft erzählt und bin froh, daß ich dann doch noch auf einen aspekt komme, der viel mit so was wie der weiter oben erwähnten schwarzen pädagogik zu tun hat: wenn du dich selbst nicht mehr bewertet fühlst, hörst du auf, selbst zu bewerten. dein held ist dann eben nicht mehr kirk sondern spock … das problem: deine umgebung bleibt ja trotzdem die enterprise und du bist jetzt halt „mutiert“ oder von nem anderen stern. das kann zu heftigen interkulturellen bis intergalaktischen konflikten führen 😉

    was man tut, womit man seine zeit verbringt, das wirkt ja auf einen zurück. für mich hatte das jedenfalls in erster linie mal einen befreienden effekt. wenn man das heute macht, macht man das ja unter anderen rahmenbedingungen, es gibt mehr menschen, die das kompetent bewerten können, was man tut.

    da meinen sourcecode so gut wie niemand gegenliest, muss er ja auch nur meinen ansprüchen, was schönheit betrifft genügen und weil ich mir das eher selbst und ohne bücher (waren einfach zu teuer) beigebracht habe, tendiere ich dazu, alles zur not selbst zu erfinden. das ist nicht sonderlich effektiv, aber ich verbringe meine zeit eben weniger mit dem, was ein anderer sich ausgedacht hat und denke es mir selbst aus.

    das ist wahrscheinlich auch der grund, warum ich mir mit computerspielen so schwer tue. das und die tatsache, daß ich bei doom mal den kopf eingezogen habe, als es diese kellertreppen runterging …

    und mein augenmerk eher darauf zu legen, daß programme nur interpeter sind, die skripte interpretieren sollen, die man zur not während des laufs verändern kann.

  5. Punk 6 ist ein wichtiger Punkt. Zumindest im Berufsalltag eines Softwareentwicklers spart guter Code dann in der Pflege der Software richtig Zeit. Umgekehrt kann es passieren, das ein Produkt nur mühsam an neue Anforderungen angepaßt werden kann.

    @ben: WordPress gilt für mich als Beispiel für eine schlechte Softwarearchitektur. Auch den Code finde ich teilweise gruselig. Als besseres Gegenbeispiel würde ich hier Mediawiki anführen. Pflege und Administration finde ich deutlich einfacher.

  6. Computerwissenschaften gibt es nicht. Das, was im Silicon Valley Computer Science heißt, heißt in Deutschland Informatik. Dabei nimmt der Begriff Informatics langsam Fahrt auf, der deutlich machen soll, dass es eben nicht nur um Coden/Berechnen gehen kann/darf, sondern damit immer Informationen verarbeitet werden, was immer auch Wirkungen in der realen Welt hat.

  7. Das Programmieren unbedingt Pflichtfach in der Schule seien sollte, finde ich offen gesagt diskussionswürdig.

    Man muss hier entscheiden welchen Fokus Schule eigentlich haben soll. Bisher war das (speziell bei Gymnasien) ein wissenschaftlicher Anspruch und das bedeutet (u.a.) Themen und Inhalte zu behandeln die lange Gültigkeit besitzen.
    Programmiersprachen sind sehr viel kurzlebiger.
    Die andere (gegenseitige?) Orientierung ist der Fokus auf Anwendbarkeit.
    Die Gefahr hierbei ist die Aufgabe der Objektivität zugunsten von kurzlebigen direkten Anwendungsmodellen.
    Besseres Beispiel wäre hier ein Fach, welches lehrt wie man Steuererklärungen schreibt.
    Stuererklärungen sind etwas das nicht in Stein gemeißelt ist, sondern etwas das politisch entschieden wurde.

    Programmiersprachen mögen zunächst deutlich weniger politisch erscheinen, aber trotzdem steht die Frage im Raum, wer bestimmt eigentlich welche Programmiersprache benutzt wird und wie diese aussieht?
    Eine demokratische Entscheidung ist es jedenfalls nicht.

    Der Fokus auf Schulbildung als berufliche Ausbildung halte ich deshalb auch für fragwürdig.
    Weil das direkt impliziert, dass den Leuten nur das beigebracht werden soll, was der Markt (gerade) will.

  8. @Stephan: Ich wollte damit auch gar nicht gesagt haben, dass WordPress schönen Code hat. Sie haben „nur“ einen Claim, der behauptet, Code sei Poesie. In der Tat ist WordPress ja eher berüchtigt für seine Code Qualität. Ein Freunde von mir wollte immer mal eine Barcamp Session machen mit dem Thema „Warum WordPress scheisse ist“ und darin einfach nur willkürlich irgendwelche Dateien des Cores aufmachen. 🙂
    In der Tat bin ich aber auch der Meinung, dass WordPress trotz den vielen miesen Codes die eine oder andere wirklich schöne Seite hat. Aber darüber kann man streiten, macht aber nicht soviel Sinn. Geschmack und so …

    @iTOtto: Da sei noch erwähnt, dass es ja auch noch Wissenschaften gibt, die die Informatik flankieren, wie die Computerlinguistik und die Texttechnologie.

  9. Pingback: Leseempfehlung vom 22. October 2015 - off the record

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.