it-swarm-eu.dev

Wie kann ich einer klugen Person ohne Programmiererfahrung das Programmieren beibringen?

Ich wurde gebeten, eine Person in unserer IT-Abteilung zu nehmen, die keine Programmiererfahrung hat, aber eine kluge und fähige Person ist, und ihm zu helfen, in die Programmierung einzusteigen, beispielsweise bei einem Einsteigerentwickler, der vorhandene .Net-Anwendungen unterstützt. Ich glaube definitiv, dass diese Person das kann, aber ich suche nach dem schnellsten Weg, um sie zum Tempo zu bringen. Ich habe eine Menge Ideen, wollte aber sehen, was andere Leute dachten. Ich weiß, dass dies auch stark davon abhängt, wie er lernt, aber ich spreche im Allgemeinen.

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)?

100

Normalerweise verschreibe ich die gleiche Reihenfolge für alle, die Programmieren lernen möchten. Es ist sehr theoretisch, aber es legt eine gute Grundlage. Das Vollzeitstudium sollte drei oder vier Monate dauern, aber Programmieren lernen Sie nicht über Nacht.

Wenn Sie diese Sequenz nicht durchstehen können, können Sie nicht programmieren, also können Sie jetzt genauso gut aufgeben.

  1. Code von Charles Petzold.
  2. Die Programmiersprache C, K & R
  3. Die Struktur und Interpretation von Computerprogrammen, Abelson und Sussman.

Meine Regel lautet: Arbeiten Sie sich bei Bedarf mit bloßer Gewalt 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, herzlichen Glückwunsch, Sie sind Programmierer, jetzt kann ich Ihnen Perl IN 15 MINUTEN oder was auch immer Müll in der Buchhandlung im Big Bookcase von Java und Sie werden es gut schaffen. Wenn Sie es nicht durch diese drei Bücher schaffen, 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 ziemlich einfachen Bücher sind an der Oberfläche sehr einfach (C und Scheme sind supereinfache Sprachen), aber sie vertiefen sich in die wahre Kunst des Programmierens, ohne Zeit mit verwirrender Syntax zu verschwenden, und eignen sich daher hervorragend, um mit der Neuverdrahtung zu beginnen Ihr Gehirn, um ein guter Programmierer zu sein.

Versuche, eine Verknüpfung zu verwenden und direkt genau das zu lernen, was Sie gerade lernen möchten (z. B. mit C # und ASP.NET beginnen), sind zum Scheitern verurteilt.

125
Joel Spolsky

Der beste Weg, um einen Nicht-Entwickler schnell auf den neuesten Stand zu bringen, ist inspirieren!

Um Erfolg zu haben, der Kandidat muss zumindest neugierig, wenn nicht leidenschaftlich sein über das Programmieren (unabhängig von der Plattform).

Während ich Joel im Fall des idealen Kandidaten zustimme, würde ich darauf achten, nicht zu viel Theorie in einen schwachen Verstand zu stecken - es wird 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 eine konstruktive Überprüfung können sehr inspirierend sein.

30
jkoreska

Ich suche den schnellsten Weg, um ihn auf Touren zu bringen.

Der schnellste Weg könnte sein, ihm die Zeit zu geben, die es braucht , obwohl das leicht ein oder zwei Jahre sein könnte.

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 nie programmiert hat, muss er neben der Syntax und Bibliothek mindestens einer Sprache auch etwas über Arrays, verknüpfte Listen, das Kompilierungsmodell der Sprache, die er lernt, Modularisierung, Ressourcenmanagement, Paradigmen, Muster, Big- lernen. 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 Stroustrups neuestes Buch , das Programmieren mit C++ lehrt, anstatt die Sprache C++ zu unterrichten), aber es gibt kein sehr viel davon und nichts, was alles abdeckt. Der Typ muss also bereit sein zu lernen und viele Bücher und Artikel zu lesen.

Wie das geht: Ich habe hier keinen vollständigen Lehrplan zur Verfügung, den ich einfügen könnte. (Es tut uns leid.)
Ich würde jedoch empfehlen, ihm zunächst eine Programmiersprache beizubringen, damit er schnell erste Fortschritte erzielen und ermutigende Ergebnisse erzielen kann. Es gibt einige Bücher, in denen Sie solche Sprachen unterrichten können. Wählen Sie eines aus, mit dem Sie vertraut sind. Wenn das Buch viele Übungen enthält und er bereit ist, diese zu machen, sollten Sie darauf vorbereitet sein, viel Zeit damit zu verbringen, ihm dabei zu helfen. Wenn das Buch keine (m) enthält, überlegen Sie sich Ihre eigenen im Voraus, aber seien Sie bereit, sie an sein Verständnisniveau/seine Verständlichkeitsgeschwindigkeit anzupassen.
Wenn diese erste Sprache weder C noch C++ war, sollte er IMO eine davon als nächstes 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 (IMO vorzugsweise) C++ kennen, es relativ einfach ist, eines dieser C-Derivate wie C #, Java, ObjC ...

Versorgen Sie ihn im Übrigen ständig mit guten Büchern und Artikeln. Ich denke nicht, dass es sehr hilfreich ist, wenn wir zu viele davon vorschlagen, da 1) es zur Kultur Ihres Unternehmens passen muss und 2) Sie sich wohl fühlen müssen, wenn Sie ihm sagen, dass er das lernen soll.

12
sbi

Ich würde sie nicht auf .NET starten. Ich habe diesen Fehler zu oft gemacht. Lassen Sie sich nicht von einem Arbeitgeber unter Druck setzen, aus Zeitgründen einen inkompetenten Programmierer zu erstellen. .NET ist zwar eine schnelle Entwicklungsplattform, zwingt Entwickler jedoch nicht dazu, das Programmieren zu lernen. Allein in C # werden Sie feststellen, dass ein Entwickler bei Referenztypen und Objektlebensdauer hängen bleibt, große Speicherlecks hinterlässt (ja, dies ist in .NET möglich) und schlechte Designs aufweist. Es wäre viel besser, sie auf C oder C++ zu starten (wahrscheinlich auf C++, da sie OOP Konzepte) verwenden müssen und dann etwas sagen wie: "Jetzt wäre es nicht schön, wenn Ihr Gedächtnis wurde für Sie verwaltet, alles war objektorientiert und Sie mussten sich nicht mit all diesen fiesen Zeigern auseinandersetzen? "Hier sind C # und Java. Wenn sie C++ beherrschen, 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, als ich deswegen auf numerische Analyse traf. Auf diese Weise können Sie auch früher herausfinden, ob der Kandidat den Senf schneiden wird oder nicht Sobald Sie c und c ++ erhalten haben, werden Sie c # und Java) automatisch verstehen, nachdem Sie die Einführung in die Bücher gelesen haben. Sie würden sie nicht nur verstehen, sondern auch besser verstehen als jemand, der kannte c und c ++ nicht.

7
Jonathan Henson

Paar-Programmierung. Lassen Sie sich von ihnen beschatten, während Sie Ihren eigenen Code schreiben - jeden Code. Lassen Sie sie dann innerhalb weniger Stunden Ihren Code für Sie eingeben, während Sie ihnen sagen, was zu tun ist, Tastendruck für Tastendruck, auch wenn dies erforderlich ist. Beantworten Sie einige ihrer Fragen, aber nicht so sehr, dass Sie viel langsamer werden - lassen Sie sie einfach alles in sich aufnehmen. Sie werden auch Ihre Tippfehler und mehr Ihrer Fehler finden, als Sie vielleicht denken. Innerhalb weniger Tage können sie mit der Navigation beginnen und Ihnen mitteilen, 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 auf diese Weise mehrere andere neue Entwickler unterrichtet, von denen einer nach einigen Monaten die Leitung eines leitenden Entwicklers bei einem Startup übernehmen konnte. Als wir anfingen zusammenzuarbeiten, hatte er noch nie eine einzige Codezeile geschrieben.

6
trace

Geben Sie ihnen etwas Einfaches, aber Nützliches zum Lösen. Lassen Sie sie ein bisschen herumfummeln und helfen Sie ihnen, es aufzupolieren. Es gibt nichts Schöneres als eine kleine Leistung, die sie anspornt (obwohl jemand, der nicht an Programmierung interessiert ist, w

6
jschorr

Geben Sie 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). Dann sag ihm, er soll "msdn functionanme" googeln, wann immer er Hilfe braucht, und das sollte ihn zu einem schnellen Start bringen.

Bringen Sie ihm auch bei, niemals eine Ausnahme zu fangen und zu schlucken. Sagen Sie ihm, er muss es neu werfen oder protokollieren!

Bonus: Bringen Sie ihm bei, wie man JSON-Daten serialisiert, damit er leicht 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 möglicherweise einen Eintrag pro Zeilentyp des Dateityps passieren lasse, um ein Zeichenfolgenarray als akzeptabel zu speichern/laden.

2
user2528

Ich weiß, dass viele Leute über Sprachen und Bücher für diese Sprachen gesprochen haben. Ich unterscheide mich.

Beim Programmieren geht es darum, analytisches Denken zu lernen. In erster Linie sollte die Person in der Lage sein, auf einem Blatt Papier über das Problem nachzudenken und das Algo zu finden. Sie müssen sie führen, damit sie die richtige Denktechnik erhalten.

Als nächstes kommen die Grundlagen der Sprache. Lassen Sie sie mit der Sprache Ihrer Wahl beginnen. Geben Sie ein Problem zum Programmieren.

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.

1
Nomad

Beginnen Sie ihn mit den Grundlagen: Variablen, Schleifen, während Schleifen, für Schleifen, Arrays, bringen Sie ihm die Grundlagen bei, drucken Sie auf dem Bildschirm, machen Sie einige einfache Berechnungen. Bewegen Sie sich in Methoden und grundlegende OOP, Dinge wie hier, wie man eine Klasse erstellt, zeigen Sie ihm das Warum und 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 etc ...)), damit er sich nicht um Dinge wie Speicherverwaltung kümmern muss. Zeiger usw. Unterrichten Sie die Grundlagen der Rekursion, der Türme von Hanio oder der rekursiven Suche in Verzeichnissen.

Programmieren lernen ist eine gute kostenlose Ressource für Ruby Programmierung. Machen Sie es Spaß, einfach und unterhaltsam.

1
Snow_Mac

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 es sein wird, 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 programmieren, außerhalb der Arbeitszeit sein und die Zeit seines Lebens haben.

1
Andy Fleming