📚

Als Journalist programmieren lernen – eine Bilanz (und vielleicht eine Anleitung)

December 28, 2012 (updated on December 31, 2014)

#CodeYear

Read this article in English

Das Jahr ist zu Ende und mein #CodeYear-Fortschrittsbalken steht bei 100%. Ich kann nun, an Journalisten-Massstäben gemessen, programmieren. An Programmierer-Massstäben gemessen kann ich: nichts. Dieser Blick auf den grossen Kontext ist wichtig, aber keineswegs entmutigend. Im Gegenteil.

Ziel meines Projekts war nicht, mich anschliessend bei Facebook als Programmierer zu bewerben. Sondern meinen Erfahrungshorizont als Journalist zu erweitern, neue Möglichkeiten zu erschliessen und schlicht auch: mal wieder etwas ganz Neues zu lernen. Darum kann ich ohne zu zögern bilanzieren: Es hat sich gelohnt. Programmieren zu lernen ist bereichernd, ich empfehle es weiter. Gleichzeitig hat sich im Laufe des Projekts meine Antwort auf die Frage, ob Journalisten programmieren können sollten, verfeinert. Dazu aber später mehr.

Dieser Beitrag soll dokumentieren, wie mein «Programmier-Jahr» verlaufen ist, Schwierigkeiten aufzeigen, zentrale Erkenntnisse festhalten – und hoffentlich auf andere Journalistinnen und Journalisten motivierend wirken, es auch zu versuchen.

Das Projekt

Am 8. August 2011 habe ich öffentlich angekündigt, dass ich zu programmieren lernen werde. Meine Voraussetzungen: Ganz passable Kenntnisse im Umgang mit HTML und CSS und ein Faible für Mathematik und Logik (wer sich schon hier nicht mehr angesprochen fühlt: entscheidend waren diese Voraussetzungen nicht). Mit zwei Hauptproblemen war ich konfrontiert.

  1. Welches ist (für mich), der beste Weg, um einzusteigen?
  2. Was ist eigentlich mein Ziel?

Das Internet bietet heute Einsteigern nicht zu wenige, sondern zu viele verschiedene Möglichkeiten. Ich habe einige Tutorials gelesen, mir das Standardwerk «Java Script: The Definitive Guide» bestellt und einige Dutzend Videokurse von Treehouse absolviert. Nichts davon hat mir richtig zugesagt. Das Buch war zu abstrakt und zu kompliziert für einen absoluten Einsteiger, bei den Kursen von Treehouse hatte ich schnell das Gefühl, sie zu bestehen, obwohl nicht nicht alles wirklich verstanden habe. Abgesehen davon fehlte mir nach wie vor das fassbare Ziel.

Beide Probleme lösten sich schliesslich Ende 2011, als die Online-Lernplattform Codecademy das #CodeYear lancierte. Ich hatte nun ein Ziel (von dem ich zwar nicht genau wusste, wie es aussah, aber darauf vertrauen konnte, dass jemand sich etwas dabei überlegt hatte), eine klare Struktur (wöchentliche Lektionen) und die Hoffnung, nicht alleine da durch zu müssen (ja, ich schaue euch alle an, die ihr zum Jahreswechsel getweetet habt, ihr würdet beim #CodeYear mitmachen).

Learning 1: Setze dir ein Ziel und sprich immer wieder darüber. Den Druck wirst du gebrauchen können.

Der Einstieg ins #CodeYear

Programmieren zu lernen ist in vielerlei Hinsicht ähnlich wie eine neue Sprache zu lernen (was nicht erstaunlich ist: JavaScript, Python und Co. sind ja nichts anderes als Sprachen, um mit Computern zu kommunizieren). Entsprechend euphorisierend ist der Einstieg. Kaum losgelegt, kann man schon «Guten Tag» sagen console.log(“Hello World!”), auf Drei zählen 0,1,2 und sich ein Bier einschenken beer.full = true;

Codecademy gestaltet den Einstieg leicht und unterhaltsam. Man liest kurze Anleitungen und schreibt dann direkt Code in einen Editor. Schritt für Schritt wird man in diese neue Welt hineingeführt und hat gleichzeitig das Gefühl, bereits mittendrin zu sein (weil man eben nicht liest oder Videos schaut, sondern selber Zeile um Zeile programmiert).

Jeder Kurs ist in drei bis sechs Abschnitte unterteilt, diese wiederum in vier bis acht Programmierschritte. Die einzelnen Schritte sind klein genug, um nicht überfordert zu werden, in der Summe hat man aber jede Woche was Ordentliches programmiert, das sich nach Fortschritt anfühlt (die virtuellen Badges, die man sich verdient, tun ihren Teil dazu). Und es hat den für Berufstätige nicht zu unterschätzenden Vorteil, dass man jederzeit aussteigen und wieder einsteigen kann.

Learning 2: Als Lernplattform empfehle ich Codecademy. Im Januar startet das CodeYear 2013. Ein idealer Zeitpunkt, um einzusteigen.

Und dann nervt es unglaublich

Man sieht es meinen Badges an: Ende Januar habe ich aufgegeben. Das hatte einerseits damit zu tun, dass es sehr viel Disziplin braucht, sich neben 100% Arbeit noch zwei bis drei Stunden pro Woche freizuschaufeln, um am Computer Zeilen mit kryptischer Sprache zu füllen.

Es hatte aber noch mehr damit zu tun, dass sich das Erlernen einer Programmiersprache in einem Punkt wesentlich vom Lernen einer anderen Fremdsprache unterscheidet: Computer sind als Gegenüber verdammt unflexibel und erbarmungslos. Es reicht, eine }-Klammer am falschen Ort zu schliessen oder ein Semikolon zu vergessen, und die Kommunikation hakt.

Die ersten Wochen nach der ersten Euphorie sind darum nach meiner Erfahrung eine fiese Geduldsprobe. Die gefühlten Fortschritte sind minim, der Frust über bis auf ein Zeichen perfekt geschriebenen Code, der dann nicht funktioniert, riesig. Als würde man in einer Fremdsprache einen kompletten Dreigänger inklusive Getränke bestellen und der Kellner sagt «Nichts verstanden», bloss weil man den Namen des Weinguts falsch ausgesprochen hat (wenn ich’s mir so überlege, ist ein Kurzurlaub in Frankreich vielleicht eine gute Vorbereitung für das #CodeYear).

Learning 3: Die Wochen nach der Anfangseuphorie sind verdammt hart. Der Spass kommt aber wieder zurück.

Der zweite Anlauf

Ich brauchte bis im Juli, um mich wieder an die Sache heranzumachen. Hätte ich gewusst, dass der Einstieg deutlich leichter fällt und dass es nachher sehr schnell sehr viel besser wird, hätte ich nicht so lange gewartet. Ein paar Wochen Pause halte ich aber auch rückblickend nicht für verkehrt. Es hilft, die Grundprinzipien mit Variablen, Parametern, Funktionen und – ja, Satzzeichen – einsickern zu lassen. Und neue Frustrationstoleranz aufzubauen.

Beim Wiedereinstieg habe ich festgestellt, dass nicht nur vieles, was ich Anfang Jahr gelernt hatte, hängen geblieben war. Mehr noch, ich sah plötzlich vieles klarer, so dass ich in den kommenden Wochen sehr rasch voran kam.

Learning 4: Gönne dir nach dem ersten Scheitern ein paar Wochen Pause.

Github

Es war in erster Linie ein ironisches Statement, als ich mir im Juli einen Account bei Github (eine Art Social Network und Kollaborationsplattform für Programmierer) angelegt habe. Nach wie vor steht dort in meiner Beschreibung: «Journalist. Programming Toddler.»

Was ich mir tatsächlich von Github versprach: ein wenig ein Gespür für diese Community zu bekommen, die unsere ganze digitale Welt zum Laufen (und gelegentlich zum Abstürzen bringt) und die mit viel Engagement an Programmen arbeitet, die für den journalistische Arbeit wertvoll sind (siehe meine Sammlung auf Quora).

Wie sehr ich in den Monaten danach von Github und seiner Community würde profitieren können, ahnte ich jedoch nicht im Geringsten.

Learning 5: Lege dir ein Konto bei Github an. Und sei’s zunächst nur aus Selbstironie.

Das erste eigene Projekt

Am 7. Oktober hiess die Wochenaufgabe bei Codecademy: Programmiere dein erstes eigenes Projekt. Bisher war man Woche für Woche in kleinen Einzelschritten zu einem Endprodukt geleitet worden. Und nun war da ein leerer Editor und keine Anweisung, ausser: mach mal! Da war sie wieder, die Herausforderung, selber ein Ziel zu definieren. Bloss, dass es mir diesmal deutlich leichter fiel, dank einem klareren Verständnis davon, was Programmierung ist und was (mir) möglich ist. So entstand mein erstes selber programmiertes Tool, ein simpler Wordcounter.

Das erste Projekt ist eine Belohnung. Und eine Zäsur. Es fällt danach schwerer, sich wieder in die vorgegebenen Kursprogramme zu knien. Gleichzeitig weckt es die Lust, weitere, grössere Projekte in Angriff zu nehmen – mit der Gefahr, sich zu übernehmen. Ich habe beides gemacht: weiter brav Kurse durchgeackert und mir Projekte ausgedacht, die eigentlich nicht in meiner Liga waren.

Learning 6: Packe dein erstes eigenes Projekt an, sobald du das Gefühl hast, ein gewisses Mass an Kreativität einbringen zu können.

Ein Mentor IRL

Es gab im Verlauf des Jahres immer wieder Momente, in denen ich sehr froh war, jemanden zu haben,  der mir im direkten Gespräch Dinge erklären konnte, jemanden, dem ich viele dumme Fragen stellen konnte. Hannes Gassert hat sich glücklicherweise früh für meinen Effort, programmieren zu lernen, interessiert und mir wann immer nötig bereitwillig geholfen (du hast eine Flasche Wein bei mir gut). Er war es, der mir den lokalen Server auf dem Mac eingerichtet hat, der mir erklärt hat, wie Commits und Pull Requests auf Github funktionieren, und der mir Feedback zum (anfänglich natürlich fehlerhaften) Code für meinen Wordcounter gab.

Learning 7: Suche dir einen Programmierer, den du persönlich um Hilfe fragen kannst, wenn du nicht mehr weiter wisst.

Weitere Projekte und die entscheidende neue Dimension

Das erwähnte Projekt, bei dem ich mich (durchaus bewusst) übernommen habe, war Famous First Tweets. Ein einfaches Formular, um den ersten Tweet eines beliebigen Nutzers zu finden. Nichts, dass es nicht schon geben würde, aber etwas, um den Umfang mit Formularen weiter zu üben und um neu auch mit einer API zu arbeiten (inzwischen funktioniert Famous First Tweets nicht mehr, da Twitter mit seiner API restriktiver geworden).

Es war rückblickend das Projekt, bei dem ich realisiert habe, dass das etwas wird mit dem Programmieren. Vieles kam zusammen, was für das erfolgreiche Entwickeln von Code-Projekten wichtig ist:

  • Ich war in der Lage, die für das Gesamtprojekt notwendigen Einzelteile, d.h. Funktionen zu identifizieren
  • Ich war in der Lage, diese Funktionen zu skizzieren
  • Ich war in der Lage, das Projekt als Repository bei Github hochzuladen und so Kollaboration zu ermöglichen
  • Ich kannte die nötigen Schlüsselbegriffe, um nach Codebausteinen im Netz zu suchen
  • Ich verstand bestehende Codebausteine gut genug, um sie in mein Projekt einzubauen

Dass das Tool «Famous First Tweets» nun tatsächlich funktioniert, ist diesen Faktoren zu verdanken – und der Tatsache, dass ein mir davor nicht bekannter britischer Programmierer (thanks, Matt!) via Github jene Bausteine zum Tool beigesteuert hat, die mir zu kompliziert waren.

Seitdem sind weitere Projekte hinzugekommen, die ich alle unter labs.davidbauer.ch sammle. Die genannten Faktoren haben bei all diesen Projekten eine wesentliche Rolle gespielt (man muss die Programmier-Welt nicht neu erfinden, schon gar nicht, wenn auf sich auf diesem Niveau bewegt).

Learning 8: Irgendwann kommt alles zusammen. Ab dann ist vieles möglich.

Was ich anders machen würde

  • Mit Python statt mit JavaScript anfangen. Die Syntax von Python ist intuitiver.
  • Keine fünfmonatige Pause einlegen und früher mit eigenen Projekten anfangen.
  • Mir weniger Sorgen darüber machen, ob die Beispiele nun etwas mit Journalismus zu tun haben.
Learning 9: Verkrampfe dich nicht auf den journalistischen Nutzen. Der erschliesst sich früh genug.

Also, sollten Journalisten programmieren können?

Die Antwort ist Nein. Aber kein Nein im Sinne davon, dass Programmieren nicht etwas ist, was Journalisten tun sollten. Ein Nein, genauso wie nicht alle Journalisten gute Reportagen schreiben können müssen, wie nicht alle Journalisten eine gute Radiostimme haben müssen oder wie nicht alle Journalisten fotografieren können müssen.

Journalismus ist ein weites Feld und die verschiedenen Journalistinnen und Journalisten zeichnen sich je durch eine einzigartige Kombination von Fähigkeiten aus. Die Fähigkeit, zu programmieren, wird dabei zunehmend an Bedeutung gewinnen.

Mein eigener Blickwinkel darauf hat sich insofern etwas verändert, als ich inzwischen weniger direkt als Journalist arbeite, sondern Konzepte und Strategien entwickle, um Journalismus im digitalen Kontext bestmöglich zur Entfaltung zu bringen. Dabei zeigt sich immer deutlicher: (Platt)Form und Inhalt lassen sich nicht mehr isoliert voneinander betrachten, gute Geschichten fügen sich nicht einfach in ein vorhandenes System ein, sondern loten die Möglichkeiten der Technik aus.

Wer programmieren kann, ist dabei im Vorteil. Es geht dabei gar nicht darum, dass Journalisten plötzlich ihre Zeit mit Programmieren verbringen sollen. Wenn es ernst gilt, sind sowieso echte Programmierer gefragt. Aber wer ihre Sprache versteht, dem erschliesst sich eine zusätzliche Dimension an Kreativität, die ins Endprodukt einfliessen kann. Er hat eine Vorstellung davon, was theoretisch möglich ist und verfügt über das Vokabular, um mit Programmierern darüber zu sprechen. Und ja, das eine oder andere kleine Tool kann er vielleicht tatsächlich selber entwickeln – weil nicht in jeder Redaktion ein Programmierer sitzt oder dieser sicher nicht immer verfügbar ist.

Learning 10: Programmierkenntnisse sind ein Alleinstellungsmerkmal für Journalisten und ermöglichen es, über bestehende Formate hinaus zu denken.

Die Tools, die ich nutze

  • Codecademy: Zum Lernen
  • Github: Zum Beobachten und um Hilfe bei meinen Projekten zu erhalten
  • Coda2: Zum Schreiben von Code (Update 2014: inzwischen lieber Sublime)
  • Bootstrap: Zum raschen Aufziehen neuer Seiten
  • Mozilla Developer Network: Um Nachzuschauen, was ich ständig vergesse
  • Twitter: Zum Teilen von Projekten und um Inputs und Feedback zu erhalten
  • Google: Zum Suchen nach Codebausteinen und Antworten auf all die 1000 Fragen, die ich noch habe

Lektüreempfehlungen

Hello, nice to meet you. I'm David Bauer. I’m a journalist by training, a product person by conviction, and a generalist at heart. I love complex issues and helping people navigate them. Learn more →

📨 hello@davidbauer.ch 🤝 LinkedIn

Weekly Filet

Make sense of what matters, today and for the future. Every Friday, I send out carefully curated recommendations on what to read, watch and listen to. Trusted by thousands of curious minds, since 2011.

Past work

I have worked for startups and large companies.
As a journalist, strategist, product lead.

I have written stories and strategies.
I have built products and teams.

I have hired, mentored and promoted people.
I have navigated and accelerated transformation.
Pushed for and nurtured culture change.

I have wrangled data and code.
For insights and data visualisations.
Even a series of games.

And a ton of other things that got me excited.

If there’s one thing that runs through it all,
it’s my love for connecting dots and trying new things.

🤝
Neue Zürcher Zeitung, The Guardian, Quartz, Republik, Refind, Livingdocs, Radio Free Europe, Der Spiegel, Das Magazin, Tages-Anzeiger, SonntagsZeitung, TagesWoche, Schweizerische Depeschenagentur, Echtzeit Verlag, MAZ Journalistenschule, TEDxZurich, Bluewin, and some more.

You Don't Know Africa
Challenge Accepted by Republik
Why newsrooms need storytelling tools and what we’ve learnt building them
Klimalabor at Republik
78s – bessere Musik
A story of drinkers, genocide and unborn girls
You Still Don't Know Africa
Wenn Männer über Männer reden, reden Männer Männern nach
How to Be(come) a Happy Newsletter Writer
You Don't Know African Flags
The simple tool we use to decide what stories to work on at NZZ Visuals
Bookshelf
Kurzbefehl - Der Kompass für das digitale Leben
To compete with the web’s giants, news organisations need to become better at sending people away
Vaxillology
How I Learnt to Code in One Year
You deserve a smarter reading list — we are building it
Zum Pi-Tag: Von 3,14159 bis zum derzeitigen Ende von Pi
Milliarden aus der Fremde
Dystopia Tracker
Midterms Results Overview
Euro-Orakel
Dichtestressomat
Wie gut können Sie die Schweiz aus dem Gedächtnis zeichnen?
Never miss any of the most important links, even in a busy week
The End of Journalism in the Digital Age
Vertrauensserie
Lionel Messi
60 Stunden Facebook
Work at the Guardian Data Blog