Warum ist es immer "welche Sprache soll ich als nächstes lernen" anstatt "welches Projekt soll ich als nächstes angehen"? [geschlossen]

14

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

MikeRand
quelle
5
Das scheint ein bisschen ... Garantie zu sein, um ehrlich zu sein. Vielleicht könnten Sie die Andeutungen entfernen und nur Ihre Frage hinterlassen?
Anon.
4
Ich glaube, Sie stimmen chronologisch nicht überein. Vermutlich weiß der Schreiner bereits, wie man diese Werkzeuge benutzt, wenn er weiß, wie man eine Tür einrahmt. Aber früher in seinem Leben folgte auch er dem Weg, welches Werkzeug ich als nächstes untersuchen sollte.
CrazyPenguin
Ein fairer Kommentar zu: ranty ... war unterhaltsam. Entschuldigung, wenn es als Garantie kam.
MikeRand
4
Der Vergleich von Programmiersprache zu Handwerkzeug ist kein sehr guter Vergleich. Es scheint oberflächlich sinnvoll zu sein, zerfällt jedoch schnell und ist eher schädlich als hilfreich. Auch viel zu viele Leute behandeln es als ob es eine unbestrittene Wahrheit wäre. Dieser Typ macht einen anständigen Job und nennt einige Gründe, warum es nicht funktioniert. journal.dedasys.com/2007/12/12/…
Nick Knowlson
Ich mag diese Frage ...!
Michael K

Antworten:

6

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.

mipadi
quelle
6
  • 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.

Uri
quelle
Um den HR-Bildschirm zu verlassen, müssen Sie leider die Liste der Schlagworte des Tages bereitstellen. Das HR-Screening ist eher ein Kursfilter, der viele qualifizierte Kandidaten hinter sich lässt.
Jeff
1
@ Jeff, nach dem, was ich von HR-Screening gehört habe, ist alles, was sie wollen, die Anzahl der Lebensläufe auf ein überschaubares Maß zu reduzieren und sie wenden viele beliebige Filter an, wie "bin, wenn mehr als 2 Seiten".
Dominique McDonnell
2

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?

JB King
quelle
1

Vielleicht geht es zum Teil um Hacker-Mentalität, zumindest für einige der Programmierer. Hacker ist in der Jargon-Datei definiert als

"Eine Person, die Spaß daran hat, die Details programmierbarer Systeme zu erforschen und ihre Fähigkeiten zu erweitern, im Gegensatz zu den meisten Benutzern, die es vorziehen, nur das erforderliche Minimum zu lernen."

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:

"Eine Sprache, die die Art und Weise, wie Sie über Programmierung denken, nicht beeinflusst, ist es nicht wert, sie zu kennen." - Alan Perlis

Maglob
quelle
0

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 .

jhuni
quelle
Sie müssen so viele verschiedene Sprachen wie möglich beherrschen, um effizient in Lisp programmieren zu können. Andernfalls müssen Sie das Rad neu erfinden, anstatt einfach die entsprechenden Konzepte und Ideen aus den anderen Sprachen zu stehlen und sie über Lisp zu implementieren.
SK-logic
Stimmen Sie Ihrer Meinung über die Macht von Lisp zu, aber stimmen Sie nicht zu, dass es nicht hilfreich ist, andere Sprachen zu lernen: Die meisten Tricks, die ich in Lisp verwende, nutzen aktiv das, was ich aus anderen Sprachen gelernt habe (ob als Muster oder Anti-Muster ...)
mikera
0

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.

Chiron
quelle