Erreichen des Zwischenprogrammierstatus [geschlossen]

32

Ich bin ein Software-Ingenieur, der Positionen in VBA programmiert hat (obwohl ich es nicht wagen kann, diese "echte" Erfahrung zu berücksichtigen, da es sich um Versuch und Irrtum handelte!), Perl mit CGI, C # und ASP.NET. Die beiden letzteren sind Post-Undergraduate-Studenten, mit meinem Einstieg in die "reale Welt". Ich bin 2 Jahre von der Universität, und habe 5 Jahre Erfahrung (total) in den Sprachen gehabt, die ich erwähnt habe. In meinem Lebenslauf kann ich jedoch nur 2 Jahre für C # und weniger als ein Jahr für ASP.NET angeben.

Ich habe das Gefühl , C # zu kennen, aber ich muss noch einige Zeit damit verbringen, zu überlegen, was diese Methode bewirkt, während einige der erfahreneren Ingenieure sofort sagen können: "Oh, Methode X tut dies, ohne sich das jemals angesehen zu haben Methode vor. " Ich weiß also empirisch, dass es dort eine Kluft gibt, aber ich weiß nicht genau, wie ich sie überbrücken soll. Ich habe angefangen, in Project Euler zu programmieren , und ich habe ein Buch über Entwurfsmuster aufgeschlagen, aber ich habe immer noch das Gefühl, jeden Tag Wasser zu betreten, anstatt mich vorwärts zu bewegen.

Das soll nicht heißen, dass ich nicht das Gefühl habe, Fortschritte gemacht zu haben. Es bedeutet nur, dass ich, soweit ich jeden Tag komme, immer noch die Bergspitze in der Ferne sehe.

Meine Frage lautet: Wie haben Sie dieses Plateau überwunden? Wie lange hast du gebraucht? Welche Methoden können Sie vorschlagen, um mich dabei zu unterstützen?

Ich habe Code Complete , The Mythical Man Month und CLR in C #, 2. Ausgabe, gelesen - meine Frage lautet: Was mache ich jetzt?


Edit : Ich habe diese Frage gerade bei Projekten für einen fortgeschrittenen Programmierer gefunden. Ich denke, es trägt zur Diskussion bei (obwohl es meine Frage nicht ersetzt). Daher füge ich es der Frage als "Weitere Informationen" hinzu.

George Stocker
quelle
2
Ich habe kürzlich mit Project Euler gespielt und es werden nur einige wenige Techniken behandelt. Es ist alles sehr gut, eine Funktion durch Auswendiglernen oder dynamisches Programmieren zu optimieren, aber es hilft Ihnen nicht, GUI oder Webapps zu schreiben. Die harten Probleme sind auf harte Mathematik ausgelegt, nicht auf harte Codierung.
Trotzdem viel Spaß: Ich habe nichts dagegen, es soll Ihnen nur nicht helfen, eine Sprache zu lernen, die über die grundlegenden Datentypen, Strukturen und vielleicht ein paar Optimierungstechniken hinausgeht, wenn Sie wie ich Ihre Lösungen bevorzugen 0,1s wo möglich.
@Gortok, ich stimme zu, dass es viele spezifische Dinge gibt, die Sie tun können, um Ihre Fähigkeiten zu verbessern, aber das hängt sicherlich davon ab, welche Art von Programmierung Sie durchführen. Windows-Entwickler benötigen beispielsweise andere Kenntnisse als Programmierer eingebetteter Geräte. Ich denke, dass die gestellte Frage in der Tat zu weit gefasst ist, um eine gute Antwort zu erhalten.
Nathan Fellman
1
Ich programmiere seit ich 2 Jahre alt bin. Ich habe es nicht geschafft, der beste Programmierer der Welt zu werden, und jetzt hasse ich mein Leben. Ich wünschte, mein Ziel wäre es, stattdessen der weltbeste Pornostar zu sein.
Sie haben nicht das Gefühl, voranzukommen, weil Ihre Intuition Ihnen eine Kluft zwischen akademischer Praxis und Geschäftspraxis (aus der Praxis) aufzeigt. Und deine Intuition ist richtig. In der akademischen Praxis dreht sich alles um kleine, in sich geschlossene Probleme und Übungen. Das Geschäft behebt einen Fehler oder fügt einem Ungetüm (normalerweise) eine Funktion, eine Webseite usw. hinzu. Akademische Praxis ist Rekursion. Geschäft ist Lesbarkeit und Wartbarkeit. Akademische Praxis ist Mathematik und Informatik. Geschäft ist Menschen Fähigkeiten und Anforderungsanalyse ebenso wie Codierung. Hätte dies als Antwort gegeben, aber das Q ist geschlossen.
Brad Thomas

Antworten:

41

Herzliche Glückwünsche!

Aus Ihrer Beschreibung, Sie sind ein Zwischen Entwickler.

Diese Phase wird ungefähr 3-8 Jahre dauern, abhängig von Ihrer Bereitschaft, über das augenblickliche Problem hinaus zu lernen

Um den Prozess zu beschleunigen, zu lesen, zu surfen, zu bloggen, zu Benutzergruppentreffen zu gehen, einen Mentor zu finden, unabhängige Recherchen durchzuführen, Nebenprojekte zu programmieren und sich in neue Technologien zu vertiefen. Dies kann ein oder zwei Jahre nach der Zeit rasieren.

Oder du könntest ein Leben außerhalb des Programmierens haben ;-)

Im Ernst, bleiben Sie auf dem Laufenden und schauen Sie nach, aber schalten Sie das #% $ @ -Ding ab und zu aus

Nachtrag: Wenn Sie nach draußen gehen, denken Sie daran, Hosen zu tragen.

Steven A. Lowe
quelle
17
und hüte dich davor, Tolkien zu zitieren, das ist ein schwerer Hobbit
Steven A. Lowe
1
Gut gespielt, Mr. Lowe, gut gespielt.
kemiller2002
1
Im Ernst, haben Sie ein Leben außerhalb der Programmierung. Erstens: Im Leben steckt mehr als Code. Zweitens: Aus anderen Disziplinen kann man viel lernen.
kemiller2002
1
+1 - Gut gemacht. Nichts ersetzt Übung (oder einen guten Sinn für Humor).
15

Eine der besten Möglichkeiten, den Berg hinaufzukommen, besteht darin, etwas für sich selbst zu schreiben, weil Sie es möchten. Die besten Programmierer haben wunderbare Antworten auf die Frage: "Was ist das interessanteste Programm, das Sie in Ihrer Freizeit geschrieben haben?" Wenn Sie in Ihrer Freizeit keinen Code schreiben, lieben Sie Ihr Handwerk nicht genug, um besser darin zu werden.

Norman Ramsey
quelle
8
Ich mag diese Theorie nicht. Die Leute haben Vollzeitjobs und dann andere Verantwortlichkeiten. Es ist nicht verantwortlich anzunehmen, dass diejenigen, die keine Nebenprojekte haben, nicht genug programmieren oder schlechte Programmierer sind. Wie die akzeptierte Antwort besagt, haben Sie ein Leben außerhalb der Programmierung.
10
Ich bin anderer Meinung - die besten Programmierer sind wie die besten Schriftsteller: Sie können sich buchstäblich nicht davon abhalten, das zu tun, was sie am besten können.
Norman Ramsey
2
Sie sind möglicherweise nicht in der Lage, sich selbst zu stoppen, aber das Leben kann und für einige wird.
Shannon Severance
@ ShannonSeverance Für viele wird es, nicht nur für einige.
Pacerier
9

Sie müssen das Larvenstadium durchlaufen.

Obwohl ich jetzt in VB.NET unter Windows programmiere, habe ich das Larvenstadium unter Linux x86 mit Assembly als meine Hauptsprache durchlaufen.

Eine Zeitlang musst du dich dem Handwerk widmen, bis du es beherrschst. Was Instinkte eines Master-Programmierers genannt werden, sind wirklich erlernte Verhaltensweisen. Es ist eine gemeinsame Kultur. Programmierer müssen wie andere denken und wie die Maschine.

Schafe werden wie Hirten und Hirten wie Schafe, aber beide sind nicht sehr lang auf der Welt. Mit [trees and] Ents ist es schneller und näher und sie wandeln gemeinsam durch die Jahrhunderte. - Tolkien

Wissen und verstehen. Die größten Fähigkeiten sind nicht die, die an eine bestimmte Sprache gebunden sind, sondern können auf fast jede Sprache angewendet werden. Kennen Sie die Konzepte, suchen Sie sie sowohl in den Problemen als auch in den Sprachen und seien Sie bereit, bei Bedarf neue Dinge zu erfinden.

Dies ist der Weg zur Größe.

Joshua
quelle
2
Handelt es sich irgendwie um Cheetos? Das Bild in meinem Kopf handelt von Cheetos.
2
lol "Es ist nicht einfach, kitschig zu sein!"
Gnovice
Larvenstadium oder Larvenstadium? ;)
Brad Thomas
9

Ich programmiere seit ich 8 bin ... Ich werde an Heiligabend 33 sein. Ich sehe den Berg immer noch in der Ferne. Egal wie weit Sie kommen, es gibt immer mehr zu lernen.

Machen Sie sich mit den Paradigmen vertraut und finden Sie heraus, wie die Sprache, in der Sie gerade programmieren, diese Paradigmen umsetzt. Programmieren ist eine Erfahrung fürs Leben, die immer mehr zu lernen hat. Das ist die Freude daran, egal wie kompetent Sie sind, es gibt immer mehr.

Eine Möglichkeit, neue Dinge zu lernen, die ich normalerweise nicht lernen würde, besteht darin, Zeit hier und in anderen Programmierforen wie Bytes and Experts Exchange zu verbringen, in denen Leute Fragen stellen. Wenn Sie die Frage beantworten können, fahren Sie fort, wenn Sie nicht können, und versuchen Sie herauszufinden, wie Sie die Aufgabe selbst erledigen können. Das OP wird nicht nur Ihre Mühe und Ihre Unterstützung schätzen, sondern Sie werden auch etwas Neues lernen.

Ich finde, dass ich mehr lerne, indem ich anderen Menschen helfe, Antworten auf Dinge zu finden, die ich noch nicht kenne, als jemals zuvor, indem ich einfach meine täglichen Dinge programmiere, die ich tagtäglich mache.

BenAlabaster
quelle
9

Der Status der Zwischenprogrammierung impliziert, dass Sie sich von der Mentalität des Code-Affen "schneller tippen" lösen und in den Bereich eintreten, in dem Sie als Karrieremitarbeiter echte Systeme aufbauen möchten. Dies ist eine große berufliche Veränderung, und ehrlich gesagt geht es nicht wirklich um technische Fähigkeiten. Das Arbeiten auf mittlerer Ebene (auch als "Entwickler" bezeichnet) erfordert ein deutlich höheres Maß an Fähigkeiten der Mitarbeiter.

Hier sind einige Symptome, über die Sie nachdenken könnten:

  1. Kommst du online in Edit-Kriege? In diesem Fall zeigen Sie möglicherweise, dass Sie lieber über Details in Ihrer Komfortzone streiten, als zu versuchen, die Sichtweise der anderen Person zu verstehen.
  2. Stellen Sie sich Sprachen als wirklich verschiedene Dinge vor? C # und Java bringen beide ihre eigenen Plattformen und Ressourcen auf den Tisch, aber beide sind effektive Modelle für die Berechenbarkeit. Können Sie eine neue Sprache und Plattform schnell genug lernen, um für die Arbeit bezahlt zu werden?
  3. Denken Sie immer noch an Software-Aufgaben als Eingabe? Wenn Sie eine Aufgabe bei der Arbeit erhalten, warum? Wofür wird dieser Code verwendet? Zu welchem ​​System wird es gehören? Diese Informationen können Ihre vorgeschlagene Lösung dramatisch verändern.
  4. Haben Sie die Besserwisser- Phase Ihres Lebens hinter sich gelassen? Hörst du dem Rest des Teams zu oder versuchst du nur, an das nächste zu denken, was zu sagen ist?
  5. Haben Sie bemerkt, dass es nicht mehr beeindruckend ist, "einen All-Nighter zu ziehen", um eine fehlerhafte Last-Minute-Lösung zu erstellen? Nach den ersten acht Stunden können Sie sich leicht vorstellen, dass der Rest der Zeit nur zum Schreiben von Bugs verwendet wurde.

Die beste Zusammenfassung, die ich finden kann, ist, dass der fortgeschrittene Programmierer (oder "Entwickler") gelernt hat, in acht Arbeitsstunden produktiver zu sein, damit er zur Hölle nach Hause gehen und ein Leben außerhalb der Arbeit führen kann.

Bonuspunkte werden vergeben, wenn es Ihnen gelingt, einen Ehepartner zu finden und sich zu reproduzieren ....

Bob Cross
quelle
8

Was Sie jetzt tun, ist großartig, aber wenn Sie Ihren Fortschritt unglaublich beschleunigen möchten, können Sie zwei zusätzliche Dinge tun:

1) "Lehren" - Eine einfache Möglichkeit, dies zu tun, besteht darin, ein Blog zu starten und zu versuchen, regelmäßig (vielleicht wöchentlich) etwas Nützliches beizutragen. Ziele auf Dinge ab, die du kürzlich gelernt hast oder die du noch nicht kennst . Das bedeutet, dass Sie sich zwingen müssen, zu recherchieren, zu verstehen und neu zu entdecken.

Übrigens: Sie können sich ganz einfach für ein SingingEels-Konto anmelden, für das Sie ein kostenloses Blog über eine vorhandene Entwickler-Community erhalten.

2) Schreiben Sie viele Mini-Programme - Damit meine ich etwa 1 pro Woche. Sie können dies in Verbindung mit den oben genannten verwenden ... oder nur zum Spaß. Als junger Entwickler habe ich nur zufällig einen Namespace im .NET-Framework ausgewählt (ich mache keine Witze). Wählen Sie dabei eine Klasse aus, die Sie noch nie gesehen / verwendet haben, und erstellen Sie ein kleines Programm, das sie verwendet.

Timothy Khouri
quelle
8

Versuchen zu

Lies MEHR Bücher Nimm diese großen Titel von Amazon und lies sie. Zum Beispiel hatte der Autor von Code Complete ein großartiges Buch über Software-Engineering geschrieben - Rapid Software Development. Kaufen Sie eines und lesen Sie es.

Lernen Sie eine andere Programmiersprache Eine Skriptsprache wie Python / Ruby ist es wert, studiert zu werden. Oder vielleicht eine funktionierende Programmiersprache :) Dies kann Ihre Meinung zur Programmierung ändern. Möglicherweise wissen Sie, dass einige der GOF-Muster für diese Art von Sprachen nicht erforderlich sind.

Einer Community beitreten Menschen können sich austauschen, indem sie anderen zuhören und Präsentationen halten.

Aufreißer
quelle
4

Finde clevere Programmierer und lerne von ihnen. Imitiere sie. Beachten Sie die Dinge, die sie anders machen als Sie.

Führt Ihr Unternehmen Code-Überprüfungen durch? Das ist einer der besten Wege zu lernen. Sie werden vielleicht erstaunt sein, welche Vorschläge fortgeschrittenere Programmierer machen und worauf sie beim Codieren achten.

David Norman
quelle
3

Wie wäre es, wenn Sie sich an einem anderen laufenden Open Source-Projekt beteiligen, sodass sich zumindest Ihre Arbeit für jemanden lohnt und Sie lernen und mit anderen fortgeschrittenen Entwicklern interagieren können, die echte Arbeit leisten.

Zumindest sind Sie nicht darauf beschränkt, was Sie lernen möchten oder welche Art von Projekt Sie durchführen möchten. und es ist bereits ein kostenloses Tool, das Sie verwenden. Sie können stolz darauf sein, dass Sie tatsächlich dazu beitragen, es zu verbessern.

und es zeigt sich auch gut mit Ihrem Lebenslauf. :)

Wenn Sie dann noch etwas Zeit haben, warum sollten Sie nicht einen Blog führen, der Ihr Lernen, Ihre Erfahrungen und was nicht dokumentiert. wer weiß, du könntest der nächste sein, der sich mit Software oder Coding-Horror befasst: p

melaos
quelle
-1

Um sich als C # -Entwickler hervorzuheben, lesen Sie die folgenden beiden. Beachten Sie, dass der Schwerpunkt dieser Bücher eher auf der Sprache (C #) als auf dem Framework (.NET) liegt.

  1. Essential C # : Link ist für die neueste Ausgabe. Eigentlich habe ich das vorherige gelesen (C # 4.0), aber ich gehe davon aus, dass das Neue das Bessere ist. Dieses Buch hat auch einige grundlegende Dinge, aber sei geduldig und lies das Buch von Umschlag zu Umschlag.
  2. C # in Depth : Link ist wieder für die neueste Ausgabe, die in 10-15 Tagen veröffentlicht wird. Ich habe das Buch nur überflogen, aber meine Kollegen, die es gelesen haben, schätzen es sehr.

Sie haben CLR bereits über C # gelesen , andernfalls ist dies wahrscheinlich der dritte Vorschlag von irgendjemandem für C # -Entwickler.

Dies sollte Sie auch zu einem besseren Entwickler machen: Framework-Design-Richtlinien und effektive Arbeit mit Legacy-Code .

Asim Ghaffar
quelle
willst du erklären, warum du abgestimmt hast?
Asim Ghaffar