Selbstlernender Programmierer werden: Cory Althoff Interview
Vorwort
Cory Althoff ist Autor, Redner und Startup-Berater. Book Authority nannte sein Buch „The Self-Taught Programmer“ eines der größten Software-Bücher aller Zeiten. Er stützte sich dabei auf seine Erfahrungen aus seiner Arbeit als Software-Entwickler bei eBay und mehreren Startups im Silicon Valley, studierte allerdings am College Politikwissenschaften als Hauptfach.
Sein Buch zeigt, wie man mit Hilfe eines nicht-traditionellen Ansatzes zum autodidaktischen Python-Entwickler wird: Zuerst Programmieren lernen, dann die Theorie verstehen. Es ist ein Leitfaden, der den Leser vom Schreiben des ersten Python-Programms bis zum Bestehen des ersten Vorstellungsgesprächs führt.
Heutzutage werden immer mehr Menschen zum Autodidakten. In der Annahme, dass dieser Trend Bestand haben wird, haben wir uns entschieden, mit Cory über die größten Herausforderungen für anfängliche Entwickler zu sprechen. Er hat uns verraten, ob es für einen Programmier-Anfänger sinnvoll ist, sowohl Front-End- als auch Back-End-Entwicklung zu lernen und zu üben, und welche Art von Projekten neue Python-Entwickler am Anfang ihrer Karriere erwarten können.
Evrone: Hey Cory, es ist uns eine Freude, heute mit Ihnen zu sprechen! Beginnen wir mit unserem Interview. Glauben Sie, dass eine „natürliche Affinität“ zur Software-Entwicklung, wie zum Musizieren oder Zeichnen, tatsächlich existiert?
Cory: Ich bin sicher, dass einige Leute ein natürliches Talent für das Programmieren haben. Das bedeutet jedoch nicht, dass die Mehrheit der Leute nicht programmieren kann.
Ich empfehle die Lektüre „The Talent Code“ von Daniel Coyle, wenn man besorgt ist, dass man von Natur aus nicht begabt genug ist, um zu programmieren. Er erklärt sehr gut, warum natürliches Talent überbewertet wird und warum der Schlüssel zum Erfolg bei jeder Fähigkeit weniger in Talent als vielmehr in bewusster Praxis liegt.
Evrone: Moderne IDEs und Coding-Editoren wie VSCode neigen dazu, Git mit einer ausgefallenen grafischen Oberfläche zu integrieren. Denken Sie, dass es für neue Entwickler besser ist, Git-Befehlszeilen zu lernen und zu benutzen oder sich auf die IDE-Integrationen zu verlassen?
Cory: In meinem Buch und Kurs bringe ich meinen Schülern bei, wie man Git von der Befehlszeile aus verwendet. IDE-Integrationen sind nett, aber man sollte ein grundlegendes Verständnis dafür haben, was unter der GUI geschieht.
Evrone: Was ist im Speziellen für neue Entwickler am schwierigsten zu erlernen?
Cory: Das Erste, was den meisten Anfängern Probleme bereitet, sind Funktionen. Das am schwersten zu erlernende Konzept für neue Programmierer ist jedoch meistens die objektorientierte Programmierung. Das Konzept, „self“ als Parameter in Python zu übergeben, kann besonders verwirrend sein.
Evrone: Müssen Software-Entwickler weltweit im Jahr 2020 in der Lage sein, gut Englisch zu lesen und zu schreiben? Ist es eine Notwendigkeit für unseren Beruf oder eher optional?
Cory: Es ist hilfreich, aber nicht obligatorisch. Es ist nützlich, weil sehr viele Dokumentationen auf Englisch sind. Ich hatte letztes Jahr die Gelegenheit, auf der PyCon JP in Tokio zu sprechen. Die Python-Szene dort ist riesig, aber in Japan sprechen nur sehr wenige Menschen Englisch. Man kann als Programmierer absolut erfolgreich sein, ohne Englisch sprechen zu können.
Evrone: Ihr Buch „Self-Taught Programmer“ hat eine solide Grundlage für jeden geschaffen, der Programmieren lernen möchte. Was machen Sie aktuell mit all dieser Popularität und der Facebook-Gruppe mit 50.000 Usern?
Cory: Im Moment schreibe ich ein neues Buch mit dem Titel „The Self-Taught Computer Scientist“. Es ist eine Fortsetzung meines zweiten Buches. In meinem ersten Buch unterrichte ich etwas Informatik, aber in diesem neuen tauche ich tiefer ein und erkläre einige der Konzepte, die autodidaktischen Programmierern während ihrer gesamten Laufbahn helfen werden.
Ich habe auch ein neues Projekt namens Coding List. Auf dieser Website gibt es über zwanzigtausend Programmierkurse, die nach Preis, Rezensionen, Thema und mehr gefiltert werden können. Sobald man den richtigen Kurs gefunden hat, kann man über die Plattform andere Menschen kennenlernen, die ebenfalls Programmierkurse belegen.
Evrone: Hilft Ihnen das Betreiben einer so großen Community auf Facebook dabei, neue und bessere Möglichkeiten zu entdecken, Anfänger zu unterrichten?
Cory: Auf jeden Fall. Es hilft zu sehen, welche Fragen immer wieder auftauchen. Dies ist einer der Gründe, warum ich Coding List erstellt habe. So viele Mitglieder fragen, was der beste Kurs für verschiedene Programmier-Themen sei. Das war nicht sehr effizient, weil wir immer wieder die gleichen Fragen beantworten mussten. Deshalb habe ich beschlossen, eine Website zu erstellen, die dabei hilft, den besten Kurs für jedes Programmier-Thema zu finden. Ich habe eine Reihe von Erkenntnissen dieser Art gewonnen, die mir geholfen haben, auch den Lehrplan für meinen Kurs zu verbessern.
Evrone: Es ist eine weit verbreitete Meinung, dass Python die beste Allzweck-Programmiersprache ist, die wir neuen Entwicklern zuerst beibringen sollten. Aber welche Sprache würden Sie als die zweitbeste für diesen Job bezeichnen? Gibt es außer Python noch andere Sprachen, die Sie gerne nutzen?
Cory: Wenn ich nicht Python unterrichten würde, dann entweder JavaScript oder Swift, je nachdem, für welchen Bereich sich der Schüler interessiert. Sie sind beide leicht zu erlernen und sehr gefragt.
Evrone: Würden Sie einem neuen Entwickler empfehlen, mit einem einfachen, aber erweiterbaren Editor wie VSCode zu beginnen oder mit einer voll funktionsfähigen IDE wie PyCharm einzusteigen?
Cory: In meinem Buch und Kurs starten wir mit IDLE. Viele Schüler haben Probleme damit, IDLE zu verstehen, obwohl es weniger kompliziert ist als VSCode oder PyCharm.
Ich möchte den Lesern die Möglichkeit geben, zuerst etwas Einfacheres kennenzulernen. Im späteren Verlauf stelle ich dann PyCharm vor, meine Lieblings-IDE. PyCharm hat so viele nützliche Funktionen, die das Programmieren bequemer machen, aber diese sind am Anfang nicht so wichtig.
Evrone: Yukihiro Matsumoto hat in der Vergangenheit erwähnt: „Indem man sich für eine Sprache entscheidet, entscheidet man sich auch für die Projekte, an denen man täglich arbeitet, und auch wie man daran arbeitet“. Welche Art von Projekten können neue Python-Entwickler zu Beginn ihrer Python-Karriere erwarten?
Cory: Einer der Gründe, warum ich Python für neue Programmierer so sehr empfehle, ist, dass die Sprache so vielseitig ist. Wenn man JavaScript lernt, profitiert man davon nur in der Webentwicklung. Für Data Sciene wird man die Sprache nicht gebrauchen können.
Mit Python kann man in viele Bereiche vordringen: Back-End-Web- und App-Entwicklung, Spieleentwicklung und Data Science. Da Python in so vielen verschiedenen Bereichen eingesetzt wird, könnte es sein, dass man als Python-Programmierer zu Beginn seiner Karriere eines dieser Sachen programmiert, was ziemlich aufregend sein kann. Man wird jedoch wahrscheinlich nicht am Front-End einer Website oder App arbeiten.
Evrone: Ist es vorteilhaft für neue Entwickler, anfangs die neuen Python-„async“-Bibliotheken zu erlernen, oder erfordert diese Funktionalität etwas mehr Praxiserfahrung? Ist es besser, sich erst nach ein paar Jahren mit asyncio und aiohttp zu beschäftigen?
Cory: Ich denke nicht, dass es gut ist, sich am Anfang darauf zu konzentrieren. Besser, man lernt erst später, diese Bibliotheken einzusetzen, sobald man die Grundlagen der Programmierung verstanden hat.
Evrone: Typ-Hinweise und der „graduelle Typisierungs“-Ansatz wurden vor Kurzem in Python eingeführt und sind bei erfahrenen Entwicklern und Bibliotheksautoren bereits sehr beliebt. Aber wie ist es mit neuen Entwicklern? Sollten sie von Anfang an Typen lernen oder ein paar Jahre Praxiserfahrung sammeln, bevor sie mit Hilfe von Typen künftige Fehler behandeln?
Cory: Das Verstehen von Datentypen war ein großer Aha-Moment für mich. Für Anfänger ist es wichtig, das Konzept von Datentypen zu verstehen und mit den verschiedenen Typen in ihrer Programmiersprache vertraut zu sein. Als neuer Entwickler würde ich mir jedoch eine Weile keine Gedanken über Type Hinting machen. Es ist ein cooles Feature, aber für Neulinge nicht hilfreich.
Evrone: Was halten Sie vom Hype um „Full-Stack-Entwickler“? Ist es für einen neuen Entwickler sinnvoll, sowohl die Frontend- als auch die Backend-Entwicklung zu erlernen und zu praktizieren?
Cory: I wouldn’t recommend it. Learning the front-end and back-end was one of the biggest mistakes I made in my journey from a beginner to a software developer.
Ich würde es nicht empfehlen. Das Erlernen des Front-Ends und Back-Ends war einer der größten Fehler, die ich auf meinem Weg vom Anfänger zum Software-Entwickler gemacht habe.
Wenn ich es noch einmal machen würde, würde ich mich entweder auf das Front-End oder das Back-End konzentrieren. Das Problem beim Lernen beider war, dass ich immer das Gefühl hatte, nicht gut genug zu sein.
Es gibt so viel, das man wissen muss, um ein großartiger Front- oder Back-End-Entwickler zu sein, dass es keinen Sinn macht, beides gleichzeitig lernen zu wollen. Es ist vorteilhafter, in einem der beiden Gebiete gut zu werden. Außerdem macht man zwei Jobs, wird aber nur für einen bezahlt!
Evrone: Wenn Entwickler abseits von ihrer Arbeit Neues lernen, kann das oft zu einem Burnout führen. Was würden Sie neuen Entwicklern als gute Work-Life-Balance-Routine empfehlen, damit das Programmieren nicht buchstäblich ihr ganzes Leben konsumiert?
Cory: Sport treiben! Ich habe vor ein paar Jahren wieder angefangen, Basketball zu spielen, und das hat Wunder für meine Work-Life-Balance bewirkt. Als Programmierer sitzen wir den ganzen Tag vor einem Bildschirm, daher sind Hobbies abseits vom Bildschirm, wie z. B. Basketball oder eine andere Sportart, sehr effektiv, um Burnouts vorzubeugen. Ich habe in der Vergangenheit auch Ultimate Frisbee gespielt. Das hat auch sehr viel Spaß macht, und ich probiere mich auch im Golfen, obwohl ich das als enorm schwierig empfinde!
In einer der Podcast-Episoden von Tim Ferriss erzählte er, dass er gerne ein berufliches und ein persönliches Ziel verfolgt, zum Beispiel die Verdoppelung des Umsatzes für sein Unternehmen und das Kreuzheben von 300 Pfund. Auf diese Weise hat er, wenn eines davon nicht klappt, immer noch das andere Ziel. Das ist in ein sehr guter Tipp, den ich auch versuche umzusetzen.
Evrone: Die Software-Entwicklung ist eine Branche, die die Welt im Sturm erobert hat. Enorm viele professionelle Entwickler sind Autodidakten. Wie sieht Ihrer Meinung nach eine gute Ausbildung für einen Softwareentwickler aus? Brauchen wir eine „Wissenschaft“ wie die Informatik zusammen mit Mathematik sowie Algorithmen- und Datenstrukturen, oder benötgen wir etwas Anderes?
Cory: Das Problem, das ich mit Informatiklehrplänen an vielen Universitäten habe, ist die Reihenfolge, in der sie Fächer unterrichten. Es ist hilfreich, Informatik, Mathematik, Algorithmen und Datenstrukturen zu studieren, wenn man eine erfolgreiche Karriere als Softwareentwickler anstrebt. Es ist jedoch nicht sinnvoll, diese Dinge zuerst zu unterrichten.
Die Studenten sollten zuerst das Programmieren lernen und erleben, wie viel Spaß es machen kann, und sich später im Studium um all die anderen Dinge kümmern. In einigen Branchen wie der Webentwicklung braucht man keine Mathematik, um erfolgreich zu sein. Mathe zur Voraussetzung für den ersten Programmierkurs zu machen, wie es viele Universitäten tun, macht keinen Sinn. Es hält Menschen, die Angst vor Mathematik haben, davon ab, das Programmieren zu lernen.
Außerdem gibt es so viele kostenlose und kostengünstige Ressourcen da draußen, dass es immer weniger Sinn macht, so viel Zeit und Geld in ein Studium zu investieren. Man kann sich alles selbst beibringen, ohne sich ein Studium finanzieren zu müssen.
Corys erstes Buch wurde in acht Sprachen übersetzt und in Publikationen wie Forbes veröffentlicht. Jetzt schreibt Cory sein zweites Buch und hilft den Mitgliedern seiner Facebook-Gruppe „Self-Taught Programmers“, das Programmieren zu lernen und die Coding List-Community aufzubauen. Wir freuen uns, dass sich so viele Menschen auf der ganzen Welt dafür entscheiden, Python zu lernen und ihre berufliche Laufbahn darauf auszurichten. Hier bei Evrone sind wir bestrebt, auf dem neuesten Stand der technischen Entwicklung zu bleiben und innovative neue Tools und Methoden einzusetzen. Wenn Sie eine Projektidee haben und an der Verwendung von Python interessiert sind, sind unsere Entwickler jederzeit gerne bereit, Ihre Möglichkeiten mit Ihnen zu besprechen. Ganz gleich, in welchem Stadium der Entwicklung Ihres Projekts Sie sich befinden, lassen Sie uns wissen, wie wir Sie kontaktieren können. Wir werden uns bald mit Ihnen in Verbindung setzen, um Ihr Projekt zu besprechen und zu erfahren, wie wir Ihnen helfen können.