Mein erstes Mal programmieren: Wie ich mir nebenbei selbst Python beibrachte
Zum Jahresbeginn startete ich mit einem Python-Anfängerkurs beim Onlinedienst Codecademy. Es war abgesehen von passiven Grundkenntnissen in HTML das erste Mal, dass ich mich an einer Programmiersprache versuchte. In meinem ersten Erfahrungsbericht nach einem Monat klang ich optimistisch bis begeistert. Ich war beeindruckt davon, wie es Codecademy gelang, mich mit regelmäßigen kleinen Erfolgserlebnissen bei Laune zu halten. Ob ich aber durchhalten würde, war zu diesem Zeitpunkt aber völlig unklar.
Nun, elf Monate später, ist es Zeit für ein erneutes Fazit. Das Wichtigste zuerst: Ich bin noch immer aktiv und weiterhin überraschend begeistert bei der Sache. Schrittweise ein tieferes Verständnis für die Funktionsweisen und Prinzipien des Fundaments zu erhalten, auf dem die Digitalisierung fußt, ist ein unheimlich zufriedenstellendes Gefühl.
Codecademy ist der ideale Einstieg, aber…
Rückblickend konstatiere ich, dass der Codecademy-Anfängerkurs in Python der ideale Einstieg war. Der einzige Nachteil: Es gibt nur diesen einen. Ist man mit ihm fertig, muss man sich eine andere Option zum Weiterlernen suchen. Ich hatte den Kurs Mitte Mai abgeschlossen. Kurz darauf probierte ich es noch testweise mit einem kostenpflichtigen Codecademy-Pro-Konto (für 19,90 US-Dollar pro Monat), um einige angebotene Zusatzaufgaben zu erledigen. So richtig ergiebig war dies aber nicht, weshalb es bei diesem einen Monat blieb.
Mein Wunsch wäre, dass Codecademy einen Fortsetzungs-Kurs anböte. Dafür hätte ich gerne bezahlt. Aber Fehlanzeige. Jüngst kündigte der Dienst an, dass der bisherige Python-Kurs im ersten Quartal 2017 durch eine völlig neue, überarbeitete Variante ersetzt werden soll. Ich bin gespannt.
Learn Python the Hard Way
Nach Codecademy versuchte ich mich als nächstes am bekannten Buch „Learn Python the Hard Way“, das auch in einer kostenlosen Online-Version angeboten wird. Der Autor Zed A. Shaw liefert gut erklärte Python-Aufgaben mit von Kapitel zu Kapitel zunehmendem Anspruchslevel. Um diese auszuführen, musste ich erstmals mit einem Code-Editor (TextWrangler) sowie einem Kommandozeileninterpreter (Terminal auf Mac OS) arbeiten. Bei Codecademy läuft alles virtuell direkt im Browser. Das war bequem, aber der Wechsel zu „Profi“-Tools fühlte sich richtig an.
Learn Python the Hard Way richtet sich ebenfalls an Anfänger. Mein bei Codecademy erlerntes Wissen half mir aber sehr, schnell voranzukommen. Gleichzeitig lernte ich viel Neues. In den letzten Kapiteln allerdings wuchsen mir die Aufgaben über den Kopf, weshalb ich schließlich die Motivation verlor, mit dem Buch und den finalen Projekten bis zum Ende weiterzumachen. Mir war klar: Gerade, weil ich maximal zwei Stunden pro Woche in das Lernen von Python investieren möchte, aufgeteilt in drei oder vier kurze Sessions, darf die erforderliche Lernkurve nicht zu steil sein.
Google hilft
Nun stand ich wieder vor der Frage: Wie weiter?! Ich schaute mir kurz die Python-Kurse bei Coursera und Treehouse an. Bei beiden stehen Videolektionen im Vordergrund. Viele bevorzugen diesen Ansatz, ich lese lieber und bestimme die Geschwindigkeit der Informationsaufnahme selbst. Auch sagten mir die starke Fragmentierung der Kursangebote sowie (bei Coursera) das vorgegebene zeitliche Korsett nicht zu.
Schließlich fand ich doch die ultimative Fortsetzung meiner noch sehr jungen Python-„Karriere“: Google bietet einen eigenen Python-Kurs an, der sich an Personen mit „ein wenig Programmiererfahrung” richtet. In einigen sehr kompakten Kapiteln werden die wichtigsten Komponenten der Sprache nochmals zusammengefasst. Zu jedem Bereich stellt Google lokal auf dem Rechner auszuführende Übungen bereit. Das Anforderungslevel entsprach genau meinem Kenntnisstand. Der Google-Kurs half mir, das Gelernte aufzufrischen — und präsentierte die ein oder andere knifflige Aufgabe, die zwar einige Onlinerecherche erforderte, aber letztlich jeweils gelöst werden konnte.
Mit Googles Übungen bin ich noch nicht ganz durch. Trotzdem habe ich jetzt damit begonnen, meine eigene Aufgabe zu gestalten — indem ich eine Art sehr simplen Chatbot schreibe, den ich sukzessive um Fähigkeiten erweitere. Dabei tauchen natürlich ständig Fragen auf. Häufig muss ich Codeschnipsel suchen, doch fast immer gibt es bei der Programmierer-Community Stackoverflow eine Antwort. In der Regel genügt eine wörtliche englischsprachige Google-Suche (wie „how to raw_input only integer python“). Der Moment, in dem Terminal beim Ausführen einer Python-Datei genau das macht, was man sich erhofft hat, ist immer wieder großartig.
Fazit und Ausblick
Aus meiner aktuellen Sicht empfehle ich an Python Interessierten den Lernpfad Codecademy (wobei man vielleicht auf die neue Version warten sollte), Learn Python the Hard way und dann Google Python Course. Ist man bereit, drei- bis viermal pro Woche 30 Minuten zu investieren, kann man innerhalb von weniger als zwölf Monaten an einen Punkt gelangen, an dem einem Programmieren nicht mehr wie Magie erscheint, und an dem man rudimentäre Alltagsprobleme lösende, über die Kommandozeile ausführbare Programme selbst schreiben kann.
Als konkretes, ernsthaftes Projekt schwebt mir mittlerweile die Schaffung eines Online-Bots vor, der sich beispielsweise für das Verbreiten von Links nutzen ließe. Allerdings kann ich aktuell nicht einschätzen, wie weit der Weg dorthin noch ist, zumal ich vorläufig mit dem bisherigen Zeitinvestment weitermachen möchte. Ich sehe Python für mich als Langzeit-Lernprojekt mit geringer Intensität. Man muss wohl der Typ für solch einen Ansatz sein. Mir liegt er. Aber natürlich könnte man den von mir beschriebenen Weg auch als Intensivvariante mit mehreren Stunden pro Tag in Angriff nehmen. Dann wäre man wohl nach wenigen Wochen da, wo ich nach elf Monaten stehe.
Weitere Kolumnen der Serie Weigerts World findet ihr hier. Ihr könnt dem Autor auf Twitter folgen, seine kuratierten News zur Netzwirtschaft abonnieren oder seinen wöchentlichen E-Mail-Newsletter mit Leseempfehlungen beziehen.
Man kann ja auch sein Leben anreichern und sich kleine Tools für wiederkehrende Alltags-Aufgaben programmieren.
– CSV-Kontoauszüge scannen und Extract für den Steuerberater.
– Duplikate finden
– Regelmäßig Backups von Dokumenten.
– google-Suchanfragen in RSS-Feed umwandeln (bietet Google aber vielleicht für Google-Alerts selber an)
– Daten holen/auswerten/… in sqlite (oder mysql) reinschieben. Die Datenauswertung ist dann aber oft wohl eher SQL-Kenntnisse oder Fähigkeiten der SQL-Engine und ob und wie gut die Daten auswertbar sind. PDF-Rechnungen tun sich da beispielsweise oft eher schwer…
Dann ist man „hungrig“ und denkt im Hintergrund über Realisierungs-Wege nach.
…
Grundproblem: Man programmiert gegen APIs und nutzt Infrastrukturen – interagiert also mit anderen Systemen oder Unix-Kommandozeilen-Befehlen. Um um Data-Scraping zu verhindern, ist aus UDDI und XML leider nicht viel geworden. Sonst könnte man automatisch alle Bilanzen runter-sucken und automatisch durchchecken lassen.
Wenn man sich die Daten anschaut soll man sich die Werbung anschauen. Und Verlinkungen werden vielleicht bald verboten oder kostenpflichtig…
Viele Aspekte braucht man auch nicht unbedingt oder setzt sie erst später ein.
Das erinnert an die aktuelle Programmier-Algorithmen-Forderung in der Zeitung: Alle sollten erstmal wissen was eine SQL-Datenbank macht und wie man in Excel seine Wohngeld-Abrechnung macht und wie man per Recording und Abwandlung sein System „scripten“ kann. Dann if-this-than-that usw. HTML und Javascript weil das schnellen Erfolg liefert.
Die meisten Lehrer sind völlig überqualifiziert weil Theorie der Berechenbarkeit und Turing-Äquivalenz-Beweise fürs wahre Leben eher unnötig sind aber komischerweise keiner hier das weiss. Chomsky-Hierarchien und simple Daten-Vorhaltung (CSV,…) hingegen sollte jedem ins Blut übergehen so wie vor der Kurve bremsen und erst am Scheitelpunkt wieder Gas geben. Denn Daten und strukturierte Daten sind überall und wollen (endlich mal) nützlich weiter-verarbeitet werden…
Auch Megabyte, Gigabyte,… sollte und kann man Rentnern schnell verklickern und Hausfrauen und jedem. Der Durchsatz sollte eine innere Frage werden also wieso man die SD-Karte so langsam ausgelesen kriegt. Bei Formel-1 weiss man ja auch wie viel langsamer ein Auto fährt weil es mit bestimmten Reifen fahren muss. Auch Farbmodelle und 2D/3D-Aspekte der Computergrafik gehören dazu.
Viel Spaß wenn die WINTEL und BITKOM die Bildungs-Zilliarden bekommen…
Dez 2002: http://www.informationsdienst.ruhr/archiv/detail/archiv/2002/december/artikel/nrw-studenten-haben-mangelhafte-mathe-kenntnisse.html
Okt 2016: http://www.general-anzeiger-bonn.de/news/politik/nrw/Studenten-sind-zunehmend-studierunfähig-article3390759.html
Das nennt man induktives Prinzip. So kriegt das System dank Übervölkerung billige Arbeiter, Wähler und natürlich Soldaten… Und alles geht kaputt und muss ständig nachgekauft werden. Die Reichen freuen sich…
Hallo Martin,
sehr interessante Serie, danke!
Noch ein kleiner Hinweis: Im Fazit ist das Buch noch nicht richtig verlinkt.
Gern. Und danke, ist gefixt.
Hallo Martin,
sehr inspirierender Artikel. Als HTML / CSS – Profi und hauptberuflicher Designer scheue ich mich immer wieder vor den „richtigen“ Programmiersprachen. Auf der anderen Seite möchte ich unbedingt mehr von dem verstehen, was sich unter der Oberfläche abspielt, die ich gestalte. Deine mit uns geteilte Erfahrung ermutigt mich die Scheu zu überwinden und einfach mal anzufangen. Vielen Dank dafür.
LG
Marius
@Marius
Es kann passieren, dass die Inspiration für das Designen sich desto mehr verliert, je mehr man in die Tiefe des Programmierens einsteigt. Scheints harmoniert das nicht gut miteinander.
Es würde sicher reichen, wenn man als Designer die Logik der Programme unter der Oberfläche versteht, ohne es gleich programmieren zu können. Das Zusammenspiel von Datenbank (z.B. MySQL), Serverprogramm (z.B. PHP) und Clientprogramm (Javascript) und wo hierbei HTML und CSS eingreift und umgekehrt.
Das hilft auch Programmierern enorm, wenn Designer etwas von dem verstehen, was dahinter passiert, denn nicht selten bekommt man Design-Layouts geliefert, die technisch so gar nicht umsetzbar sind oder nur mit teurem Aufwand gelöst werden können oder sogar umständlich hingebastelt werden müssen.
den Ansatz finde ich auch immer wieder interessant…gibt es sowas? Also eine Erklärung der Logiken von Programmiersprachen und generell Webtechnologien und wofür diese jeweils verwendet werden (können)? Das wäre
Der Screenshot passt nicht so recht zum Artikel?
Ja stimmt. Bildwahl mache nicht ich, aber ich hab gerade einen Screenshot meines Codes übermittelt, sollte asap ausgetauscht werden.
Für unterwegs (Smartphone) gefallen mir die (kostenlosen) Apps von SoloLearn (sololearn.com) ganz gut, die auch offline funktionieren. Für Python und viele gängige Sprachen. Wohl eher was zum Auffrischen.
Was mir gerade noch empfohlen wurde bezüglich praktischer Use Cases: https://automatetheboringstuff.com/
Das fand ich seinerzeit lehrreich und eindrucksvoll:
http://www.dabeaz.com/pydata/