Wie können wir die allgemeine Aus- und Weiterbildung der Programmierer verbessern? [geschlossen]


13

Letzte Woche habe ich mir gerade dieses erstaunliche Interview von Kevin Rose von Phillip Rosedale aus Second Life angesehen.

Und sie hatten eine erstaunliche Diskussion darüber, wie man gute Programmierer findet, anstellt und identifiziert und wie schwierig es ist, gute zu finden.

Was mich dazu gebracht hat, wirklich darüber nachzudenken, wie wir vom Programmierer gelernt und unterrichtet werden. Für die Mehrheit von uns, auch für mich, sind wir Autodidakten. Was großartig daran ist, Programmierer zu sein, kann jeder lernen und Fähigkeiten entwickeln.

Dies bedeutet aber auch, dass es keine wirklichen Standards dafür gibt, was ein guter Programmierer ist / sind und welche Art von Umgebung das Wachstum von Programmierfähigkeiten fördert.

Dies ist nicht so sehr eine Frage, sondern nur ein Wunsch in mir, herauszufinden, wie wir die Programmierkultur und die Programmiermanager ändern können, damit Bildung und Selbstverbesserung gefördert werden.

Es gibt viele Möglichkeiten für Weiterbildung, YouTube-Videos, Bücher und Konferenzen, aber aufgrund der Erfahrungscharakteristik ist nicht immer klar, worauf es beim Lernen und Meistern ankommt.

Schauen wir uns die Joel 12 Steps an.

Der Joel-Test

Verwenden Sie die Quellcodeverwaltung?

Können Sie einen Build in einem Schritt erstellen?

Machst du tägliche Builds?

Hast du eine Bug-Datenbank?

Beheben Sie Fehler, bevor Sie neuen Code schreiben?

Haben Sie einen aktuellen Zeitplan?

Haben Sie eine Spezifikation?

Haben Programmierer ruhige Arbeitsbedingungen?

Verwenden Sie die besten Werkzeuge, die Sie für Geld kaufen können?

Hast du Tester?

Schreiben neue Kandidaten während ihres Interviews Code?

Führen Sie Flur-Usability-Tests durch?

Ich denke, all dies hat einen wichtigen Wert, aber wenn ein Programmierer oder Manager nie die negativen Konsequenzen erlebt hat, wenn er nicht auf der Liste steht, wird er niemals die Notwendigkeit erkennen, dies zu tun von ihnen.

Die Erfahrungslücke ist meine grundlegende Theorie, dass jeder von uns unterschiedliche Jobs und unterschiedliche Erfahrungen hat. Für einige von uns, die schon immer mit Dutzenden von Programmierern gearbeitet haben, ist die Quellcodeverwaltung ein Muss. Aber für Leute, die schon immer der einzige Programmierer waren, können sie sich die Notwendigkeit einer Quellcodeverwaltung nicht vorstellen.

Und aufgrund dieser großen Lernschwäche beurteilen wir die Mitarbeiter anhand der von ihnen praktizierten oder nicht praktizierten Vorgehensweisen, und der Grund dafür kann ein Flammenkrieg auslösen.

Wir beurteilen die Leute in unserem Bereich immer danach, was sie tun, und denken: "Oh, wenn dieser Typ / dieses Mädchen nicht die besten xyz-Praktiken macht, kann er / sie kein guter Programmierer sein, also lasst uns keine Zeit oder Energie damit verschwenden, mit ihnen zu sprechen . "

Dies ist genau der Grund, warum wir so viele Flammenkriege programmieren, dass wir uns aufgrund der Erfahrungslücke nicht vorstellen können, dass Menschen nicht die Entscheidungen getroffen haben, die wir treffen mussten.

Das hat mich zu dem Gedanken gebracht, dass wir unbedingt überdenken müssen, wie wir Programmierer ausbilden, ausbilden und verwalten.

Zum Beispiel, wie viel Prozent von Ihnen hat Ihr Vorgesetzter dazu ermutigt, an Konferenzen teilzunehmen, und hat er sogar dafür bezahlt?

Für mich und viele Menschen ist dies äußerst selten. Viele von uns würden gerne zu Konferenzen gehen, um mehr zu erfahren, aber das Geld ist nicht da, um das zu tun.

Der Sinn dieser Frage ist es also, eine Menge zu entfachen, wie wir besser trainieren, lernen und damit umgehen können.

Wie können wir eine neue Lernkultur schaffen, die die Menschen nicht beleidigt, weil sie nicht die gleichen beruflichen Erfahrungen gemacht haben?

Ja, wir haben alle Arbeit und Arbeit zu erledigen, aber unsere Fähigkeit, unsere Arbeit gut zu erledigen, hängt von unserem Wunsch, Interesse und unserer Unterstützung ab, unsere Fähigkeiten zu verbessern.

Im Moment sehe ich, dass unsere Kultur ziemlich unorganisiert ist, wir unterstützen die Elite, aber die Tonnen von uns, die besser werden wollen, haben einfach nicht genug Unterstützung, um zu lernen und uns selbst zu verbessern.

Ich meine, wollen wir als Industrie nur als austauschbare Zahnräder wahrgenommen werden?

Vielen Dank...


+1: Ich denke, es war Carl Franklin von .NET Rocks, der einmal bemerkte, dass die Programmierbranche "Lehrlingsausbildung" aufsaugt. Ich hoffe, ich habe dieses Zitat richtig zugeschrieben; Aber ich stimme diesem Gefühl vollkommen zu. Ich weiß nicht wirklich, wie sich Einsteigerkandidaten heutzutage nach oben arbeiten.
Jim G.

Danke für die tollen Kommentare. Aber ein Teil meiner Ziele ist es, die Giganten unserer Branche zu wecken, dass wir bessere Bildungsmechanismen brauchen, und ich denke einfach nicht, dass Konferenzen und Hochschulen ausreichen. Nicht sicher, was die richtige Antwort ist.
Crosenblum

Mein Ziel ist es nicht, ein bestimmtes Framework oder bestimmte Methoden voranzutreiben, sondern mehr Bildung zu fördern und dafür zu sorgen, dass Programmierer Unterstützung erhalten.
Crosenblum

Jeder kann versuchen , die Fähigkeiten zu erlernen und zu entwickeln, die meisten verfügen nicht über die erforderlichen Eigenschaften. aber mach es trotzdem, um unsere branchen kosten.
Orbling

Hast du einen Link zum Interview? youtube.com/watch?v=irF-V9RUuXo dieses?
Lukasz Madon

Antworten:


13

Wow, großartige Frage zum Nachdenken, schwer zu beantworten. Da wir alle unterschiedliche Erfahrungen und Wünsche haben, ist es schwierig, eine einheitliche Lösung zu finden. Aber ich werde einige Meinungen, die ich im Laufe der Jahre zu diesem Thema hatte, rausschmeißen.

1) Hören Sie auf, Job-Hopping als schlecht anzusehen, und ermutigen Sie es. Wechseln Sie alle paar Jahre die Firma. Der Programmierer lernt im Laufe seiner Karriere viele verschiedene Technologien, Methoden und Unternehmen kennen. Unternehmen erhalten ständig neue Ideen.

2) Hören Sie auf, sich als Programmierer bei Unternehmen X zu sehen, und sehen Sie sich als Fachmann, der Dienstleistungen für Unternehmen X erbringt. Wenn Sie wie ein Fachmann denken, werden Sie wie ein Fachmann behandelt. Wenn wir als austauschbare Zahnräder angesehen werden, dann deshalb, weil wir uns wie austauschbare Zahnräder verhalten.

3) Universitäten müssen sich ändern. Sie sollten eine anfängliche Grundausbildung von 2 Jahren in Computern haben, gefolgt von einer Auswahl. Informatik oder Informatik. Und die Ingenieurspur braucht Profis, die jeden Tag vor Ort arbeiten, nicht jemanden, der nur Papiere schreibt. Und was unterrichtet wird, muss praktisch sein, damit Sie am Tag nach dem Abschluss den Boden unter den Füßen erreichen können. Vielleicht haben Sie ein Lehrlingsprogramm für diejenigen, die kein Studium absolvieren.

4) Bearbeiten: Dies war ein wenig scherzhaft. Was ich meinte war, dass wir alle viel voneinander lernen können, unabhängig von Alter und Erfahrung.

5) In gewissem Zusammenhang mit Punkt 2. Sehen Sie Ihren Arbeitgeber nicht mehr als für Ihre Karriere verantwortlich an. Sie sind. Und nur du. Wenn Sie zu einer Konferenz gehen möchten, zahlen Sie selbst, wenn Ihr Unternehmen dies nicht tut. Geben Sie jedes Jahr Geld für Bücher, Schulungen und berufliche Weiterentwicklung. Wenn Sie darauf warten, dass Ihr Arbeitgeber Sie zum Training schickt, werden Sie lange warten. Die Zeit, die Sie damit verbringen, Ihre Fähigkeiten zu beobachten, spielt keine Rolle mehr. Nicht genug verdienen, um sich das leisten zu können? Job wechseln.

6) Wir müssen ehrlich zu uns selbst und unseren Programmiererkollegen sein. Das Programmieren ist schwierig. Sehr schwer. Ich sehe immer noch Werbung für Computertraining mit Reichtum, der nach dem Abschluss garantiert ist. Das bringt eine Menge Leute ins Feld, die einfach nicht qualifiziert sind oder schlimmer noch kein wirkliches Interesse über das Geld hinaus haben. Wir müssen einen Weg finden, sie zu ermutigen, ihre Karrierepläne zu überdenken.

An diesem Punkt denke ich, dass mein Kopf explodieren wird, also werde ich schließen.

Gute Frage! Ich freue mich sehr darauf, weitere Antworten zu lesen.


3
+1 für Punkte 2 und die meisten von 5. Es ist ein offenbarender Moment, in dem Sie feststellen, dass Ihr Arbeitgeber Sie mehr braucht als Sie.
Carl Norum

@ Carl, das ist wirklich ein tolles Gefühl.

+1 für die tollen Fragenbemerkungen. Stimme voll und ganz zu. Ich stimme auch voll und ganz den Punkten 2 und 3 zu.
KeesDijk

Ich sehe in naher Zukunft keine Trendwende in Richtung Commoditization. Der Trend in den meisten Unternehmenssoftwaregeschäften geht zur Hyperspezialisierung von Rollen (auch bekannt als Pigeonholing).
Bit-Twiddler

1
Aber die Wirtschaft kann uns dazu drängen, Arbeitsplätze zu haben, in denen wir nicht so viel Freiheit oder Wahlfreiheit haben.
Crosenblum

1

Ich denke nicht, dass es allein aufgrund mangelnder Lehre desorganisiert ist. Ich denke, es ist tatsächlich ein Spiegelbild der Tatsache, dass sich "Best Practices" von Job zu Job unterscheiden. Die "Best Practices" werden immer in einem bestimmten Kontext basieren.

Es gibt eine Menge Überkreuzungen für einige der häufigsten Arbeitsbereiche, z. Web Entwicklung. Ich halte es jedoch für einen Trugschluss zu glauben, dass eine bestimmte Praxis in den meisten Berufen in allen Berufen angewendet werden sollte, nur weil sie gut ist.

Die Praktiken, die Sie anwenden, sollten aus einer Analyse und einem Experimentieren resultieren, die Ihre Arbeit verbessern. Sie sollten nicht durch blinden Glauben ausgewählt werden. Nur weil etwas im Netz oft wiederholt wird, ist es weder eine Wahrheit in Ihrer Situation noch eine Wahrheit (für alle Situationen).


0

Gute Frage, um den Verstand zu trainieren, ich stimme zu, dass etwas getan werden muss, aber ich denke, es ist unmöglich zu beantworten. Mein Versuch:

Erstens: Töte die Kreativität nicht im Allgemeinen. Ich muss sagen, dass ich Sir Ken Robinson zustimme. Sieh dir diesen tollen TED-Vortrag an . Unser Bildungssystem tötet die Kreativität und das muss geändert werden. Besonders für Programmierer.

2. Unterrichten Sie wie MusterUnser Berufsfeld ist nicht ausgereift genug. Wir denken, dass viele verschiedene Dinge der richtige Weg sind, aber wir können uns nicht wirklich darauf einigen. (Denken Sie an TDD, BDD, Agile vs Waterfall, den Umfang der benötigten Dokumentation, Java oder .Net.) Meiner Meinung nach ist dies auf kontextlose Diskussionen und zu viele Spezialisierungen zurückzuführen. Sie können nicht die richtige Wahl treffen, ohne zu wissen, in welchem ​​Kontext die Frage gestellt wird, und Sie können nicht die richtige Wahl treffen, wenn Sie nur eine Option kennen. Wenn Sie dies wieder in die Ausbildung bringen, scheint es unmöglich zu lösen. Sie können nicht erwarten, dass jemand alle möglichen Zusammenhänge und alle möglichen Lösungen kennt. Aber mit Mustern haben sie nun einige allgemeine Lösungen und die Kontexte, die zutreffen und Kontexte, wenn die Lösungen zusammenbrechen. IMHO ist dies die Art, wie wir lehren müssen,

Drittens: Haftungsausschluss für Beispiele Ich denke, es gibt ein Problem mit den Beispielen, die wir auf MSDN, in Blogs, in Büchern usw. zeigen. Die Beispiele werden oft heruntergedreht, um den Punkt zu verdeutlichen, den der Autor anstrebt. Aber in den grundlegendsten Beispielen gibt es bereits Entscheidungen auf vielen Ebenen. Diese Beispiele lehren all diese anderen Entscheidungen falsch. Ich denke, jedes Beispiel muss mit einem Haftungsausschluss versehen sein, der angibt, worum es geht und was Sie im Allgemeinen nicht tun sollten. Ein großartiges Beispiel dafür wurde heute hier gebloggt .

Last Do Do Glaube ich, es muss mehr getan werden. Ich habe gelernt, am einfachsten zu tun, zu versagen, zu reparieren und zu diskutieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.