Warum fragen anfängliche Programmierer (wie ich) immer nach der nächsten Sprache, die sie lernen sollten, anstatt nach dem nächsten Projekt, das sie angehen wollen?
Warum hat Eric Raymond im Abschnitt " Learn How To Program " seines Aufsatzes " How To Become A Hacker " über die Reihenfolge gesprochen, in der Sie Sprachen lernen sollten (im Vergleich zu der Reihenfolge, in der Sie Projekte angehen sollten)?
Fragen anfängliche Tischler: "Ich weiß, wie man einen Hammer benutzt ... sollte ich als nächstes lernen, wie man eine Säge oder eine Wasserwaage benutzt?"
Ich frage, weil ich finde, dass fast jedes bedeutungsvolle Projekt, an dem ich interessiert bin (z. B. eine Web-App, eine Reihe von Poker-Analyse-Tools), erfordert, dass ich gerade genug von einer Vielzahl von Sprachen (Python, C, HTML, CSS ) lerne , Javascript, SQL) und Frameworks / Bibliotheken (wxPython, tkinter, Django), um sie zu implementieren.
Vielen Dank,
Mike
quelle
Antworten:
Ich denke, dass die meisten Menschen, die eine Sprache lernen möchten, dies tun, weil sie ein Projekt in Angriff nehmen möchten, das entweder jetzt oder in Zukunft in dieser Sprache geschrieben wurde. Dazu müssen sie die Sprache lernen, was Zeit kostet. Programmiersprachen sind wie Werkzeuge, aber während Sie in etwa sechzig Sekunden den Umgang mit einem Hammer erlernen können, dauert der Umgang mit Sprachen etwas länger. Daher konzentrieren sich viele Leute auf das Erlernen einer Sprache, bevor sie sich auf ein Projekt konzentrieren, das in dieser Sprache geschrieben ist.
In einem anderen Punkt denke ich, wenn die meisten Leute fragen, welche Sprache sie als nächstes lernen sollen, denken sie wirklich darüber nach, welches Projekt sie als nächstes lernen sollen, aber sie konzentrieren sich darauf, zuerst die Sprache zu lernen.
Schließlich kann das Erlernen von Sprachen Spaß machen , auch wenn Sie kein bestimmtes Projekt oder Ziel vor Augen haben.
quelle
Das Motiv vieler Vollzeitentwickler ist es, beschäftigungsfähiger zu sein.
Beschäftigungsfähiger zu sein bedeutet normalerweise, die Hürde des HR-Screeners zu überwinden (und später die Hürde des eigentlichen Interviews zu überwinden).
Der typische HR-Screener verfügt normalerweise über eine Checkliste mit Sprachen, die mit einem Lebenslauf abgeglichen werden können, kann jedoch keine Fähigkeiten oder Projekte bewerten.
Der Erfolg eines tatsächlichen Interviews hängt in der Regel mehr von Glück und minimalen Sprachkenntnissen ab als von Erfahrung und einem tiefen Sprachverständnis.
Daher ist es für die Beschäftigungsfähigkeit besser, in vielen Sprachen mittelmäßig zu sein, als in einigen wenigen ein Experte zu sein, es sei denn, man bewirbt sich um Führungspositionen.
quelle
Die analoge Programmiermöglichkeit für den Schreiner wäre "Welche Anwendung soll ich als nächstes bauen?". oder "Welches System soll ich als nächstes bauen?" die eher gültig und getrennt von einem Projekt sind, das eigentlich fast universell einsetzbar ist. Ich könnte ein Projekt haben, um meine Ernährung zu ändern oder 20 Pfund zu verlieren, genauso wie ich etwas haben könnte, für das eine neue Software geschrieben werden muss, um die Dinge zusammenzubinden.
Um die Frage zu beantworten, würde ich glauben, dass eine Sprache ein Werkzeug in der Toolbox dieser Person darstellt, das in einem Lebenslauf nützlich sein kann. Einige Leute werden vielleicht Programmierer, um die Rechnungen zu bezahlen, und wenn ja, fragen sie sich vielleicht, welches Tool sie als nächstes hinzufügen sollen, welches häufig eine Sprache ist, aber es gibt andere Möglichkeiten, wie das Erlernen von Bereitstellungs-, Versionskontroll-, Test- und Entwicklungsmethoden Nennen Sie einige andere Bereiche. Wenn ein Schreiner offen legen müsste, welche Werkzeuge er besitzt, hätte er möglicherweise eine ähnliche Perspektive, wie ich argumentiere. Es gibt jedoch einen allgemeinen Satz von Werkzeugen, von denen die meisten Zimmerleute annehmen, dass sie entweder Zugang haben oder haben, wenn sie recht schnell dazu aufgefordert werden. Haben Sie jemals gesehen, wie viele verschiedene Arten von Sägen und Hämmern es gibt, die von Menschen verwendet werden können?
quelle
Vielleicht geht es zum Teil um Hacker-Mentalität, zumindest für einige der Programmierer. Hacker ist in der Jargon-Datei definiert als
Für eine Hacker-Seele geht es also mehr darum, den Prozess, die Konzepte, Werkzeuge und ja die Sprachen, in denen etwas erstellt wird, zu lernen und daran zu "basteln", als das Endprodukt selbst. Mehr über den Prozess.
Es ist ein ständiges Streben nach neuen Dingen und / oder Herausforderungen. Das abgeschlossene Projekt verliert diesen Reiz schnell. Manchmal (meistens?) Werden die größten kreativen oder technischen Herausforderungen vor Abschluss des Projekts gemeistert. Viele Projekte werden abgebrochen, wenn ein Geist, der nach neuen mentalen Herausforderungen hungert, voranschreitet.
Insbesondere Hacker interessieren sich für neue Sichtweisen, Konzepte, Abstraktionen und Denkweisen, für eine Art mentales Hacken:
quelle
Heutzutage gibt es eine Vielzahl von beschissenen Sprachen: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic usw. Programmierer gleichen die Schwäche dieser Sprachen aus, indem sie viele davon lernen und mischen zusammen.
Es gibt eine kleine Community, bekannt als die Lisp-Community, die frei von dem Wahnsinn ist, der das moderne Computing durchdringt.
Da Lisp eine programmierbare Programmiersprache ist, können Sie alle Ihre Ideen darin ausdrücken, ohne jemals in andere Sprachen oder andere Datenformate wie XML wechseln zu müssen. Lisp kann überall angewendet werden, sogar auf Hardwareebene, wie wir es bei den Lisp-Maschinen gesehen haben .
quelle
Weil das Erlernen einer neuen Programmiersprache eine enorme Investition ist und niemand gerne eine schlechte Investition tätigt.
Beim Erlernen einer neuen Programmiersprache geht es nicht darum, sich zu merken, wie man Schleifenkonstrukte schreibt, Klassen deklariert, ein anderes Modul importiert ...
Sie müssen wissen, wie man einen idiomatischen Code in dieser Sprache schreibt , und dieser Vorgang erfordert wirklich viel Zeit und Hingabe .
Zeit ist eine begrenzte Ressource, Anstrengung ist eine begrenzte Ressource, aber Ablenkung, Alltagsstress, Rechnungen und Sonntags-Sportspiele sind immer da und müssen mit ihnen leben.
Programmierer wollen mit Bedacht investieren.
quelle