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?
quelle
Antworten:
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.
quelle
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?
quelle
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?
quelle
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.
quelle
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
quelle
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:
Ich denke, es macht vollkommen Sinn.
quelle
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!
quelle
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):
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.
quelle
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.
quelle