Sollte ich sofort nach dem College ein guter Programmierer sein?


28

Mögliches Duplikat:
Ich habe einen Abschluss in Informatik, aber ich habe nicht das Gefühl, dass ich einem erfahrenen Programmierer nahe bin

Ich habe vor kurzem meinen Universitätsabschluss gemacht und bin seitdem Mitglied eines Entwicklerteams, in dem ich bei weitem der am wenigsten erfahrene Entwickler bin. In der Zwischenzeit hat der Rest des Teams 5-10 Jahre Erfahrung.

Ich war ein sehr guter Student und ein ziemlich guter Programmierer, wenn es um Aufgaben und Tests ging. Ich habe mit Erfolg an einigen Projekten gearbeitet, aber jetzt arbeite ich mit einer viel größeren Codebasis und die Lernkurve ist viel höher.

Ich habe mich gefragt, wie viele andere Entwickler ihre Karriere in Teams begonnen haben und wie sie gegangen sind. Wann ändert sich das? Wie kann ich den Prozess beschleunigen? Meine Senioren helfen mir, aber ich möchte großartig sein und jetzt meinen Wert zeigen.

Antworten:


50

Das Interessante an der Softwareentwicklung ist, dass es keine Rolle spielt, wie gut Sie sind - es gibt immer jemanden, der besser oder zumindest anders genug ist, um Ihnen noch etwas beizubringen. Es ist auch keine Seltenheit, sich Code anzusehen, der vor einigen Monaten geschrieben wurde, und zu glauben, dass er scheiße ist, unabhängig von Ihrer Erfahrung.

Als ich die Kluft zwischen meinen Fähigkeiten und den Fähigkeiten meiner Kollegen erkannte, begann ich zu lernen, wie ich es noch nie zuvor gelernt hatte - Code anderer Leute, Blogposts, Bücher zu lesen, darauf zu achten, wie meine Kollegen Dinge vollbrachten usw Die Universität hat mich auf Informatik vorbereitet, aber nicht wirklich auf Softwareentwicklung. Es ist fast 4 Jahre später und ich bin ein viel stärkerer Softwareentwickler als früher. Also, bleib einfach dran und lerne so viel wie möglich von den Leuten um dich herum. Es wird besser


+1. Ich mochte es auch sehr, derjenige zu sein, der an etwas im Team saugt, und es zwang mich, mein Wissen anzupassen.

27
+1University prepared me for computer science, but not really for software development.
George Marian

1
Ich hoffe, ich habe die gleiche Erfahrung, wenn ich mit Uni fertig bin und meinen ersten (oh warte, zweiten) Job im Programmiergeschäft bekomme.
gablin

4
@ George: Was noch schlimmer ist, ist, dass ein Großteil der Softwareentwicklung in der realen Welt unter dem Dach "IT" zusammengefasst ist, was normalerweise darauf hinausläuft, hässliche Benutzeroberflächen auf Datenbanktabellen zu legen. :( Nicht genau etwas Universität könnte Sie jemals vorbereiten.
Adam Paynter

@ adam Auf jeden Fall. Obwohl ich die Notwendigkeit manchmal verstehe, macht mich der Ansatz "gut genug" einfach verrückt.
George Marian

23

Nein. Ich habe in den ersten 6 Monaten nach meinem Universitätsabschluss viel mehr über Programmieren / Software-Engineering gelernt als in den Jahren zuvor. Das bedeutet jedoch nicht, dass die Universität Zeitverschwendung war. Sie bereitete mich darauf vor und lieferte das Hintergrundwissen, auf dem ich aufbauen konnte.

Wenn ich jetzt zurückblicke, wusste ich immer noch nicht wirklich, was ich in 6 Monaten tat.


4
Gut gesagt, meine Professoren sagten immer: "Es gibt große Unterschiede zwischen Industrie und Wissenschaft." Kaum zu glauben, bis man in die reale Welt hinausgeht und merkt, dass es tatsächlich so ist!
Chris

Dies. Genau aus diesem Grund ist ein unbezahltes Praktikum so wertvoll. Verdammt, sogar ein Praktikum ohne Programmierkenntnisse ist so viel wertvoller als jede einzelne Klasse, weil Sie einige der Fallstricke der Zusammenarbeit mit Menschen kennenlernen.
Kzqai,

10

Bildung gibt Ihnen eine Grundlage, auf der Sie aufbauen können, bereitet Sie jedoch nicht auf die Softwareentwicklung im wirklichen Leben vor. Das kommt mit Erfahrung. Ich war definitiv in der gleichen Situation wie Sie, als ich anfing, für einen Job zu programmieren. Solange Sie lernen, Bücher lesen, Blog-Beiträge verfassen und das , was Sie lernen, in Ihrem Job anwenden , werden Sie sich verbessern. Der Schlüssel wendet an, was Sie lernen. Nur lesen hilft nicht, man muss aktiv neues Wissen anwenden.


+1 für die Anwendung des Gelernten. Ich habe vergessen, diesen Teil zu erwähnen. :)
Adam Lear

7

Ich dachte definitiv, ich wäre es, aber ich war es nicht.

Vertrauen Sie mir, irgendwann in Ihrer Karriere werden Sie zurückkehren und an einem Code arbeiten, den Sie geschrieben haben, den Sie aber seit Jahren nicht mehr angerührt haben. Sie möchten unbedingt, dass kein anderer professioneller Entwickler diesen Code jemals sieht oder weiß, dass Sie ihn geschrieben haben. Das heißt, Sie wachsen.


4

In gewisser Weise ist das Erlernen einer Programmiersprache mit dem Erlernen einer natürlichen Sprache vergleichbar. In der Schule kann man einiges an Theorie lernen. Sie lernen die Grammatik und die Grundelemente des Wortschatzes und finden Sie ziemlich gut, bis Sie sich in einer echten Konversation mit einem Muttersprachler befinden und dann völlig verloren sind.

Die Art und Weise, wie Sie die Sprache wirklich lernen, bis Sie in der Lage sind, sich in einem Gespräch mit Muttersprachlern zu behaupten, besteht darin, die Sprache tatsächlich zu jeder Stunde und jeden Tag zu sprechen. Dies bedeutet normalerweise, irgendwo zu leben, wo es gesprochen wird. Und dann passiert etwas Interessantes. Obwohl das, was Sie in der Schule gelernt haben, an und für sich auf den Straßen eines fremden Landes wertlos ist, bietet es Ihnen eine gute, solide theoretische Grundlage, die das eigentliche Erlernen der Sprache erheblich erleichtert. (Das war zumindest meine Erfahrung mit Spanisch.)

Das Programmieren ist genauso. Was Sie in der Schule lernen, bereitet Sie nicht auf die Arbeit vor, die Sie als echter Programmierer erledigen müssen, aber (vorausgesetzt, Sie befinden sich in einer kompetenten Schule, die im Interesse der Popularität nicht alles bescheuert), hilft es Ihnen, sich vorzubereiten Wenn Sie lernen möchten, ein guter Programmierer zu sein, sind die grundlegenden Konzepte, die Sie benötigen, bereits vorhanden. (Das war zumindest meine Erfahrung mit dem Programmieren.) :-)


2
Gute Antwort, aber ich würde nicht sagen, dass "das, was ich in der Schule gelernt habe, wertlos ist". Ich weiß jedoch, was Sie anstreben.
Gablin

4

Viele gute Programmierer haben einen Universitätsabschluss in Informatik, meistens die gleichen, die sie gemacht haben.

Die Sache mit der Informatik ist, dass es, wie oben diskutiert, nicht dasselbe ist wie Programmieren. Viele Dinge, die ich an der Universität studiert habe, auf die ich im Grunde genommen nicht vorbereitet war - es gab viele Dinge, die mir wie akademischer Quatsch vorkamen, als ich Vorträge darüber hörte, aber ein paar Jahre später wünschte ich mir, ich würde es tun Ich hatte dem mehr Aufmerksamkeit geschenkt, als ich wieder ein paar Sachen lernte, die ich als nutzlos abgelegt hatte. Ich denke sogar, dass man ein paar Jahre Programmieren in einem kommerziellen Umfeld brauchen könnte, bevor man ein Informatik-Studium beginnt, wenn man das möchte.

Außerdem denke ich, dass man an der Universität oft nicht unbedingt lernen kann. Viele Dinge, die ich versehentlich gelernt habe oder die ich von anderen Entwicklern gelernt habe, waren sicherlich Dinge, die meine Dozenten und Studenten an der Universität wussten, aber ich hatte keine Ahnung, dass es nützlich wäre, sie zu verstehen. Die Befragung von Menschen über Probleme, die Sie haben, während Sie lernen, etwas zu tun (und das gilt wirklich für alles), macht den Lernprozess reibungsloser und weniger schmerzhaft. Die meisten Dinge, die Sie für sich selbst oder von anderen Menschen lernen können - da viele der Lektionen, die ich für mich selbst gelernt habe, aus meinen schmerzhaften Fehlern gelernt wurden, würde ich mich dafür entscheiden, von anderen Menschen zu lernen, wenn ich kann ...


2

Ich würde Brian Hurts Beitrag zitieren

Informatik und Programmierung sind getrennte Dinge

Wer bezieht sich auch auf Joel Spolskys Undergraduate-Programmierung und brillanten Artikel mit dem Titel Who Killed the Software Engineer

All diese Diskussionen beschreiben die Realität ziemlich gut und beantworten meiner Meinung nach Ihre Frage mit "Nein", da die Universität Sie nicht zu einem guten Programmierer machen wird. Sie müssen sich selbst zu einem guten Programmierer machen.

Ich habe keinen Abschluss in CS, aber ich programmiere und entwickle seit 8 Jahren professionell Software. Alle Programmierkenntnisse, die ich habe, habe ich selbst gelernt.


1

Nein, ich gab vor, ein Programmierer zu sein und habe es auf die harte Tour gelernt. Ich habe meinen ersten Kunden als Freiberufler bekommen und habe sehr schlecht mit C / C ++ gekämpft und schließlich gewonnen. Ich erinnere mich, dass es einige Stunden gedauert hat, um zu verstehen, dass das Ausführen von malloc auf einer Struktur nicht ausreicht, um den Zeigern in der Struktur auch Speicher zuzuweisen.


Was war dein ursprünglicher Abschluss? Hat sich Ihre harte Arbeit gelohnt?
Rwong

Ich bin ein Elektroniker, ich war ziemlich gut in Matalb, aber mit sehr geringen Kenntnissen in C / C ++ und Java. Ob Sie es glauben oder nicht, mein erster echter Programmierjob bestand darin, Treiber für Windows CE zu schreiben und auf dieses Gerät zu portieren : eurotech.com/EN/innovation.aspx?pg=wearable . Ich hatte ein wenig Hilfe von der Firma, aber im Grunde arbeitete ich alleine zu Hause und verlor viel Zeit für sehr kleine Dinge. Aber ich habe bestimmt nichts vergessen! Ich lerne noch, aber jetzt besitze ich ein Startup, das ein relativ großes Programm erstellt ... also hat es sich ausgezahlt.
Martjno

1

Ich war ein ziemlich guter Programmierer, als ich meine Universität abschloss. Ich hatte auch Monate vor meinem Abschluss ein tolles Jobangebot (das ich für ein noch cooleres ablehnen konnte).

Der Schlüssel war, dass ich während des Schuljahres eine Menge Arbeit als Hobbyist, mit einem Webentwicklungsjob und hochwertigen Sommerpraktika bei IBM ("ExtremeBlue Speed-Teams" und das ExtremeBlue-Programm) geleistet hatte. Gute preprofessional Erfahrung werden lassen Sie ein wenig von dem Zeug Einstieg überspringen nach dem Studium.

(Das heißt, ich konnte in den ersten sechs Monaten bei einem Real Job (tm) noch viel besser programmieren. Nicht, dass ich danach fertig gewesen wäre, aber zu diesem Zeitpunkt zeigte sich wirklich viel.)


1

Ich kann Ihnen eine umgekehrte Antwort geben, da ich direkt von der High School zur Arbeit kam. Ich fing an, als selbstgedachter Programmierer zu arbeiten, und war fast sofort produktiv bei dem Projekt, das mir meine Arbeitgeber geben. Ich hatte einige Kollegen mit einem Abschluss in Informatik, die überhaupt nicht produktiv waren.

Im Laufe der Zeit haben einige diplomierte Mitarbeiter ihre Fähigkeiten erheblich verbessert, während andere dies nicht tun, und das hatte nichts mit ihrem GPA zu tun.


1

Die Universität lehrt Sie nicht, ein Programmierer der realen Welt zu werden. Ich vermute, dass dies bei vielen Jobs im Vergleich zu ihren Studiengängen ähnlich ist. Ich würde nicht sagen, dass ich mit meinem Abschluss nichts anfangen konnte, aber es war weitaus weniger nützlich, als 4 Jahre tatsächlich im Job zu verbringen.

Aber es ist okay. Für jeden Job, den ich angefangen habe, war ich wahrscheinlich unterqualifiziert. Wenn Sie sich Ihrer Fähigkeiten sicher sind und sich dem Lernen verschrieben haben, können Sie aufsteigen und den Job erledigen.


1

Ich glaube nicht, dass ich irgendwelche Fakten über das Programmieren im Allgemeinen gelernt habe, denen ich im College zumindest nicht ausgesetzt war. Klar, ich habe hier und da neue Programmiersprachen aufgegriffen, neue APIs, neue Codebasen und neue Tools gelernt, aber die allgemeinen Konzepte waren alle gleich nach der Schule vorhanden.

Was Sie mit der Erfahrung lernen, ist eine Art Instinkt, der Ihre Eingrenzung in einen gemeldeten Fehler beschleunigt oder Sie direkt zu der robustesten Methode führt, um neuen Code zu schreiben. Wenn Sie neu sind, können Sie immer noch denselben Fehler beheben oder dieselbe Funktion implementieren, aber es dauert länger und es ist wahrscheinlicher, dass Sie zurückkehren müssen, um ein unvorhergesehenes Problem zu beheben.

Deshalb ist es wichtig, dass erfahrene Kollegen Sie betreuen. Gehen Sie zu ihnen und sagen Sie: "So sollte das wohl gehandhabt werden. Können Sie sich einen besseren Weg vorstellen?" Das gibt Ihnen den Vorteil, es selbst herauszufinden und aus den Erfahrungen anderer zu lernen.


0

Ich war ein besserer Programmierer als meine Universitätslehrer.

Dann lernte ich großartige Programmierpraktiken, als ich anfing zu arbeiten.


0

Ein guter Programmierer lernt immer ... er lernt einen anderen Weg, um dies zu tun, oder einen besseren Weg, um dies zu tun. Was auch immer Ihre Programmierkollegen Ihnen beibringen müssen, ich würde zuhören.


0

Eines der Dinge, die niemand erwähnt hat, ist, dass die Probleme, die Sie in der Schule lösen müssen, absichtlich niedergeschlagen sind, damit Sie leicht erkennen können, wie Sie als spezifische Technik eingesetzt werden, die Ihnen beigebracht wird. In der Regel wissen Sie, welche Technik Sie für dieses spezielle Problem anwenden sollen, da es sich um die Technik handelt, die Sie gerade im Unterricht behandelt haben. Ganzsemesterprojekte sind etwas besser, aber im Vergleich zur realen Welt in Umfang und Komplexität immer noch begrenzt.

Projekte im realen Leben sind chaotisch und entwickeln sich über Jahre hinweg weiter (unsere Software ist über zehn Jahre alt und hat sich in dieser Zeit kontinuierlich verändert) und werden von vielen verschiedenen Menschen mit vielen verschiedenen Fähigkeiten berührt. Möglicherweise berühren Sie noch eine 10 Jahre alte Datenbankversion und können keine neueren SQL-Techniken verwenden. Sie verwenden möglicherweise ein Tool, das vor 8 Jahren großartig war, das Sie aber in der Schule nicht gelernt haben, weil es von etwas anderem abgelöst wurde. Aber das Unternehmen möchte nicht monatelange Entwicklungsarbeit auf sich nehmen, um es vollständig zu ersetzen.

Sie stecken in einer Welt fest, in der die Zeit für die Entwicklung stark von dem abhängt, wofür der Kunde bezahlt, und von den manchmal (normalerweise) künstlichen Fristen.

Möglicherweise müssen Sie Tools verwenden, nach denen der Client speziell gefragt hat. Möglicherweise haben Sie vage oder wenig sinnvolle Anforderungen. Möglicherweise haben Sie es mit einem sehr komplexen Geschäftsbereich zu tun, von dem Sie nichts wissen und daher nicht einmal beurteilen können, ob die Anforderungen sinnvoll sind.

Die Probleme der realen Welt sind in keiner Weise vergleichbar mit den netten, sauberen Problemen, die sie dir in der Schule bereiten. Wenn Sie die meiste Zeit des ersten Jahres nicht verwirrt sind und sich fehl am Platz fühlen, würde ich mir Sorgen um Sie machen.


0

Es ist schlimmer als das ... nach ein paar Jahren in diesem Job werden Sie sich ziemlich gut fühlen bei dem, was Sie gelernt haben. Aber dann werden Sie den Job wechseln und Ihr neues Unternehmen (oder vielleicht sogar eine neue Gruppe innerhalb desselben Unternehmens) wird die Dinge anders angehen, und Sie werden das Gefühl haben, wieder ganz oben zu stehen. Es wird unterschiedlichen Code, unterschiedliche Codierungsstandards, unterschiedliche Tools und unterschiedliche Prozesse geben, und nach zwei Tagen werden Sie sich fragen, ob Sie bei Ihrem letzten Job überhaupt etwas gelernt haben. Sie werden dieses Mal schneller über das Gefühl hinwegkommen, dass kein Fisch mehr im Wasser ist, aber es wird immer noch länger dauern, als Sie möchten.

Bei jedem Jobwechsel gibt es eine Anpassungsphase. Mit zunehmender Erfahrung wird es kürzer, aber es ist immer da.

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.