Sollte sich ein neuer Programmierer auf eine einzelne Technologie konzentrieren, bis er diese beherrscht? [geschlossen]

10

Ok, ich habe einem Kumpel schon eine Weile beigebracht, wie man programmiert. Er lernt sehr schnell und kann bisher ziemlich gut programmieren. Er hat jedoch ein "Problem", das ich immer wieder zu beheben versuche.

Er springt ein und beginnt mit der Programmierung auf hoher Ebene, ohne einige der Grundlagen zu erlernen (er hat eine vollständige Webanwendung erstellt, kennt aber noch keine Paginierung oder Sitzungsverwaltung).

Dies ist jedoch nicht das Problem. Er springt immer wieder zu neuen Technologien (Node.js, MongoDB, EC2 usw.). Ich habe versucht, ihm zu sagen, dass er einige der Grundlagen seines RDMS der Wahl (MySQL) lernen soll, da er es jeden Tag verwendet, bevor er eine Menge Zeit in das Erlernen der Grundlagen von MongoDB investiert (und wahrscheinlich zu etwas Neuem übergeht).

Bin ich hier der Falsche oder sollte er versuchen, sich auf eine Sache zu konzentrieren und wirklich gut darin zu werden?

Brandon Wamboldt
quelle
6
Klingt nach einer guten Gelegenheit, zu verlangen, dass seine Webanwendung Sitzungen und Paginierung unterstützt. Würde das nicht dazu führen, dass er es lernt?
Auch welche einzelne Technologie sollte gelernt werden?
@ ThorbjørnRavnAndersen Nicht so sehr eine einzige Technologie, aber mit dem LAMP-Stack arbeitet er jeden Tag. Ich denke, er sollte zumindest alle grundlegenden / relevanten Details zu MySQL, Apache, PHP und JavaScript lernen.
Brandon Wamboldt
1
Dann haben Sie Ihre eigene Frage im Wesentlichen mit "Nein" beantwortet.
1
Lernt er nicht schon mehrere Technologien wie Web, Datenbank usw. gleichzeitig? Was sind die Grenzen dessen, was hier eine Technologie ausmacht?
JB King

Antworten:

18

Persönlich halte ich es für eine großartige Idee, beim Erlernen des Programmierens verschiedene Technologien und Sprachen auszuprobieren. Die Konzentration auf eine Technologie hat den offensichtlichen Vorteil, dass Sie sehr gut darin sind, aber den offensichtlichen Nachteil, nur eine einzige Technologie zu kennen.

Aber ich denke, der wichtigere subtilere Nachteil ist, dass Sprachen und Frameworks im Allgemeinen mit einer Ideologie einhergehen. Es gibt viele Programmierer (vielleicht die meisten Programmierer), die in allem, was sie programmieren, nur eine Ideologie anwenden. Dies liegt oft daran, dass sie ein Framework in einer Sprache wirklich gut gelernt haben und jetzt ohne diese Schutzbrille nichts mehr sehen können.

Besonders für jemanden, der gerade das Programmieren lernt, denke ich nicht, dass es ein Problem ist, zu versuchen, was da draußen ist, und zu warten, bis er sich auf etwas konzentriert, bis später. Schließlich wird es schwierig sein, etwas Wesentliches zu schreiben, ohne eine Technologie anständig gut zu kennen.

Kris Harper
quelle
2
+1 für den zweiten Absatz. Ich möchte hinzufügen, dass das Betrachten verschiedener Sprachen, Frameworks und APIs Ihnen viel darüber beibringen kann, WARUM die Designer eine bestimmte Sprache / Framework / API so implementiert haben, wie sie es getan haben. Dem Lernenden ein tieferes Verständnis von Programmierung und Software als Ganzes vermitteln. Zumindest imho
Jamie Taylor
+1 Es gibt Situationen, in denen Sie lernen, sich zu konzentrieren, z. B. wenn Sie einen "echten" Programmierjob haben. Aber wie bekommt man einen Job, wenn man nur einem Framework ausgesetzt war? Lernen Sie, etwas in mehr als einem Framework / einer Bibliothek zu schreiben, damit Sie Ihren Lebenslauf auffüllen und zeigen können, dass Sie nicht auf eine bestimmte Technologie voreingenommen sind. ;-) Du kannst später Dinge wie Paginierung und RMDBs lernen, sobald du den tatsächlichen Kontext dafür erlangt hast.
Spoike
@Spoike Er hat einen "echten" Programmierjob, daher versuche ich ihn dazu zu bringen, sich auf die Technologie zu konzentrieren, die er jeden Tag für diesen Job verwendet
Brandon Wamboldt
1
@RougeCoder: Geben Sie ihm die entsprechenden Aufgaben (Seite dieser gigantischen Liste, Filterelemente, Zeichnungsdiagramm mit gruppierten Beispielen usw.), damit er lernen kann, wie er die Konzepte ausführt, über die er Bescheid wissen soll. Wenn es keine solchen Aufgaben gibt, gibt es für ihn keinen Kontext, um dieses Wissen festzuhalten.
Spoike
1
Früher dachte ich, es sei BS oder zumindest eine Übertreibung, wenn Leute Dinge wie "Lernen funktionale Programmierung bringt dich dazu, anders zu denken" sagten. Es stellte sich heraus, dass die Auswirkungen auf Ihren Code nicht ausreichend waren. Mein Code ist bereits völlig anders und ich beherrsche meine funktionale Sprache noch nicht. Ich versuche auch nicht , die Art und Weise zu ändern, wie ich Code schreibe. Es ist wirklich ein Augenöffner.
Steven Evers
5

Auf beiden Seiten dieser Ausgabe gibt es gute Gründe. Es ist sicherlich wertvoll, " genug " über viele verschiedene Technologien zu wissen . Wissen Sie " ein wenig " über viele verschiedene Technologien? Nicht so viel.

Tiefes Wissen über bestimmte Technologien kann sicherlich wertvoll sein - WENN eine anhaltende Nachfrage nach ihnen besteht. Wissen Sie " alles, was Sie über eine bestimmte Technologie wissen müssen "? ... höchstwahrscheinlich übertrieben.

Es ist also alles im Gleichgewicht. Wenn er mit nosql wunderbare Apps erstellen sollte, warum sollte er dann den Unterschied zwischen der InnoDB-Engine und der MyISAM-Engine kennen müssen?

pbr
quelle
Der Unterschied zwischen InnoDB und MyISAM besteht im Wesentlichen in Transaktionen. Wenn er Transaktionen nicht versteht, welche Chance hat er dann, mit Konzepten wie "eventuelle Konsistenz" richtig zu arbeiten?
Michael Borgwardt
Pardon? Niemand sagte, er verstehe Transaktionen nicht, und was ich schrieb, bedeutete das überhaupt nicht.
pbr
3

Ich stimme teilweise zu. Er muss die zugrunde liegenden Prinzipien kennen - aber er muss sich nicht nur auf eine Sache setzen und wirklich gut darin werden. Niemand tut.

Sich mit einer Sache hinsetzen und richtig gut werden

Ich arbeite derzeit mit C # und Microsoft XNA zusammen, um ein Spiel zu erstellen. Ich lerne im Laufe der Zeit viel über XNA und obwohl ich bereits ziemlich kompetent mit C # bin, erweitert sich mein Wissen nach und nach (heute habe ich etwas über Einschränkungen bei Typparametern gelernt ).

Es ist jedoch nicht nötig, dass ich bei XNA oder C # "wirklich gut" werde. Wenn ich mein Projekt jetzt beenden und weitermachen und nie wieder eines davon verwenden würde, wäre ich vollkommen zufrieden und mein Lernen würde an anderer Stelle fortgesetzt.

Die Prinzipien sind jedoch wichtig

Zumindest verstehe ich die zugrunde liegenden Prinzipien. Wenn ich Dinge in C # und XNA erstelle, verstehe ich, was ich tue - und wenn ich es nicht tue, lerne ich davon.

Wenn ich Paginierung schreiben würde, würde ich verstehen, wie Paginierung funktioniert. Wenn Ihr Freund eine Paginierung erstellt hat und keine Ahnung hat, wie es funktioniert hat, ist das ein Problem. Wenn er keine Paginierung geschaffen hätte, gäbe es keinen Grund, den er wissen müsste.

Das Problem hier ist: Weiß er, was die @ $ #! Er macht es oder ist er ein Programmierer, der keine Ahnung hat, wie man programmiert?

Doppelgrün
quelle
Sie erheben gute Punkte. Das Problem ist, dass er mit einigen Sachen weiß, was er tut, aber mit anderen Sachen nicht (ich denke, er will es einfach nicht lernen, also kopiert er es weiter aus anderen Projekten). Zum Beispiel hat er Paginierung geschrieben, ich habe es Stück für Stück durchgesehen, aber er versteht es immer noch nicht. Ich weiß, dass er es verstehen konnte, weil es ein super einfaches Konzept ist und er viel komplexere Sachen gemacht hat.
Brandon Wamboldt
Ja, und das ist ein Problem. Wenn er Code schreibt, versteht er nicht, dass er auf halbem Weg zum Copy-Paste-Programmierer ist und ein Programmierer, der keine Ahnung hat, was er tut.
Doppelgreener
3

Ich vermute, er versucht es mit anderen Sprachen, weil er etwas hat, das er bauen möchte. Sie können jederzeit zu einer Sprache oder einem Framework zurückkehren und mehr erfahren.

Es gibt eine feine Linie zwischen dem Erlernen der Theorie / dem Aufbau einer Grundlage und dem Versuch, motiviert zu bleiben.

Zumindest ist er nicht in einer einzigen Sprache gefangen. Manchmal nimmst du das Gute mit dem Schlechten.

JeffO
quelle
3

Ich finde seine Haltung eher ein Aktivposten als eine Verbindlichkeit. Seine Fähigkeit zu forschen ist überdurchschnittlich. Seine Lernkurve ist ebenfalls flach. Warum nicht diese Eigenschaften ausnutzen, wenn Sie möchten, dass er etwas lernt?

Sein neugieriger Verstand ist immer unterwegs, warum nicht ihm die Richtung vorgeben? Sagen Sie ihm zunächst, warum Paginierung wichtig und wichtig ist. Lassen Sie ihn einen Blick auf Websites mit Paginierung und Websites ohne diese werfen.

Wie wäre es mit einer konstruktiven Kritik an dem, was er tut? "Wow, Sie haben etwas Großartiges getan, aber wäre es nicht besser, wenn Sie es auf diese Weise tun, wobei der Schwerpunkt auf Optimierung und Best Practices liegt.

Ich denke, ein Vergleich zwischen einer guten und einer schlechten Praxis kann seinen Geist wirklich anregen.

Beschränken Sie ihn nicht, er wird irgendwann etwas finden, das er möchte, und sich für einige Zeit damit abfinden. Wenn ich Sie wäre, würde ich ihm viel Lernmaterial über Dinge zur Verfügung stellen, die er so leidenschaftlich liebt.

Ich denke, er macht den Top-Down-Ansatz, während Sie andererseits möchten, dass er einen Bottom-Up-Ansatz macht

Dorward Villaruz
quelle
1

Warum ist es schlecht?

Im Gegenteil, ich finde es sehr gut! Es zeigt Neugier und Lernbereitschaft. Außerdem will er das richtige Werkzeug für den richtigen Job finden! Besser als bei einer unzureichenden Technologie erster Wahl zu bleiben. ;)

Eigentlich mache ich das auch als erfahrener Programmierer. Und ich empfehle es. Immer wenn ich ein neues Projekt habe, verhalte ich mich wie folgt:

  1. erkunden (die potenziellen Technologien, die nützlich sein können)
  2. experimentieren (mit denen, die vielversprechend aussehen)
  3. Wählen Sie Ihre Techniker (oder experimentieren Sie etwas weiter, bis Sie es wissen).
  4. bleib dabei (entwickle deine App und ziehe sie durch)

Ich denke, es macht vollkommen Sinn.

dagnelies
quelle
1

Wenn sich jemand nur auf eine Technologie konzentrieren müsste, würde ich sagen, dass es C # / Java sein sollte, das zusammen mit SQL verwendet wird.

Ich glaube, Sie können sich von hier aus an jede andere Technologie anpassen.

Das Festhalten an einer Technologie kann jedoch einschränkend sein, wenn ein Mitarbeiter in das Unternehmensumfeld eintreten möchte.

Idealerweise eine objektorientierte Plattform, eine mobile Plattform, eine Webplattform und dann sehr gute SQL-Kenntnisse (oder eine andere Datenbankumgebung).

Und die Grundlagen zuerst, sonst bleibt er später stecken!

Pierre Pretorius
quelle
0

Es ist nicht schlecht, wenn er ein Anfänger in der Programmierung ist.

Er wird sehen, wie manche Sachen funktionieren. Aber wenn er nicht versteht, was er tut, ist es besser, es überhaupt nicht zu tun.

Ich hatte dieses Problem mit mir selbst. Ich möchte alles wissen, Java, C, C ++, C #, Phyton, ASP.NET ... usw., aber mir wurde klar, dass ich nicht alles wissen kann, also habe ich mich auf ein paar Dinge konzentriert und es ist viel besser.

Also, was soll er tun (ihn beraten):

  1. Überlegen Sie, was Sie tun möchten
  2. Entdecken Sie alle Optionen
  3. Finden Sie, was zu Ihnen passt
  4. Lern es
  5. Niemals aufhören zu lernen

Ich würde @arnaud nicht zustimmen, wenn Sie immer neue Dinge erforschen und lernen, wenn ein neues Projekt vor Ihnen liegt (naja, nicht vollständig). Es dauert zu lange, neue Dinge zu erforschen und zu lernen, und einige Projekte sind zeitlich begrenzt. Aber auf der anderen Seite ist es in Ordnung, wenn Sie ein paar einfache neue Dinge lernen müssen: D.

Äon
quelle
0

Ich stimme Ihnen zu, es ist manchmal einfach, oberflächliche Kenntnisse über ein bestimmtes Framework, eine bestimmte Technologie oder Sprache zu erlangen, aber um ein wirkliches Verständnis zu erlangen, ist es am besten, sich bis zur Fertigstellung auf eine Entwicklung in der realen Welt einzulassen und sie aufrechtzuerhalten - jemand zu werden, der andere sind Kommen Sie zu Rat. Es ist vorzuziehen, ein Alleskönner zu werden, ein Meister von einem und nicht nur ein Alleskönner, ein Meister von keinem . Trotzdem würde ich ihn nicht davon abhalten, neue Dinge zu lernen, da er offensichtlich ein gutes Maß an Begeisterung hat.

dodgy_coder
quelle