Ich wurde gebeten, eine Person in unserer IT-Abteilung einzustellen, die keine Programmiererfahrung hat, aber eine kluge und fähige Person ist, und ihm zu helfen, beispielsweise bei einem Einsteiger, der vorhandene .NET-Anwendungen unterstützt, in die Programmierung einzusteigen. Ich glaube definitiv, dass diese Person das kann, aber ich suche nach dem schnellsten Weg, um ihn zum Tempo zu bringen. Ich habe eine Menge Ideen, wollte aber sehen, was andere Leute dachten. Ich weiß, dass dies auch stark davon abhängen wird, wie er lernt, aber ich spreche im Allgemeinen.
Also die Frage: Was sind Ihrer Meinung nach die besten Möglichkeiten, um einen Nicht-Entwickler schnell auf den neuesten Stand der Entwicklung zu bringen (in diesem Fall .Net)?
Antworten:
Normalerweise verschreibe ich jedem, der Programmieren lernen möchte, die gleiche Reihenfolge. Es ist sehr theoretisch, aber es ist eine gute Grundlage. Das Studium sollte drei oder vier Monate dauern, aber das Programmieren lernt man nicht über Nacht.
Wenn Sie diese Sequenz nicht durchstehen können, können Sie auch nicht programmieren. Geben Sie also gleich auf.
Meine Regel lautet: Arbeiten Sie sich bei Bedarf mit aller Kraft durch diese drei Bücher. Stellen Sie alle Fragen, die Sie haben, aber erst, nachdem Sie sich bemüht haben, es selbst herauszufinden. Wenn Sie diese drei Bücher durcharbeiten können, Glückwunsch, Sie sind ein Programmierer, jetzt kann ich Ihnen PERL IN 15 MINUTEN oder was auch immer Müll in der Buchhandlung im Big Bookcase von Java geben, und Sie werden gut zurechtkommen. Wenn Sie diese drei Bücher nicht durcharbeiten können, geben Sie auf, gehen Sie nach Hause, Sie werden es nie bekommen.
Ich glaube nicht, dass Sie C und Schema lernen müssen, um ehrlich zu sein. Sie sind nur eine Grundlage für zukünftiges Lernen. Diese beiden recht einfachen Bücher sind beide sehr einfach (C und Schema sind superleichte Sprachen), aber sie befassen sich intensiv mit der eigentlichen Kunst des Programmierens, ohne Zeit mit verwirrender Syntax zu verschwenden Ihr Gehirn ist ein guter Programmierer.
Versuche, eine Verknüpfung zu erstellen und genau das zu lernen, was Sie gerade lernen möchten (wie das Starten mit C # und ASP.NET), sind zum Scheitern verurteilt.
quelle
up to speed quickly
Teil fehl .Der beste Weg, um einen Nicht-Entwickler schnell auf den neuesten Stand zu bringen, besteht darin, ihn zu inspirieren !
Um Erfolg zu haben, muss der Kandidat zumindest neugierig, wenn nicht sogar leidenschaftlich auf das Programmieren sein (unabhängig von der Plattform).
Während ich Joel im Falle des idealen Kandidaten zustimme, würde ich darauf achten, nicht zu viel Theorie in einen schwachen Verstand zu stecken - es würde sie nur abschrecken. Wenn sie inspiriert, neugierig und hoffentlich leidenschaftlich sind, werden sie die Theorie verstehen wollen, nachdem sie die Magie gesehen haben.
Ich stimme @karudzo voll und ganz zu - Selbstverwirklichung und ein konstruktiver Rückblick können sehr inspirierend sein.
quelle
Der schnellste Weg könnte sein, ihm die Zeit zu geben, die er braucht , obwohl das leicht ein oder zwei Jahre sein können.
Sicher, es scheint einfach zu sein, ihm eine einfache Sprache beizubringen (C #, wenn er .NET-Sachen machen soll), aber eine Sprache zu lernen, bedeutet nicht, programmieren zu lernen.
Wenn er noch nie programmiert hat, muss er sich neben der Syntax und der Bibliothek von mindestens einer Sprache auch mit Arrays, verknüpften Listen, dem Kompilierungsmodell für jede Sprache, die er lernt, Modularisierung, Ressourcenmanagement, Paradigmen, Mustern, Big- O-Notation ... - die ganze Enchilada. Das ist eine Menge Dinge, die man durchpflügen muss, und die meisten von uns haben mehrere Jahre gebraucht, um diese Grundlagen zu erlernen, und noch mehr, um ein echter professioneller Programmierer zu werden.
Es gibt Material, das viel davon abdeckt (wie das neueste Buch von Stroustrup , in dem das Programmieren mit C ++ und nicht die Sprache C ++ unterrichtet wird), aber es gibt nicht viel davon und nichts, das alles abdeckt. Der Typ muss also bereit sein zu lernen und viele Bücher und Artikel zu lesen.
Wie das geht: Ich habe keinen vollständigen Lehrplan zur Hand, den ich hier einfügen könnte. (Entschuldigung.)
Ich würde jedoch empfehlen, ihm zunächst eine Programmiersprache beizubringen, damit er schnell erste Fortschritte erzielen und ermutigende Ergebnisse erzielen kann. Es gibt eine ganze Reihe von Büchern, in denen solche Sprachen unterrichtet werden können. Wählen Sie eines aus, mit dem Sie vertraut sind. Wenn das Buch viele Übungen enthält und er bereit ist, sie zu machen, sollten Sie darauf vorbereitet sein, viel Zeit damit zu verbringen, ihm dabei zu helfen. Wenn das Buch keine hat, fangen Sie an, sich Ihre eigenen im Voraus auszudenken, aber seien Sie bereit, sie an seine Ebene / Geschwindigkeit des Verstehens anzupassen.
Wenn diese erste Sprache weder C noch C ++ war, sollte er IMO als Nächstes eine dieser Sprachen lernen. K & R ist dafür gut geeignet, ebenso wie Stroustrups TCPL oder, wenn er (mit Ihrer Hilfe) eine steile Lernkurve bewältigen kann, Koenig / Moo. Der Grund, warum ich dies empfehlen würde, ist, dass, sobald Sie C oder (vorzugsweise) C ++ kennen, es relativ einfach ist, C-Derivate wie C #, Java, ObjC ... zu finden.
Stellen Sie ihm für den Rest einen ständigen Strom guter Bücher und Artikel zur Verfügung. Ich denke nicht, dass es sehr hilfreich ist, wenn wir zu viele davon vorschlagen, da 1) es zu Ihrer Unternehmenskultur passen muss und 2) Sie sich wohl fühlen müssen, wenn Sie ihm sagen, dass er das lernen soll.
quelle
Ich würde sie nicht auf .NET starten. Ich habe diesen Fehler zu oft gemacht. Lassen Sie sich nicht von einem Arbeitgeber dazu zwingen, aus Zeitgründen einen inkompetenten Programmierer zu schaffen. .NET ist zwar eine schnelle Entwicklungsplattform, zwingt Entwickler jedoch nicht zum Erlernen der Programmierung. In C # alleine bleibt ein Entwickler in Bezug auf Referenztypen und Objektlebensdauer stecken, hinterlässt große Speicherverluste (ja, in .NET ist dies möglich) und weist ein schlechtes Design auf. Es wäre viel besser, sie in C oder C ++ zu starten (wahrscheinlich in C ++, da sie OOP-Konzepte verwenden müssen) und dann etwas zu sagen wie: "Jetzt wäre es nicht schön, wenn Ihr Speicher für Sie verwaltet würde, alles war Objekt - orientiert und du musstest dich nicht mit all diesen fiesen Zeigern auseinandersetzen? " Hier ist C # und JAVA. Wenn sie c ++ gemeistert haben, werden sie beide in ein oder zwei Wochen erobern. Ich empfehle Joels Regiment. Das war die Liste, die mir mein CS 101-Lehrer gegeben hat, und ich war viel besser, wenn ich die numerische Analyse getroffen habe. So können Sie auch früher herausfinden, ob der Kandidat den Senf schneidet oder nicht. Sobald Sie C und C ++ erhalten haben, werden Sie automatisch C # und Java verstehen, nachdem Sie die Einführung in die Bücher gelesen haben. Sie würden sie nicht nur verstehen, Sie würden sie auch besser verstehen als jemand, der c und c ++ nicht kennt.
quelle
hWND
aus den 80ern gesprochen, oder? Natürlich verwenden Sie stattdessen eine nette Abstraktion (Welche Abstraktion ist eine völlig andere Debatte). Sicher zu wissen, wie es unter der Haube funktioniert, ist schön, aber Sie brauchen kein C # .NET für die AbstraktionGeben Sie ihnen etwas Einfaches, aber Nützliches zum Lösen. Lass sie ein bisschen herumfummeln und hilf ihnen, es aufzupolieren. Es gibt nichts Schöneres als eine kleine Leistung, um sie anzuspornen (obwohl sich jemand nicht für das Programmieren interessiert)
quelle
Paar-Programmierung. Lassen Sie sich von ihnen beschatten, während Sie Ihren eigenen Code schreiben - jeden Code. Lassen Sie sie dann innerhalb von Stunden Ihren Code für Sie eingeben, während Sie ihnen sagen, was sie tun sollen, und drücken Sie bei Bedarf eine Taste für eine Taste. Beantworten Sie einige ihrer Fragen, aber nicht so sehr, dass Sie viel langsamer werden - lassen Sie sie einfach alles einwirken. Sie finden auch Ihre Tippfehler und mehr von Ihren Fehlern, als Sie vielleicht denken. Innerhalb weniger Tage werden sie in der Lage sein, zu navigieren und Ihnen mitzuteilen, welchen Code Sie für Aufgaben eingeben müssen, die denen ähneln, die sie zuvor gesehen haben.
Auf diese Weise habe ich innerhalb eines Monats viel von dem gelernt, was ich als Entwickler weiß, und habe einige andere neue Entwickler auf diese Weise unterrichtet, von denen einer nach einigen Monaten in der Lage war, mich als Hauptentwickler bei einem Startup zu übernehmen. Als wir anfingen zusammenzuarbeiten, hatte er noch nie eine einzige Codezeile geschrieben.
quelle
Gib ihm eine gute Idee (visuelle Studios, Express ist immer noch gut). Bringen Sie ihm die üblichen 60% der Syntax bei (lassen Sie Yield, Linq, Enums, Attribute usw. weg, unterrichten Sie Klassen, virtuell und überschreiben Sie sie). Verbringen Sie Zeit mit dem Debugger (insbesondere Callstack). Sagen Sie ihm dann, dass er "msdn functionanme" googeln soll, wenn er Hilfe benötigt, und das sollte ihn zu einem schnellen Start bringen.
Bringe ihm auch bei, niemals eine Ausnahme zu erwischen und zu schlucken. Sagen Sie ihm, er muss es erneut werfen oder protokollieren!
Bonus: Bringen Sie ihm bei, wie man JSON-Daten serialisiert, damit er problemlos in eine Datei lesen / schreiben kann. Eine Datenbank ist übertrieben und zu viel zu lernen, und Sie möchten nicht, dass er benutzerdefinierte Dateiformate schreibt, obwohl ich einen Eintrag pro Zeilentyp der Datei passieren lassen kann, um ein String-Array als akzeptabel zu speichern / laden.
quelle
Ich weiß, dass viele Leute über Sprachen und Bücher für diese Sprachen gesprochen haben. Ich unterscheide mich.
Beim Programmieren geht es darum, analytisch denken zu lernen. In erster Linie sollte die Person in der Lage sein, auf einem Blatt Papier zu überlegen, worin das Problem besteht. Sie müssen sie anleiten, damit sie die richtige Denkweise erhalten.
Als nächstes kommen die Grundlagen der Sprache. Machen Sie sich mit der Sprache Ihrer Wahl vertraut. Programmieren Sie ein Problem.
Nachdem dieser erste Schnitt beendet ist, lassen Sie sie die CS-Grundlagen und die Entwurfsmuster ausführen.
Lassen Sie sie nun das frühere Problem mit diesen neuen Konzepten neu programmieren.
quelle
Beginnen Sie ihn mit den Grundlagen: Variablen, Schleifen, while-Schleifen, for-Schleifen, Arrays, bringen ihm die Grundlagen bei, drucken auf dem Bildschirm und führen einige einfache Berechnungen durch. Bewegen Sie sich in Methoden und grundlegende OOP, Dinge wie hier ist, wie man eine Klasse erstellt, zeigen Sie ihm, warum nicht nur das Wie.
Die Sprache spielt keine Rolle, aber wählen Sie etwas aus, das Sie kennen und das sehr abstrakt ist (Java, Python usw.), damit er sich nicht um Dinge wie Speicherverwaltung, Zeiger usw. kümmern muss Rekursion, Türme von Hanio oder rekursives Durchsuchen von Verzeichnissen.
Programmieren lernen ist eine gute kostenlose Ressource für die Ruby-Programmierung. Machen Sie es einfach, unterhaltsam und unterhaltsam.
quelle
Geben Sie ihm einige Herausforderungen und lassen Sie ihn lernen, wie er Ressourcen findet, um das Problem selbst zu lösen.
Wenn Sie ihm beibringen können, wie man Antworten findet und autark ist, lernt er natürlich, wie man gut programmiert. Kritisches Denken und Einfallsreichtum sind zwei Schlüsselkompetenzen für einen Programmierer.
Letztendlich wird Leidenschaft / Interesse definitiv ein Schlüsselfaktor dafür sein, wie erfolgreich sie sein werden, es schnell zu lernen. Wenn er "den Fehler" nicht hat oder nicht fängt, kann dies ein langsamer und / oder schmerzhafter Prozess sein. Wenn er den Fehler entdeckt, wird er spät aufstehen, außerhalb der Arbeitszeit und die Zeit seines Lebens haben.
quelle