Ich habe einen Abschluss in Informatik, aber ich habe nicht das Gefühl, programmieren zu können

1050

Ich habe einen Abschluss in Informatik, aber ich sehe Websites wie Stack Overflow und Suchmaschinen wie Google und weiß nicht, wo ich überhaupt anfangen würde, so etwas zu schreiben. Während eines Sommers hatte ich die Gelegenheit, als iPhone-Entwickler zu arbeiten, aber ich hatte das Gefühl, dass ich hauptsächlich Bibliotheken zusammenklebte, die andere Leute mit wenig Verständnis für die Mechanik unter der Motorhaube geschrieben hatten.

Ich versuche mein Wissen zu verbessern, indem ich Algorithmen studiere, aber es ist ein langer und schmerzhafter Prozess. Ich finde Algorithmen schwierig und bei der Geschwindigkeit, mit der ich lerne, wird ein Jahrzehnt vergangen sein, bevor ich das Material im Buch beherrsche. Angesichts meiner aktuellen Situation habe ich einen Monat auf der Suche nach Arbeit verbracht, aber meine Kenntnisse (C, Python, Objective-C) sind relativ gering und auf dem lokalen Markt, auf dem C #, Java und die Webentwicklung viel höher sind, nicht so wünschenswert gefragt. Das heißt nicht, dass es keine C- und Python-Möglichkeiten gibt, aber sie verlangen in der Regel mehr als drei Jahre Erfahrung, die ich nicht habe. Mein GPA ist in Ordnung (3.0), aber nicht hoch genug, um sich bei großen Unternehmen wie IBM zu bewerben oder für ein Abschlussstudium zurückzukehren.

Grundsätzlich habe ich einen Abschluss in Informatik, aber ich habe nicht das Gefühl, dass ich gelernt habe, wie man programmiert. Ich dachte, ein Unternehmen zu gründen und Vollzeit zu programmieren, würde mir die Chance geben, meine Fähigkeiten zu entwickeln und von denen zu lernen, die erfahrener sind als ich selbst, aber ich kämpfe darum, Arbeit zu finden, und fange an, wirklich frustriert zu werden.

Ich werde mein Netz weiter ausweiten und über die Stadt hinausblicken, in der ich aufgewachsen bin, aber was haben andere Menschen in einer ähnlichen Situation versucht? Ich habe hart gearbeitet, aber nicht das Selbstvertrauen, alleine auszugehen und meine eigene App zu schreiben. (Das heißt, Sie werden ein Indie-Entwickler auf dem iPhone-App-Markt.) Wenn nichts auftaucht, muss ich überlegen, ob ich populärere Fähigkeiten aufrüsten und erlernen oder etwas probieren, das nur geringfügig mit IT zu tun hat, aber angesichts all der Anstrengungen, die ich unternommen habe wie aussteigen.

wp123
quelle

Antworten:

533

Der beste Weg, um das Programmieren zu lernen, ist das Schreiben von Programmen.

Zwei Vorschläge:

  • ein Spiel entwickeln
  • Entwickeln Sie eine Website

Algorithmen sind zwar nützlich und sollten verstanden werden, spielen jedoch nach dem Software-Design eine zweite Rolle. TDD / Entwurfsmuster / Architektur / Refactoring / Komponententests / Der Prozess des Zusammenstellens von Code / usw. ist in der Regel eine weitaus wichtigere Fähigkeit.

Auch viel besser, dies in Ihrer Freizeit zu tun. Warten Sie nicht, um dieses Zeug bei der Arbeit auszuarbeiten. Ich finde, dass die Leute, die dazu neigen, besser zu werden, diejenigen sind, die zu Beginn ihrer Karriere die Anstrengungen unternehmen, um ihre Fähigkeiten in ihrer eigenen Zeit zu entwickeln. Normalerweise, weil sie eine echte Leidenschaft für Softwareentwicklung haben

  • Eine weitere Sache ist " Lesen Sie Bücher und Proben " und schämen Sie sich nicht zu fragen. Wenn du lernen willst, solltest du fragen :)
Keith Nicholas
quelle
70
+1 Einverstanden. Und wenn Sie dies nicht in Ihrer Freizeit tun möchten, ist dies möglicherweise nicht der beste Karriereweg für Sie. Wenn Sie jetzt Dinge zusammenstellen, können Sie ein Portfolio aufbauen, das Ihren GPA ergänzen kann.
Chris
68
@ Chris, -1. Das ist wie zu sagen, dass ein Anwalt, der in seiner Freizeit nicht ehrenamtlich für Bedürftige arbeitet, in der falschen Karriere ist. Viele Programmierer, die ich kenne, sollten weniger Zeit für das Programmieren und mehr Zeit für fast alles andere aufwenden.
21
Tatsächlich werden viele Anwälte beim Zähneschneiden schlecht bezahlt und müssen viele zusätzliche Stunden aufwenden, um weiterzukommen.
22
Sie können einen Anwaltsjob nicht wirklich mit einem Programmiererjob vergleichen. Mit dem Programmieren können Sie Ihre eigenen Fähigkeiten erwerben. Sie brauchen keinen Arbeitgeber oder Kunden, um diesen Teil zu verbessern.
31
Wirklich, Sie müssen aufhören zu denken, dass das Programmieren etwas Besonderes ist. Anwälte können wie wir selbstständig arbeiten / lernen. Sie beginnen vielleicht mit schlecht bezahlten Jobs und arbeiten lange, aber viele Programmierer auch ... Die Zeile "Wenn Sie nicht als Hobby programmieren, sollten Sie kein Programmierer sein" ist wirklich sehr subjektiv.
388

Ich hatte das Gefühl, hauptsächlich Bibliotheken zusammenzukleben, die andere Leute geschrieben hatten

Ich verstehe zwar, warum Sie das Gefühl haben, dass dies keine "echte Programmierung" ist, aber die Wahrheit ist, dass die Integrationsarbeit einen signifikanten Prozentsatz der typischen Arbeitsbelastung eines Unternehmensprogrammierers ausmacht. Deine Erfahrung ist vielleicht ein bisschen wertvoller als du denkst :)

dbyrne
quelle
126
+1 für Kleber. Niemand würde eine Gruppe von Fachleuten einstellen, um ein neues Zuhause zu bauen, und von ihnen erwarten, dass sie dabei brandneue Techniken für den Hausbau erfinden. In der Tat würde jeder, der daran interessiert ist, Risiko und Budget zu managen, es wahrscheinlich vorziehen, dies nicht zu tun.
Dan Bryant
14
Ich bin damit einverstanden, dass es einige Randfälle gibt, aber ich würde sagen, dass 75-80% der Programmieraufträge da draußen so sind, dass Sie nur Bibliotheken zusammenkleben.
15
Und nichts ist falsch daran, Bibliotheken einfach zusammenzukleben. Das macht Sie produktiv!
10
Auf jeden Fall besteht 90% meiner Arbeit darin, den Code anderer Leute (Bibliotheken oder Legacy-Code) zusammenzufügen oder älteren Code zu pflegen. Aber ich verbringe meine zusätzliche Zeit damit, Kleinigkeiten zu lernen, so dass ich jetzt weiß, wie viele dieser Bibliotheken funktionieren, und ein viel tieferes Verständnis dafür habe, was sich im Allgemeinen unter der Haube abspielt. Seien Sie ein lebenslanger Lerner und Sie werden alles irgendwann lernen.
CodexArcanum
53
Wenn ich keine Bibliotheken zusammenklebe, erstelle ich normalerweise Bibliotheken, die ich später zusammenkleben werde.
238

Zunächst einmal vielen Dank für eine äußerst ehrliche Frage. Es gibt eine Reihe von Möglichkeiten, um die anstehenden Probleme zu lösen. Hier sind ein paar Tipps, die ich in der Vergangenheit als sehr hilfreich erachtet habe und die ich weiterhin verwende, um mein Wissen zu erweitern.

  1. Lernen, lernen und noch mehr lernen. Dies ist wahrscheinlich der wichtigste Tipp, den ich Ihnen geben kann. Höre niemals auf zu lernen . Eine Sprache zu kennen ist gut, mehrere zu kennen ist sogar noch besser. Kenntnisse in anderen Sprachen machen Sie zu einem besseren Programmierer und erleichtern die Bewältigung bestimmter Aufgaben. Außerdem können Sie die allgemeinen Datenstrukturen besser kennenlernen.

  2. Fangen Sie klein an .

  3. Starten Sie in Ihrer Freizeit ein Hobbyprojekt. Tun Sie nichts, was Sie ziemlich leicht erreichen können. Nehmen Sie ein Projekt an, bei dem Sie keine Ahnung haben, wo Sie anfangen sollen. Wirf dich in die Tiefe. Dies hat den Vorteil, dass Sie Dinge lernen, von denen Sie nie gewusst haben, dass sie existieren, und wenn Sie es abschließen, werden Sie einen immensen Stolz und eine enorme Zufriedenheit verspüren. Das ist es, was mich am Laufen hält.

  4. Haben Sie eine echte Leidenschaft für das, was Sie tun. Obwohl die Leute mir in diesem Punkt nicht zustimmen werden. Ich glaube nicht, dass Sie sich in diesem Bereich auszeichnen können, wenn Sie es einfach für einen 9-5-Job halten. Es muss eine Leidenschaft geben, es zu tun.

  5. Helfen Sie anderen Menschen auf SO! Der beste Weg, dies zu verstehen, besteht darin, zu versuchen, es anderen Menschen beizubringen.

  6. Studieren Sie die Programme anderer Personen und versuchen Sie herauszufinden, wie sie funktionieren. Implementieren Sie dann ähnliche Techniken in Ihre eigenen Programme. Versuchen Sie, es zu lesen und sich ein Bild davon zu machen, und machen Sie es dann selbst anhand dieses Verständnisses, anstatt es zu kopieren und einzufügen.

  7. Bleib dran . Die Dinge können manchmal sehr frustrierend sein, aber sehr lohnend, wenn sie erledigt sind. Wenn Sie etwas nicht verstehen, machen Sie eine Pause, klären Sie Ihre Gedanken und versuchen Sie es erneut. Fragen Sie uns bei SO! Wir sind ein williger Haufen :)

  8. Hören Sie nie auf, neue Technologien zu lernen.

  9. Lies ein paar Bücher. Ich verstehe, als Student hättest du eine Tonne gelesen. Hier sind ein paar praktische Bücher, die Sie vielleicht als nützlich erachten… hoffentlich - Der Pragmatische Programmierer: Vom Gesellen zum Meister - Vollständiger Code: Ein praktisches Handbuch zur Softwarekonstruktion

Russell Dias
quelle
13
Fügen Sie Clean Code zu Ihren zu lesenden Listen hinzu, es ist ziemlich gut.
7
"Eine Sprache zu kennen ist gut" -> falsch. Eine Sprache zu kennen ist nicht genug. Mehrere Sprachen zu beherrschen ist gut, noch mehr Sprachen zu lernen ist noch besser.
Denilson Sá Maia
10
"Klein starten" bezieht sich nicht nur auf die Auswahl ansprechbarer Projekte, sondern auch auf den Beginn der Implementierung funktionsfähiger Teile innerhalb eines Projekts. Ein Projekt von mir begann mit einem kleinen Experiment in Parallaxe, und ich dachte, "das sieht aus wie ein ziemlich cooles Sternenfeld für den Hintergrund eines Spiels". Füge ein Schiff hinzu ... füge ein Alien hinzu ... füge ein paar Raketen, Tastatursteuerung und Kollisionserkennung hinzu (jedes einzelne Problem für sich) und bald hatte ich ein kommerzielles Spiel, für das ich es verkauft habe (was ich dachte) die Zeit) ein gutes Stück Geld. Auf der anderen Seite ist "Write a Game" eine vage, unzugängliche Aufgabe. Stück für Stück.
mmc
2
@ Denilson OP hat erklärt, dass sie nicht das Gefühl hat, programmieren zu können. Es ist gut, eine Sprache für jemanden zu kennen, der sich in Bezug auf die Programmierung nicht sicher ist. Meine Liste gilt nur für diesen Kontext.
7
@ Denilson, hätten Sie mehrere Sprachen lernen können, ohne zuerst eine Sprache zu lernen?
Péter Török,
141

Starte ein persönliches Projekt. Das Problem mit der Schule ist, dass das komplizierteste, was Sie dort gemacht haben, ein Projekt war, das 15 Wochen bis zu einem Jahr dauerte und an dem ein paar andere Personen beteiligt waren. Die Problemdomäne war gut verstanden (Ihr Professor hat Ihnen keine Aufgaben gegeben, die nicht genau in Ihr Semester passten.) Dies ist kein Luxus, den sich die reale Welt leisten kann.

Wenn Sie etwas Wesentliches tun müssen, von Anfang bis Ende, von dem Sie begeistert sein können, beginnt Ihr Gehirn, sich um den Prozess zu kümmern. Solange dies nur eine Karriere ist und Sie keine Liebe dazu haben, werden Sie immer noch das Gefühl haben, dass Sie es noch nicht geschafft haben.

Sniggerfardimungus
quelle
Ich habe meine Tage zwischen 1) dem Senden von Lebensläufen 2) dem Lesen von Büchern aufgeteilt, aber es scheint, als ob 2) es besser wäre, Code zu schreiben. Ich denke, viele Arbeitgeber wollen nicht das Risiko eingehen, jemanden mit sehr geringer Branchenerfahrung einzustellen, so dass ein Praktikum, das ich nicht gemacht habe, momentan sehr attraktiv aussieht.
5
+1. Ich stimme vollkommen zu. Starten Sie eine kleine App und fügen Sie die gewünschten Funktionen hinzu. Wenn das Gebäude weitergeht und Sie anfangen zu erkennen, was noch getan werden kann, können Sie es hinzufügen.
11
"Der Problembereich war gut verstanden (Ihr Professor hat Ihnen keine Aufgaben gestellt, die nicht genau in Ihr Semester passten.)" Dies ist eines der größten Probleme im Informatikunterricht. Es gibt einige CS- oder Software-Engineering-Programme, die sich mit diesem Problem befassen, aber die meisten lassen Sie nicht über den Tellerrand hinaus denken. Sie müssen wirklich Ihre eigenen Projekte übernehmen. Wenn Sie nicht wissen, wie Stackoverflow erstellt wurde, erstellen Sie selbst einen Klon. Sie werden viel mehr lernen, als Ihnen jede Klasse beibringen kann.
Matt Olenik
exzellente Idee. Aber fangen Sie mit etwas Kleinem mit Kernfunktionen an und fügen Sie es langsam hinzu. Auf diese Weise ist es motivierender, als zu versuchen, eine riesige, perfekte App zu erhalten. Ich denke auch, dass Sie nie so viele Informationen und Tutorials finden werden wie die Fülle an Informationen in Büchern
Xster
@Xster, das meine ich. Die Aufgabe, eine "Frage und Antwort" -Anwendung mit sehr grundlegenden Funktionen zu schreiben, ist ein guter Anfang.
Matt Olenik
106
  1. Beginnen Sie mit einer dieser gefragten Sprachen und verwenden Sie ein Projekt, wie K. Nicholas sagt.
  2. Messen Sie sich nicht an StackOverflow. Das wird dich unnötig entmutigen.
Smandoli
quelle
81
+1 für # 2 - vergleiche dich nicht mit dem Wissen einer Menschenmenge.
gf
8
StakOverflow selbst ist ein virtuoses Produkt. Ganz zu schweigen davon, dass es Menschen gibt, die mit jahrzehntelanger Erfahrung in einer Vielzahl von Produkten arbeiten.
6
Ich würde es nicht für schlecht halten, sich an StackOverflow zu messen, hier gibt es eine Menge kluger Leute. Einige sind schlauer als Sie jemals sein werden. Dies sind jedoch die Menschen, die Sie dazu bringen, weiter zu lernen.
15
Hey, ich weiß warum ich SO süchtig bin! Es ist aus einem Dutzend Gründen großartig. Aber es ist demütig, ständig all den Dingen ausgesetzt zu sein, die man nicht kennt. Man muss ein bisschen vorsichtig sein, um sich nicht entmutigt zu fühlen, das ist alles.
@Georg - Gutes Game-of-Go-Gravitar. KGS Smandoli
72

Ich kann Ihnen bei Ihrer Arbeitssituation nicht helfen, aber ich hoffe, ich kann Ihnen helfen, Ihre Fähigkeiten zu entwickeln und Ihre Gefühle in Bezug auf Ihre eigenen Fähigkeiten in die richtige Perspektive zu rücken.

Ich habe einen Abschluss in Informatik, aber ich habe nicht das Gefühl, programmieren zu können.

Es ist möglich, dass sich Ihre Instruktoren für etwas schämen müssen. Es ist auch möglich, dass Ihr Gefühl, nicht zu wissen, wie man programmiert, natürlich und für diese Phase Ihres Lebens und Ihrer Ausbildung angemessen ist. Hier sind einige Ideen, die helfen können:

  • Vielen Arbeitgebern ist es egal, welche Kurse auf Ihrem Zeugnis stehen oder wie hoch Ihr GPA ist. Stattdessen möchten sie wissen, was Sie können und vor allem, was Sie gebaut haben. Für einen guten Job ist das, was Sie erstellt haben, wichtiger als die Technologie (C, C #, was Sie haben) in Ihrem Lebenslauf.

  • Wenn Sie während Ihrer Ausbildung nicht die Gelegenheit hatten, eine Reihe interessanter Projekte aufzubauen, schämen Sie sich für Ihre Ausbilder. Aber Sie können diese Projekte jetzt erstellen. Durchsuchen Sie Websites nach interessanten Problemen. Unsere Studenten im zweiten Semester beenden gerade die "Liedersuche" - wir haben eine große Anzahl von Texten für eine Website erstellt, sie erstellen einen invertierten Index, Sie geben Schlüsselwörter ein und es zeigt Ihnen die Texte, die diese Wörter enthalten, im Kontext. Es ist nicht Google, aber es basiert auf denselben Prinzipien mit ähnlichen Datenstrukturen, und Sie können jetzt damit beginnen, es zu erstellen.

Ich habe hart gearbeitet, aber nicht das Selbstvertrauen, selbstständig zu arbeiten und meine App zu schreiben.

Vielleicht haben Sie nicht hart an den richtigen Problemen gearbeitet? Es ist gut, Probleme damit zu finden

  • Sind offen
  • Haben Sie mehr als eine gute Lösung
  • Haben Sie viele schlechte Lösungen

Wenn Sie diese Art von Problemen angehen, lernen Sie, Entscheidungen zu treffen, mit den Konsequenzen zu leben, und wenn die Dinge nicht funktionieren, gehen Sie zurück und überdenken Sie Ihre Entscheidungen. Sie lernen mehr aus Ihren Fehlern als aus Ihren Erfolgen, aber Sie gewinnen mehr Vertrauen aus Ihren Erfolgen als aus Ihren Fehlern.

Gute Probleme - mit Eigenschaften wie den oben aufgeführten - sind wie Gold, mit der Ausnahme, dass sie nichts verlieren, wenn Sie ein gutes Problem von jemand anderem bekommen. Durchsuche das Web nach guten Problemen und übe, übe, übe. Wenn Sie mit den Euler-Problemen beginnen müssen, sind sie für Anfänger in Ordnung. Bald möchten Sie jedoch kleine oder mittelgroße Projekte erstellen, die Sie für richtig cool halten . Wenn Sie von etwas begeistert sind, das Sie gebaut haben, werden Sie potenzielle Arbeitgeber beeindrucken. Wenn Sie nicht begeistert sind, ist es schwierig, Sie einzustellen.

Peter Norvig berichtet, dass es zehn Jahre dauert, um Experte zu werden . Natürlich fühlen Sie sich nicht gleich nach Ihrem Abschluss als Experte. Ich werde Sie auf ein kleines Geheimnis hinweisen: Die meisten Mitglieder der Harvard-Fakultät (ich war eine für acht Jahre) haben das Gefühl, dass sie nicht wirklich zu Harvard gehören, sie wissen nicht genug, und es muss ein Irrtum gewesen sein Sie wurden eingestellt. Diese Art von Gefühl ist sehr, sehr häufig bei Menschen, die den Übergang von der Schule zum Arbeitsplatz oder von einer Art von Beruf zur anderen vollziehen. Es ist so verbreitet, dass es einen Namen dafür gibt: "Das Betrüger-Syndrom".

Auch wenn Sie Ihren Abschluss haben, wird Ihre Universität immer noch mit Ihnen sprechen. Wenn Sie wirklich gute Professoren hatten, interessieren sie sich wahrscheinlich immer noch für Sie. Es ist ihnen auf jeden Fall wichtig, dass eine ihrer Schülerinnen einen B-Durchschnitt erreicht hat und dennoch das Gefühl hat, dass sie die Grundfertigkeiten ihres Fachs nicht beherrscht. Suchen Sie sich also einen oder zwei der energischsten und sympathischsten Professoren aus Ihrem Programm aus und holen Sie sich Hilfe bei der Suche nach guten Problemen. Dann setzen Sie sich verantwortlich für Ihre Fähigkeiten, Ihr Wissen und Ihre Gefühle über sie. Bauen Sie jeden Tag ein kleines Dingsbums und verschwenden Sie Ihre wertvolle Bauzeit nicht mit etwas, das nicht wirklich cool ist. Ich verspreche, Sie werden irgendwann wieder ein Gefühl der Begeisterung für das Programmieren entwickeln, und wenn Sie dies tun, werden Sie auch in der Lage sein, Selbstvertrauen aufzubauen.

Norman Ramsey
quelle
Ich muss zustimmen. Gehen Sie raus und beweisen Sie Ihren potenziellen Arbeitgebern, dass Sie C, Python, Objective-C KENNEN und eine unabhängige Anwendung erstellen, die etwas bewirkt. Die Leute entscheiden sich oft für Spiele, weil sie je nach Spiel ein herausforderndes Design und eine anspruchsvolle Implementierung mit sich bringen können und viele der Bibliotheken um sie herum kostenlos sind. Wenn Sie ein Spiel für Windows
erstellen
Der Teil "Die meisten Mitglieder der Harvard-Fakultät (ich war eine für acht Jahre) haben das Gefühl, dass sie nicht wirklich zu Harvard gehören, sie wissen nicht genug, und es muss ein Fehler gewesen sein, dass sie eingestellt wurden." Erinnerte mich of Dunning-Kruger-Effekt =)
2
+1 um etwas zu bauen: es hebt dich von der Masse ab, besonders wenn es etwas ist, das nützlich ist.
5
@Alex, geh niemals durch HR. Wenn Sie Glück haben, kennt jemand, den Sie kennen, jemanden, in dem Sie arbeiten möchten.
Norman Ramsey
1
Sie wissen, jetzt, wo Sie es erwähnen, habe ich normalerweise so Jobs gefunden. Ich denke, ich sollte mich in Zukunft mehr auf Jobs innerhalb (oder am Rande) meines Netzwerks konzentrieren und mir die Gleichgültigkeit der Keyword-Scanner ersparen.
59

Es gab eine Szene in einer alten Law & Order, in der sich eine Staatsanwältin darüber beschwert, dass sie nichts über ihre Arbeit an der juristischen Fakultät gelernt und nichts über die reale Welt gelernt hat. Der Professor, dem sie sich beschwert, antwortet: "Es ist eine Rechtsschule, keine Rechtsanwaltsschule."

Gleiches gilt für die Informatik. Vielleicht haben Sie nicht gelernt, sofort zu einem Projekt beizutragen, das Sie online sehen, aber Sie haben wahrscheinlich die Grundlage geschaffen, die Sie brauchen, um langfristig erfolgreich zu sein.

Holen Sie sich zuerst einen Job, jeden Job. Autark werden. Insbesondere in der gegenwärtigen Wirtschaft würde ich niemals einen Kandidaten für die Arbeit in einer Buchhandlung oder was auch immer beschuldigen, während er nach einer angemesseneren Beschäftigung sucht. Ich habe Fragen an Leute, die herumsitzen und nichts tun.

Finden Sie ein Projekt, ein beliebiges Projekt. Auf github.com gibt es zum Beispiel viele anwendbare Projekte.

Die gute Nachricht ist, dass es viel früher als Sie denken, niemanden interessieren wird, wo Sie zur Schule gegangen sind, was Ihr GPA war oder so etwas.

Halte durch! Es kann schwierig werden, aber eines Tages werden Sie sich über die Erfahrung freuen.

David M
quelle
8
Wir haben vor kurzem eine Diskussion im Job darüber. Glauben Sie wirklich, dass es Ihrem Lebenslauf überhaupt helfen wird, einen Job zu finden, der nichts mit Ihrer Karriere zu tun hat? Wenn Sie aus finanziellen Gründen Früchte sammeln müssen, okay, aber ich glaube nicht, dass es einen Platz in Ihrem Lebenslauf hat, wenn Sie versuchen, eine Karriere als Programmierer aufzubauen. Wenn Sie keine finanziellen Engpässe haben, sollten Sie besser an einem Projekt ohne wirtschaftlichen Ausgleich teilnehmen oder versuchen, ein eigenes Unternehmen zu gründen. Die Teilnahme an Open-Source-Projekten oder etwas, das mit dem Feld zu tun hat, ist meiner Meinung nach sogar als Feldtechniker viel besser.
1
@piotr - Du hast es selbst gesagt - "Wenn du keine finanziellen Einschränkungen hast." Jeder frischgebackene College-Absolvent wird dieses Problem haben, es sei denn, er lebt mit Mama und Papa zusammen. Ich stimme David M zu - wenn Sie keine Stelle direkt in Ihrem Bereich finden, besorgen Sie sich eine Stelle. Zeigen Sie, dass Sie nicht nur herumsitzen. Dann, wenn Sie nicht an Ihrem Tagesjob arbeiten, lernen Sie nachts weiter und verstehen Ihr Fachgebiet durch Projekte usw. Natürlich rufen Sie an und senden Sie auch Lebensläufe.
Jeder Job sieht in einem Lebenslauf besser aus als eine Lücke.
Jim C
Zu Beginn Ihrer Karriere ist meiner Meinung nach ein unabhängiger Job besser als kein Job. Ich stimme jedoch nicht zu, dass ein Job in einem Lebenslauf besser ist als kein Job. Wenn es einen guten Grund für "keinen Job" gibt, kann es besser sein als "jeder Job". Ich war freiwillig lange arbeitslos, hatte aber gute Gründe, die ich schlüssig erklären kann.
5
piotr: "Glaubst du wirklich, dass es deinem Lebenslauf überhaupt helfen wird, einen Job zu bekommen, der nichts mit deiner Karriere zu tun hat?" Ja absolut. Ich würde viel mehr an einen Programmierer denken, der während der Ausfallzeit am Bau arbeitet, als an einen Programmierer, der den ganzen Tag zu Hause sitzt. Es zeigt eine Arbeitsmoral. Ich wollte nie ein einsames Genie einstellen, das zu Hause sitzt und allein Code schreibt. Sie neigen nicht dazu, gut mit anderen zusammenzuarbeiten oder den schmutzigen Teil der Arbeit zu erledigen.
59

Haben Sie sich ProjectEuler angesehen ? Ich habe mir Python selbst beigebracht, indem ich die Probleme auf dieser Site gelöst habe. :] Wenn Sie Java oder C # gelernt haben, können Sie das ausprobieren. Außerdem empfehle ich Ihnen, sich auch mit der GUI-Programmierung zu beschäftigen.

Bearbeiten:

Hier ist ein großartiges Thema zu SO für viele Links, die Sie sich für die Codierungspraxis ansehen können:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net

Xavier Ho
quelle
4
Ich habe viel über die Site gehört, hatte aber nie Zeit, mich mit den Problemen zu befassen, aber heutzutage scheint es so, als ob das Einzige, was ich habe, Freizeit ist, also könnte ich genauso gut beschäftigt sein.
44
Project Euler ist für einen Programmieranfänger, der Programmierkenntnisse erwerben möchte, von sehr geringem Nutzen. Es ist darauf ausgerichtet, herauszufinden, wie man mathematische Probleme durch Codierungsalgorithmen löst. Sie können eine Million davon machen, ohne ein guter Programmierer zu werden (wahrscheinlich werden Sie jedoch ein großartiger Mathematiker). Das Schreiben großartiger Algorithmen hat für die meisten Programmierarbeiten keine hohe Priorität.
1
Ich würde Charles nicht zustimmen - Euler wird die Motivation liefern, bestimmte Konzepte zu verstehen und umzusetzen.
Broam
Es als Xavier Ho zu benutzen, scheint interessant und nützlich zu sein. Das heißt, Sie beherrschen die Grundlagen einer neuen Sprache. Ich vermute, dass PE Ihnen entweder beim Programmieren (auf der winzigen Skala) ODER beim Rechnen hilft. Sie können also in beide Richtungen eintauchen. Abgesehen von diesen Punkten stimme ich Charles zu.
6
pythonchallenge.com ist der Schlüssel! Während Euler mathematische Probleme sind, die durch Programmierung gelöst werden müssen, sind Python-Herausforderungen reine Programmierprobleme
Xster
48

Ich vermute anhand Ihres Benutzernamens, dass Sie eine Frau sind ... Wenn nicht, können Sie dies ignorieren oder an Ihren eigenen Standpunkt anpassen.

Nach meiner Erfahrung halten sich Frauen, die ihr Informatik-Studium abgeschlossen haben, für weniger kompetent als ihre männlichen Kollegen mit ähnlichen Fähigkeiten. Man könnte sagen, Frauen sind (oder, um genau zu sein, Frauen, die ich kenne) einfach ehrlicher in Bezug auf ihre eigenen Mängel, aber letztendlich haben sie größere Probleme, sich an Arbeitgeber zu verkaufen.

(Ich habe die meiste Zeit der Graduiertenschule damit verbracht, mich wie ein totaler Misserfolg im Vergleich zu meinen Altersgenossen zu fühlen, und bin als Klassenbester eingestuft worden.)

Mein Rat wäre also, ehrlich zu sich selbst zu bleiben und weiterhin hart an der Entwicklung Ihrer Fähigkeiten zu arbeiten. Aber spielen Sie nicht herunter, was Sie wissen, wenn Sie nach einem Job suchen, und hindern Sie sich nicht daran, sich für "Reach" -Jobs zu bewerben.

  • Finden Sie einen Mentor, der Ihnen eine echte Einschätzung Ihres Wertes gibt.
  • Führen Sie gefälschte Interviews durch und lernen Sie, wie Sie Selbstvertrauen, Energie und Leidenschaft projizieren.
  • Wenn Sie ein Interview landen, sprechen Sie über Ihre persönlichen Projekte und stellen Sie technische Fragen. Ihr Lerndrang und Ihre Energie sind Ihr bestes Kapital.

Nachträglich hinzugefügt:

  • Wenn Sie Ihren ersten Job bekommen, haben Sie keine Angst, über Ihr Gehalt zu verhandeln. Zu viele Frauen nehmen das erste Angebot dankbar an und bekommen nie das, was sie verdienen.
Kena
quelle
Dies bezieht sich ....
Paul Nathan
+1, alles gute Punkte. Ähnliche Gefühle habe ich mit Kolleginnen in der Schule erlebt.
Heather M
6
Nicht nur eine weibliche Sache; Menschen, die entweder bereits kompetent sind oder sehen können, dass sie wachsen müssen (Yay you!), Neigen dazu, ihre eigene Kompetenz mehr in Frage zu stellen als diejenigen, die nicht anfangen, ihre eigene Inkompetenz zu ahnen. Es gibt einen Namen für dieses Phänomen. Der Mahn-Krüger-Effekt. Ihre Erfahrung in der Schule war ein phänomenaler Erfolg, wenn Sie die Schule verlassen und Ihren lebenslangen Lernweg fortsetzen können, egal in welcher Karriere Sie sich befinden. Ich wünsche Ihnen viel Glück !!!
Warren P
1
Warren: Absolut wahr; Viele meiner weniger ausgesprochenen männlichen Kollegen hatten das gleiche Problem. In vielen Kulturen auf der ganzen Welt, auch in Nordamerika, werden kleine Mädchen nicht dazu ermutigt, sich aggressiv zu behaupten und ihre Fähigkeiten so gut zu demonstrieren wie kleine Jungen. Daher habe ich diese Eigenschaft häufiger bei Frauen gesehen. Aber es ist definitiv nicht nur eine weibliche Sache.
Geniale Antwort, da stimme ich voll und ganz zu. Außerdem stellte ich in meiner Abschlussklasse fest, dass die Frauen, die es herausstachen, oft Spitzenstudenten waren. (Das heißt, leider haben viele Frauen, die aus dem Programm ausschied, perfekt kompetente Programmiererinnen gemacht ...)
39

Viele Leute haben gesagt, dass Sie ein persönliches Projekt starten sollten. Meiner Meinung nach ist dies der beste Rat hier. Ich würde einige Dinge hinzufügen, die ich nicht gesehen habe, als ich die anderen Antworten gelesen habe ...

  • Wählen Sie etwas in einem Bereich, der Sie sind leidenschaftlich über . Der beste Ort, um dies zu finden, ist vielleicht in Ihrem Interesse außerhalb der Informatik. Das könnte ein gemeinnütziger Verein sein, an dem Sie beteiligt sind, ein Hobby, das Sie leidenschaftlich lieben, ein Sport, den Sie ausüben.

  • Finden Sie einen Mitarbeiter . Das Codieren alleine ist schwierig. Eine andere Sache, die enorm helfen würde, ist, wenn Sie einen Buddy finden, der mit Ihnen an diesem Projekt zusammenarbeitet. Das macht viel mehr Spaß und motiviert dich. Jeff Attwood spricht in seinem letzten Blogbeitrag über genau dies in seiner Erfahrung mit dem Aufbau von SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

  • Wähle etwas Bescheidenes (anfangs) . Das ideale Projekt würde mit etwas Kleinem beginnen. Wenn das Tor zu ehrgeizig ist, wird es zu entmutigend. Nachdem ich die Entwicklung für PCs, Telefone, eingebettete Systeme und das Web durchgeführt habe, würde ich sagen, dass das Web der beste Ort ist, um nach etwas Erreichbarem zu suchen, das andere Leute sofort nutzen können.

  • Wenn möglich, wählen Sie etwas aus, das andere Leute verwenden werden . Selbst wenn Sie nur zehn "Kunden" haben, ist das Gefühl, andere Menschen dazu zu bringen, das, was Sie gebaut haben, zu benutzen, wie eine Droge. Unglaublich befriedigend. Von Kunden zu lernen und auf sie zu reagieren, ist ebenfalls eine wertvolle Lernerfahrung.

Wenn dieses Projekt eine Liebesarbeit ist, an der Sie gerne bis tief in die Nacht arbeiten und dann am nächsten Morgen aus dem Bett springen, um darauf zurückzukommen, dann werden gute Dinge folgen. Sie werden lernen, das Vertrauen wird wachsen. Und sobald Sie etwas da draußen haben, das die Leute sehen können, wird es zum Anfang Ihres Portfolios. Nichts beeindruckt Programmierer und (anständige) Personalchefs so sehr wie etwas Reales.

Greg
quelle
Wenn möglich, wähle etwas aus, das andere Leute benutzen werden ... das ist der beste Weg, um Feedback zu bekommen
balalakshmi
34

Ein paar Kommentare aus der Sicht von jemandem, der seit über 20 Jahren Entwickler ist:

Ich sehe Websites wie Stackoverflow und Suchmaschinen wie Google und weiß nicht, wo ich überhaupt anfangen würde, so etwas zu schreiben.

Sie sind das Produkt von Teams, die hauptsächlich auf Bibliotheken und Infrastrukturen (.net, java, asp.net usw.) aufbauen, die von anderen Teams erstellt wurden und auf Erfahrung und Ressourcen beruhen. Dass Sie individuell nicht wissen, wo Sie anfangen sollen, etwas Ähnliches zu tun, ist völlig verständlich. Mach dir darüber keine Sorgen.

Während eines Sommers hatte ich die Gelegenheit, als iPhone-Entwickler zu arbeiten, aber ich hatte das Gefühl, dass ich hauptsächlich Bibliotheken zusammenklebte, die andere Leute mit wenig Verständnis für die Mechanik unter der Motorhaube geschrieben hatten.

Ich fürchte, jetzt ist so viel Entwicklungsarbeit. Über diese Bibliotheken hinaus gibt es jedoch viel Raum für interessante Arbeiten. Und machen Sie sich keine Sorgen, dass Algorithmen schwierig zu finden sind - Sie müssen mit ziemlicher Sicherheit während Ihrer Karriere nie eine Quicksortierung, verknüpfte Liste oder was auch immer implementieren. Dafür sind Bibliotheken da.

Grundsätzlich habe ich einen Abschluss in Informatik, aber ich habe nicht das Gefühl, dass ich gelernt habe, wie man programmiert.

Zu wissen, wie man programmiert, und zu wissen, wie man als professioneller Entwickler funktioniert, sind zwei sehr unterschiedliche Dinge. Sie benötigen lediglich etwas Erfahrung und arbeiten vorzugsweise mit anderen Entwicklern an realen Systemen. Versuchen Sie, Ihrem Skillset entweder C # oder Java hinzuzufügen - es gibt keinen großen Unterschied zwischen ihnen, sodass das Wissen übertragbar ist. Hüten Sie sich davor, zu früh zu spezialisiert zu werden. Möglicherweise müssen Sie akzeptieren, dass Sie nicht sofort viel Geld verdienen. Halten Sie daher Ihre persönlichen Kosten für eine Weile niedrig, wenn Sie können.

Beginnen Sie mit der Arbeit an dem von Ihnen erwähnten Projekt. Versuchen Sie jedoch nicht nur, Ihre Programmierkenntnisse zu erweitern, sondern sammeln Sie auch Erfahrungen mit verwandten Fähigkeiten wie Versionskontrolle, Testen von Einheiten und Integration, und schreiben Sie sogar einfache Dokumentationen. Diese Art von Fähigkeiten unterscheidet einen Entwickler von einem Programmierer und ist ein gutes Schaufenster für einen potenziellen Arbeitgeber. Es gibt viele kostenlose Tools (die Express-Editionen von Visual Studio, Github, Nunit und Google Apps), die Ihnen dabei helfen können.

Nach dem, was Sie geschrieben haben, scheint Ihr CS-Abschluss Ihnen beigebracht zu haben, wie Sie über technische Probleme nachdenken können. Sie scheinen auch ein gutes Maß an Selbsterkenntnis zu haben, einschließlich Ihrer aktuellen technischen Grenzen und Erfahrungen. Nutzen Sie diese als Vorteile. Jetzt ist kein guter Zeitpunkt, um in den Arbeitsmarkt einzusteigen, aber wenn Sie hart daran arbeiten, werden Sie in Ordnung sein. Mach dir keine Sorgen, lerne, sammle Erfahrungen, bleibe auf dem Laufenden und versuche, Dinge zu tun, die dir Spaß machen.

Viel Glück!

Andy Johnson
quelle
"Mit ziemlicher Sicherheit müssen Sie während Ihrer Karriere keine Quicksortierung, verknüpfte Liste oder was auch immer implementieren." In meiner aktuellen Position musste ich eine Quicksortierung für eine benutzerdefinierte, geschriebene verknüpfte Liste implementieren. Ich musste die Liste jedoch nicht implementieren. Es ist definitiv wertvoll zu wissen, wie grundlegende Dinge funktionieren.
Ich bin damit einverstanden, dass ein guter Entwickler weiß, wie diese grundlegenden Datenstrukturen und Algorithmen funktionieren, und sie implementieren kann. Ich musste ein paar Mal meine eigenen verknüpften Listen rollen, musste aber nie (zum Glück für mich) eine Quicksortierung schreiben. Mein Punkt war, dass sich das OP nicht zu sehr um die Algorithmen kümmern sollte, die sie während ihres Studiums gelernt hat, da viele Sprachen / Plattformen (.net, Java, C ++ usw.) wahrscheinlich vorab geschriebene Implementierungen enthalten.
31

Beim Programmieren geht es nicht nur um Ihr Verständnis von Algorithmen oder Ihrer GPA während des Studiums. Beim Programmieren geht es um die Fähigkeit, über den Tellerrand hinaus zu denken, um Lernbereitschaft und vor allem um Kreativität.

Persönlich hatte ich letzten Mai gerade mein College abgeschlossen und hatte einen schrecklichen GPA. Ich hatte mich mehr auf mein soziales Leben als auf die Wissenschaft konzentriert und den Preis dafür bezahlt.

Während meines letzten Bewerbungsgesprächs am College ( das mich weniger als ein Jahr gekostet hatte, um zu landen ) zeigte ich jedoch meine Kreativität, Leidenschaft für das Lernen und analytische Fähigkeiten, die mir geholfen hatten, den Job zu bekommen.

Anthony Forloney
quelle
27

Hinweis: Ich erwarte, dass dieser Beitrag abgelehnt wird. Dies ist keine Antwort auf das Originalplakat, sondern eine Bemerkung zu den meisten Kommentaren, die ich oben gelesen habe.

Die Antworten, die ich oben lese, machen mir wirklich Angst. Es scheint ein fast universelles Gefühl zu geben, dass die Abschlüsse von comp.sci nutzlos oder nicht relevant sind oder Ihnen nichts beibringen. Sind comp.sci-Abschlüsse wirklich so schlimm geworden, oder ist das alles nur heiße Luft von Entwicklern ohne Abschlüsse, die versuchen, ihren Mangel daran zu rechtfertigen?

Ernsthaft Leute, was unterrichten sie heutzutage an der Universität? Wenn Sie zum Zeitpunkt Ihres Abschlusses einen CS-Abschluss machen (zumindest als ich Student war), haben Sie ein gutes Verständnis für Compiler-Design, comp. Komplexität, formale Methoden und Logik, eine ganze Reihe von Datenstrukturen und -algorithmen, Grundlagenforschung (LP usw.), Datenbanken, Verschlüsselung und Sicherheit, Scheduling-Algorithmen, Netzwerkprotokolle, Internet-Entwicklung, Betriebssystem- und Kernel-Design, parallele Algorithmen und Datenstrukturen, numerische Algorithmen und vieles mehr. Das gesamte Los wird in der Regel durch ein riesiges Programmierprojekt ergänzt, das Teil der Abschlussarbeit ist. Sagen Sie mir nicht, dass Absolventen von comp.sci nicht genug Programmierkenntnisse haben.

Ich schätze auch die Tatsache, dass einige der traditionelleren comp.sci-Abschlüsse einige Aspekte des Software-Entwicklungszyklus auslassen. Sie werden wahrscheinlich nicht viel über TDD und Unit-Tests sprechen. Aber seien wir brutal ehrlich: Es ist keine Raketenwissenschaft, oder? Sie werden auch nichts über SCRUM oder Funktionspunktanalyse hören. Das Unterrichten von detaillierten Kursen zu solchen grundlegenden Themen wäre ziemlich überflüssig, obwohl heutzutage in vielen Abschlüssen ein Kurs zum Systemdesign angeboten wird, in dem die Schüler eine Vorstellung davon erhalten, wie diese Dinge funktionieren.

Zugegeben, Sie sind vielleicht kein Experte in .NET, PHP oder den anderen aktuellen Industriestandards, aber das sollte irrelevant sein. In 5-10 Jahren werden sich die gewählten Sprachen ohnehin geändert haben. Nur weil Sie lernen, in einem Peugeot zu fahren, heißt das nicht, dass Sie keinen Fiat fahren dürfen, und das Gleiche sollte für Programmiersprachen gelten. Es sollte einige Monate dauern, um mit ein paar guten Büchern zu üben und in jeder Sprache kompetent zu sein.

Wenn irgendetwas Zeitverschwendung ist, dann sind dies sicherlich diese kostspieligen "Zertifizierungen", bei denen Sie im Grunde genommen eine elektronische Multiple-Choice-Prüfung ablegen und nach (normalerweise sinnlosen) Details einer bestimmten Architektur oder Sprache fragen müssen. Sie neigen dazu, die Kompetenz eines Programmierers an seinem Wissen über bestimmte pathologische Programmierfälle zu messen.

Ich habe in der IT-Branche in verschiedenen Unternehmen gearbeitet und war auch in den Interviewprozess für andere Softwareentwickler involviert. Wir haben einige der üblichen Fizzbuzz-Fragen gestellt, die sich jedoch hauptsächlich an Personen ohne formelle Ausbildung oder Praktikanten richteten. Ich habe noch nie einen comp.sci-Absolventen getroffen, der nicht in der Lage war, grundlegende und weniger grundlegende Programmierfragen zu beantworten.

Hinweis Ich lebe in Europa und kenne mich nur mit europäischen Hochschulabschlüssen aus. Ich bin mir jedoch ziemlich sicher, dass der Universitätsstandard in den USA viel höher ist als in der EU.

Il-Bhima
quelle
4
Dies ist die gleiche Art und Weise, wie sich jeder in Bezug auf alle Grade fühlt, sobald er sie hat. Die Schule im Allgemeinen bereitet Sie auf eine Vielzahl von Situationen vor. Sobald Sie anfangen zu arbeiten, können Sie sich weiter spezialisieren und fühlen sich vielleicht so, als hätten Sie die ganze Energie in der Schule verschwendet. Aber woher wussten Sie, was Sie eigentlich tun würden? Es ist sicherer, eine Menge zu lernen, auf die man aufbauen kann, als überhaupt nichts davon gelernt zu haben.
1
Ich sehe beide Seiten des Arguments. Ich habe einige wirklich kluge CompSci-Abschlüsse getroffen, aber ich habe auch einige Leute mit CompSci-Abschlüssen getroffen, die jetzt in einem Callcenter arbeiten, weil sie sich nicht wirklich für CompSci interessieren. In meinen CompSci-Kursen habe ich viel gelernt, aber ich muss zugeben, dass ich die meisten technischen Fähigkeiten, die mich zu Jobs geführt haben, die ich in meiner Freizeit außerhalb der Schule gelernt habe. Bei Vorstellungsgesprächen für Softwareentwicklungsjobs wird Ihr Wissen in der Regel auf bestimmte Technologien, Problemlösungsstrategien und zwischenmenschliche Fähigkeiten getestet. Keiner davon wird explizit am College unterrichtet.
Cerin
1
Ich habe Dutzende von CS-Absolventen getroffen - während sie interviewt wurden -, die keine Sortieralgorithmen erklären konnten, selbst wenn sie fünf Minuten nachdenken mussten. Vielleicht wird der Universitätsstandard hier in den Bundesländern nicht überall so gut angewendet. Wie @Chris S betont, ist es einfach genug, einen Abschluss zu machen, ohne viel von irgendetwas zu lernen.
Dean J
Sie verwechseln hier zwei Dinge. Ich fand es unglaublich nützlich, einen Abschluss zu machen - ich weiß, dass er mich zu einem viel besseren Programmierer gemacht hat, aber ich kann nie genau herausfinden, warum (vermutlich eine Kombination aus ein wenig Wissen und einem besseren Ansatz zur Problemlösung). Es gibt jedoch viele Absolventen (von einer angesehenen Universität), die nicht einmal herausfinden können, wie (9,5) ECC mit einer 512-Byte-Nachschlagetabelle implementiert werden kann. Die guten Programmierer sind diejenigen, die über „Ich verstehe das nicht, aber ich kann die Prüfungsfragen erledigen“ hinausgehen.
1
interessantes Problem, aber warum würden Sie normalerweise einen ECC-Test durchführen;), natürlich mit Ausnahme von Hardware? Aber es ist ein gutes Beispiel für autarkes Zeug, das Sie nicht / nicht können? lernen bei compSci
24

Deine Demut wird dir gut dienen. The Beginner's Mind ist hilfreich für alle Arten von Lernen, egal wie viel Bildung und Erfahrung wir haben.

Arbeiten Sie Übungen durch, wie andere vorgeschlagen haben - bei Project Euler und anderswo.

Erarbeiten Sie Lösungen, um anderen hier auf SO zu helfen. Die Übung, die Frage zu verstehen, festzustellen, was Sie anwenden können, und schließlich eine Antwort zu formulieren, hilft dabei, Ihr Selbstvertrauen zu stärken, da die Übungen Ihre Fähigkeiten stärken.

Dabei bleiben; es wird Dir gut gehen.

Carl Manaster
quelle
9
Demut wird dir gut tun , außer wenn es nicht so ist - um deinen Fuß in die Tür zu bekommen ( auch bei einem persönlichen Projekt), brauchst du eine gewisse Menge an Chutzpa, möglicherweise musst du sogar irrational zuversichtlich sein.
@ Ian, ich akzeptiere demütig deine Korrektur. ;-) Im Ernst - es ist ein guter Punkt und ein guter Artikel. Ich mag die Schlussfolgerung nicht, dass Frauen Arschlöcher sein sollten wie Männer, aber es ist schwer, mit der Praktikabilität davon zu streiten.
Carl Manaster
@ Carl - zu schnell von einer Schlussfolgerung :-) Einstellung von Mitarbeitern / Managern frisst diese Arroganz / Eigenwerbung auf. Insbesondere bei der Bewertung von Kandidaten für technische Positionen, bei denen sie die Anforderungen von nicht zu verstehen beginnen. Ich habe viele sehr qualifizierte Männer im selben Boot wie diese armen Frauen gesehen, als diese eine überbewusste, sich selbst fördernde Person auftauchte und die Show stahl. Ich denke nicht, dass wir es für einen Sieg halten können, mehr Frauen zu übermäßigem Selbstvertrauen zu ermutigen. Der Ort, an dem wir das Beste tun können, IMHO, ist die Schulung der Personalabteilung, um bessere Entscheidungen zu treffen, oder die Umgestaltung des Prozesses.
23

Ein Abschluss mit einem Comp-Sci-Abschluss macht Sie nicht mehr zu einem großartigen Programmierer, als ein Abschluss mit einem Musikprogramm zu einem großartigen Musiker.

Es gibt keinen Ersatz für Übung, Übung, Übung und Erfahrung. Programmiere 8 Stunden am Tag und in 5 Jahren hast du vielleicht das Verständnis, dass es dir gerade fehlt.

Larry Watanabe
quelle
6
Das ist doch ein Haken, oder? Programmieren Sie Vollzeit, um den gewünschten Job zu bekommen.
Jim Schubert
16
Nein, in 5 Jahren werden Sie feststellen, dass Sie nichts wissen :)
Earlz
1
@Earlz, und das nichts was du endlich weißt ist schon veraltet.
Dan Bryant
4
In der Tat - bei allen "Java-Schulen" (was hier vielleicht der Fall war oder nicht) kann man leicht vergessen, dass die Informatik nicht programmiert. Ich kenne Leute, die einen CS-Abschluss gemacht haben und die Medizin studiert haben, und Biologen, die als Programmierer geendet haben. Doch niemand hat sich jemals gefragt, warum ein Biologiestudium sie nicht zum Chirurgen gemacht hat: Jeder weiß, dass das Studium der Biologie keine Medizin ist.
1
@Earlz wie sehr Zen :)
Tullo_x86
23

Solch eine offene Frage, tolle Antworten - ich melde mich kurz :)

Die bisherigen Antworten ließen mich ein bisschen lachen - sie zelebrieren möglicherweise unsere eigene Größe ein bisschen ironisch. Ich komme wegen schlechter Dokumentation und Fehlern in Frameworks zu SO. Natürlich gibt es hier noch anderes Gold, aber es lohnt sich, Ihre Demut zu bewahren, auch wenn Sie ein großer Entwickler werden - und das sage ich aus der Perspektive persönlicher historischer (?) Arroganz.

Denken Sie daran, dass Sie möglicherweise nicht von einem Techniker eingestellt werden (und wahrscheinlich auch nicht), obwohl bessere HR-Mitarbeiter und Manager einen Techniker verwenden, um Sie einzuschätzen.

Arbeitgeber haben einen Plan für ihre Mitarbeiter. Versuchen Sie, diesen Plan auf ganzer Linie zu erfassen, und stecken Sie sich respektvoll in ihn ein. Geben Sie ihm vielleicht ein wenig persönlichen Schwung und eine Verbesserung. Schwierigkeiten und Chancen können entstehen, wenn ein Arbeitgeber keinen konkreten Plan hat. Wenn Sie gute Fragen stellen und dabei helfen, den Plan festzulegen, können Sie sich in diesen Situationen wirklich hervorheben.

Geschäftsleute können (zu Recht) paranoid gegenüber Entwicklern sein, die sie bevormunden, da wir ihre Wahrnehmungen oft ein wenig verwalten müssen, um ihnen bei Entscheidungen zu helfen, die sie nicht verstehen oder entwickeln Sie von Ihren Non-Tech-Mitarbeitern. Ich denke demütig, dass es wichtig ist, zu verstehen, dass dies oft die Essenz der Beziehungen zwischen Technikern und Nicht-Technikern ist - und es ist schwer zu vermeiden, dass das, was wir tun, stumpf ist.

Professionell, aufgeschlossen und respektvoll zu sein, bringt Arbeit - wenn Sie sich nicht sicher sind, was professionell ist, gibt es im Web bestimmt Möglichkeiten, das zu klären - ich wünschte, jemand hätte mich darauf hingewiesen, als ich anfing. :)

Das Letzte, was ich sagen würde, ist, dass Sie, wenn Sie in der Entwicklung und Architektur besser werden und sich schon so anfühlen, als wären Sie auf diesen Weg gegangen, feststellen können, dass Ihr professioneller Code sehr unbefriedigend sein kann, selbst wenn es der ist passende Lösung.

Ich bin mir nicht sicher, was die Lösung ist, aber versuche, eine Verkaufsstelle zu finden und weniger emotional in deine Arbeit involviert zu sein. Es wird dir helfen, dich zu entwickeln und ein besseres Leben zu führen - sei besonders vorsichtig, wenn du versuchst, zusätzliche Anstrengungen zu unternehmen Etwas "Richtiges" - Die meiste Zeit werden Sie Ihren Mitarbeitern Komplikationen bereiten, und Sie werden so gut wie nie in der Lage sein, die Zeit, die Sie benötigen, um dies innerhalb des Zeitrahmens Ihres Projekts zu realisieren. Ein Symptom dafür ist "Going Dark" - wenn Sie niemandem erklären möchten, was Sie tun möchten. Viele der besten Entwickler können einem Laien das Wesentliche erklären, was sie tun - dies ist eine großartige Fähigkeit zu lernen, und ich fand es intellektuell befreiend, sie zu üben.

Heh, und wenn Sie abschätzen, teilen Sie Ihre Aufgabe zunächst in kleine Teile auf, addieren Sie die Zeit und verdoppeln Sie sie dann (es heißt, teilen, erobern, nach Hause marschieren;)

Viel Glück! Ich verließ die Schule in der Erwartung, Skilehrer zu werden und wurde ein leitender Entwickler. Ich bin sicher, Sie werden alles gut machen, was Sie am Ende auch tun.

Seth
quelle
10
Ihr erster Satz sagte, Sie würden sich kurz melden ... und doch haben Sie hier eine der längsten Antworten. ;)
+1 für "Teile deine Aufgabe in Teile auf, addiere die Zeit und verdopple sie dann (es heißt, teile, erobere, marschiere nach Hause;)" ... obwohl du es in vielen Jobs vervierfachen solltest, wie Manager es erwarten werden die Hälfte der Zeit und fügen Sie ein weiteres Projekt hinzu, das im gleichen Zeitraum durchgeführt werden soll, ohne die Verlängerung Ihres Kostenvoranschlags zuzulassen. Ich hörte sogar von "multiplizieren mit zwei und erhöhen Sie die Einheit (1 Stunde => 2 Tage, 1 Tag => 2 Wochen, 1 Woche => 2 Monate, 1 Monat => 2 Viertel, 1 Viertel => 2 Jahre, .. .) und nach einigen echten
gerade gedruckt und an die Wand geklebt
Was ist die Frage
22

Ja, es ist einigermaßen normal - die meisten Schulen, auch die renommiertesten, leisten großartige Arbeit im Unterrichten von Informatik und leisten schreckliche Arbeit im Unterrichten von Softwareentwicklung. Das wird langsam besser, hat aber noch einen weiten Weg vor sich.

Wie auch immer, es hört sich so an, als würden Sie die meisten der richtigen Dinge tun:

  • Programm außerhalb der Arbeit
  • Lesen Sie Bücher über Softwareentwicklung (Code Complete, Design Patterns, Mythical Man-Month usw.).
  • Lernen Sie immer wieder neue Technologien - die Schule sollte Ihnen beigebracht haben, wie man Sprachen lernt, nicht die Sprachen selbst. Lernen Sie neue Frameworks, IDEs, APIs, Bibliotheken, Build-Tools usw. kennen.
  • Bleiben Sie auf Sites wie SO und hier. Regelmäßiger Umgang mit erfahrenen Menschen ist eine der wenigen Abkürzungen zur Weisheit.
Fischtoaster
quelle
1
Ehrlich gesagt ist der Mythische Mann-Monat ein bisschen überbewertet, nicht wahr? (Aber ich mag wirklich "* in a Nutshell" -Bücher).
Camilo Martin
2
@Camilo nicht einverstanden. Der Monat des mythischen Mannes befasst sich mit dem Thema Softwareentwicklung, während es in den Kurzbüchern ausschließlich um eine einzige Technologie geht. Schließlich müssen Sie die Probleme mit der Peopleware bei der Softwareentwicklung verstehen. MMM ist eine dieser Lesungen, die das Thema abdeckt.
Brian Wigginton
21

Wirklich tolle Frage. Ich bin sicher, dass es viele Menschen gibt, die genau das durchmachen, was Sie in allen Lebensbereichen und auf allen Arbeitsmärkten beschrieben haben.

Erstens: Machen Sie sich keine Sorgen mehr um Dinge, die außerhalb Ihrer Kontrolle liegen. Sie dürfen nicht über die Schule nachdenken oder darüber nachdenken, was Sie gelernt oder nicht gelernt haben oder wie gut Sie akademisch waren.

Zweitens - spezialisieren. Es wird immer eine Nachfrage nach Menschen geben, die wirklich gut darin sind, was sie tun, auch wenn das, was sie tun, dunkel ist. Sie müssen Ihre bevorzugte Programmiersprache auswählen und sich entschließen, diese Sprache vollständig zu beherrschen und „zu Ihrer eigenen zu machen“. Sie haben bereits viele gute Tipps, wie Sie Ihre Programmierkenntnisse verbessern können, aber am Ende des Tages gibt es nichts Vergleichbares, als eine zu finden Ein maßgebliches Buch zu diesem Thema, in dem Sie sich für ein paar Tage in Ihrem Zimmer einschließen, während Sie nur jede Seite lesen und jedes Beispiel aufschreiben, das das Buch enthält.

Drittens - werben Sie für sich. In dieser Geschichte der Informatik war dieser Schritt nie einfacher als heute. Die Antworten, die Sie geben, und die Fragen, die Sie auf SO stellen, sind Ihr Lebenslauf. Nehmen Sie es auf sich, die führende Autorität in SO für die Sprache zu werden, die Sie beherrschen möchten. Übernehmen Sie die Verantwortung für alle Fragen, die über diesen Server mit Ihrem Tag eingehen, auch wenn dies stundenlanges Nachforschen und verspätete Antworten bedeutet. Durchsuchen Sie die Archive und lesen Sie alle Fragen zu Ihrem Thema durch, die jemals zu SO gestellt wurden. Korrigieren Sie Fehlinformationen, geben Sie Ihre eigenen Antworten und Variationen der Antworten an und kombinieren Sie einige vorhandene Antworten zu einer besseren Antwort. Das Überfluten von SO mit einem endlosen Strom Ihrer Kommentare, Antworten und Bearbeitungen sollte Ihre Daseinsberechtigung sein (Und es macht Spaß, weil du Reputationspunkte bekommst).

Viertens: Arbeiten Sie an Ihrem öffentlichen Image. Selbstvertrauen ist unerlässlich, um den besten Job zu finden. Unternehmen wollen Menschen, die großartige Mitarbeiter, Mitarbeiter und Kommunikatoren sind. Wenn Sie der Meinung sind, dass dies ein Problem sein könnte, sagen Sie Ihren Freunden, dass sie Ihr Ego stärken und Sie mit endlosen Ergänzungen überschütten müssen, und gehen Sie dann zu Ihrer örtlichen Bibliothek und holen Sie sich eine davon .

Ami
quelle
2
+1 für die Erwähnung der Wichtigkeit von Kollaborations- / Kommunikationsfähigkeiten. Den meisten Absolventen fehlen sie.
Denis Otkidach
1
Ich bin nicht mit der Spezialisierung einverstanden, jede Technologie wird eines Tages sterben. Wenn Sie sich also zu sehr spezialisieren, bleiben Sie arbeitslos ... Okay, einige Technologien (=> COBOL) sterben sehr langsam, sodass Sie genügend Zeit haben, sich auf eine neue Technologie zu spezialisieren aber es ist immer noch riskant.
1
Spezialisierung hat ihren Platz, aber ich bin mir nicht sicher, ob der richtige Zeitpunkt für einen Studienabschluss der richtige ist. Ich würde auch für Angebot und Nachfrage argumentieren - ein Teil des Spezialisierungstricks besteht darin, die Nische zu finden, die gefüllt werden muss, nicht die, die bereits voll ist. (und an der COBOL-Front - vor ein paar Jahren schien meine Sitzgenossin in einem Flugzeug Mitte bis Ende 20 zu sein, hatte aber mit einem Projekt zu tun, das ein Altsystem portiert ... und wie ich verstand es, sie hielten immer noch an COBOL fest, mussten nur auf neue Hardware umsteigen - es gibt also möglicherweise eine neue Generation von COBOL-Programmierern
21

Okay, so sah diese Hacker-News und ich war wie "HOLY CRAP DAS BIN ICH !!"

Ich habe letzten Dezember meinen Abschluss mit einem Abschluss in CS gemacht und hatte das Gefühl, dass ich es irgendwie geschafft habe, meine Klassen zu bestehen und einen Abschluss zu machen, ohne ihn tatsächlich zu verdienen. Es fühlte sich so an, als ob alle meine Klassenkameraden unglaubliche Programmierfähigkeiten hätten und alles, was ich tun konnte, war grundlegende Java-Programme zu erstellen. Das Erlernen des Codierens und das Werden eines guten Codierers nimmt nur eine Menge Zeit in Anspruch. Es gibt sooooo viel zu lernen und mein Rat ist, es nur ein bisschen zu nehmen. Sie werden Dinge lernen, wie Sie gehen. Wie jeder andere traurig ist, lernt man am besten, indem man sich besonders mit Codierung beschäftigt. Ganz zu schweigen davon, dass es so viel über das Erstellen von Anwendungen gibt, dass sie einem nicht einmal die Mühe machen, etwas über die Arbeit in der Schule zu erzählen. Fühlen Sie sich nicht schlecht, wissen Sie nur, dass es viel zu lernen gibt, und stellen Sie fest, dass es einige Zeit dauern wird, es zu lernen.

Ich denke, Sie sollten auf jeden Fall hinter die Stadt schauen, in der Sie aufgewachsen sind. Es gibt eine Menge Unternehmen, die CS-Absolventen einstellen, und nicht alle von ihnen verlangen oder erwarten, dass Sie ein hervorragender Programmierer sind, wenn Sie gerade nicht zur Schule gehen. Es gab viele Interviews, in denen mir keine Kodierungsfragen gestellt wurden (es gab auch viele, in denen ich aufgefordert wurde, Algorithmen zu lösen und zu kodieren). Bewerben Sie sich bei Unternehmen, bei denen Ihre Lernfähigkeit wichtiger ist als das, was Sie bereits wissen (meiner Erfahrung nach kümmern sich größere Unternehmen mehr darum, weil sie nicht so stark davon betroffen sind, wenn Sie nicht in der Lage sind, Code sofort herauszuholen).

Ich weiß nicht, ob Sie das Codieren betreiben und verfolgen möchten, aber es gibt auch viele nichttechnische Jobs, die einen technischen Hintergrund erfordern. Sie könnten sich diese Optionen ansehen.

Ich würde mich nicht darauf konzentrieren, die Grundlagen einer Sprache wie C # oder Java zu lernen und mich auf die Prinzipien der Programmierung zu konzentrieren. Sie sollten in der Lage sein, gute Programmierkenntnisse zu übertragen und in jeder Sprache anzuwenden (dies ist wichtig für die Langlebigkeit Ihrer Karriere. Java wird nicht für immer heiß). Auf der anderen Seite kann die Kenntnis der "Hot Skills" helfen, einen Job zu bekommen. Interviewfähigkeiten sind WIRKLICH wichtig. Nehmen Sie jedes Interview, das Sie bekommen, auch wenn es nur zum Üben ist.

Denken Sie sowieso nicht, dass große Unternehmen wie IBM außerhalb Ihrer Reichweite sind. Ich habe mich vor ein paar Monaten genauso gefühlt wie Sie und arbeite jetzt bei IBM. Mein GPA war auch nicht so toll. Ich bin immer noch am Programmieren scheiße, aber ich weiß, dass ich mit der Zeit besser werde. Seien Sie einfach zuversichtlich, dass Sie lernen können!

Donna
quelle
1
Ich würde sagen, dass große Unternehmen wie IBM mehr in Reichweite sind als viele andere - sie haben dort genug Leute, um ihren Talentpool zu schulen, im Gegensatz zu kleineren Unternehmen, bei denen man erwarten würde, dass sie auf dem neuesten Stand sind. Und es gibt immer Praktika - es könnte ein bisschen spät sein, wenn Sie bereits Ihren Abschluss gemacht haben, aber viele Regierungsbehörden bringen Sommerpraktikanten mit ... also könnten Sie diese "NASA" oder ähnliches in Ihren Lebenslauf aufnehmen.
20

Wow, was für eine Menge Antworten vor dieser.

Wie wäre es mit einer völlig anderen Antwort ...

Lassen Sie uns Ihr Problem in Bezug auf das Sein eines Menschen neu definieren.

"Ich habe die Konzeptionsklasse abgeschlossen und stehe kurz vor der Geburt. Meine Mutter krönt und ich werde morgen früh entlassen. Aber wenn ich Sportler wie Usain Bolt anschaue, denke ich:" Wie kann ich das jemals machen? schnell?".

Aber hier bist du, du bist ein vollwertiger Mensch, du bist durch die Schule gegangen, du kannst gehen, reden und wenn du einen Computerkurs absolviert hast, bist du ziemlich intelligent zu booten. Nichts, wofür man sich schämen müsste.

Nun, wurde Usain Bolt geboren und fing plötzlich an, verrückte Zeiten auf der Strecke einzuschleusen, oder war es eine große Anstrengung, mit dem Leben fertig zu werden, herauszufinden, woran er interessiert war, gefolgt von einer unglaublichen Menge an Bewerbungen und dann plötzlich? " Bam! " Er war dort.

Eher letzteres. Machen Sie sich also keine Sorgen, wenn Sie nicht wissen, was Sie tun sollen. Es braucht Zeit, um herauszufinden, was für Sie richtig ist. Das ist für dich , nicht was deine Eltern denken, nicht was deine Kollegen denken. Was ist richtig für Sie . Was leuchtet Ihr Feuer . Was bringt dich dazu zu denken? Ja, das ist cool, auch wenn alle anderen denken, das ist eine Hose

Es ist nicht ungewöhnlich, mit dem Studium zu beginnen (und / oder es zu verlassen) und keine Ahnung zu haben, was Sie tun möchten.

Für mich war ich gut in der Schule auf dem O-Level (eine britische Qualifikation), aber ich konnte mir keine Gedanken über das A-Level machen (erforderlich, um an die Universität zu kommen, um einen Abschluss zu machen). Also ging ich zu einem geringeren Ort, um meinen Abschluss zu machen (und aus diesem Grund nicht zu dem Grad, den ich bevorzugt hätte). Aber ich habe es geschafft (immer noch keine Ahnung, was ich als Karriere wollte) und viel über Elektronik und andere Dinge gelernt, die die meisten Software-Leute nie lernen. Während dieser Zeit war ich freiberuflich als Autor von Computerspielen tätig.

Das Endergebnis? Nach Abschluss meines Studiums (mit Auszeichnung) bekam ich ein Vorstellungsgespräch mit einem höheren Gehalt als bei reinen Elektronikern und ich musste weder meine Haare wechseln noch einen Anzug tragen. Was? Nun, mit 23 spielt das eine Rolle (wenn ich jetzt zurückblicke, mit 44 lache ich darüber, aber das ist die Leere der Jugend für dich).

Diese Firma ging pleite und dann wurde ich ernster. Aber wahrscheinlich dauerte es noch ein paar Jahre, bis ich plötzlich (aus Versehen) herausfand, was mich wirklich interessierte. Es stellte sich heraus, dass es sich um einfache Software-Tools handelte. Sollte offensichtlich gewesen sein - alle Computerspiele, die ich geschrieben habe, wurden in Assembler geschrieben, ich mochte immer die Low-Level-Sachen, mit denen sich sonst niemand auseinandersetzen konnte. Aber um das als Zukunft zu sehen, braucht es mehr Reife und keine Überraschung, dass es sich erst in meiner Mitte der 20er Jahre wirklich manifestiert hat.

Ich bin oft beeindruckt (und erstaunt), dass junge Leute, oft noch im Teenageralter, zu wissen scheinen, was sie tun wollen. Aber die eigentliche Frage ist, machen sie das immer noch mit 27 Jahren? Oder haben sie den Kurs geändert, weil ihre frühen Ideen für sie nicht richtig waren?

Wie mache ich etwas so Beeindruckendes wie DAS (was auch immer das ist, Google, SO)? Nun, Sie tun es in Stücken, genau wie Sie Software und alles andere im Leben tun. Sie beginnen mit den Grundlagen, machen Erfahrungen damit. Wenn du gut genug bist, machst du weiter und sammelst mehr Erfahrung usw., oder du gibst es auf, weil du erkennst, dass du nicht gut genug bist oder dass es so langweilig ist (deshalb mache ich keine Kommunikation, obwohl es immer so ist Für mich ist es langweilig!).

Schauen Sie auf jeden Fall Ihre Altersgenossen an, schauen Sie Ihre Ältesten an, untersuchen Sie ihre Entscheidungen und Interessen. Aber prüfen Sie auch Ihre eigenen. Oft ist das, was auf den ersten Blick wahnsinnig erscheint, das einzig Wahre. Etwas zu tun, das Sie interessant finden (anstatt nur die Rechnungen zu bezahlen), ist SO viel lohnender.

Ja, ich weiß, als 23-Jähriger sind Sie auf den Audi TT und die coole Wohnung fokussiert und daher eher von Geld als von vernünftigen Berufswahlen verführt zu sein - das Mädchen sollte dich mögen, wie du bist, nicht wie du fährst.

Im Ernst, denke darüber nach. Die nicht so coole Lösung könnte genau die richtige Antwort sein.

Stephen Kellett
quelle
-1: Könnten Sie das etwas verschärfen und sich mehr auf die Frage und weniger auf sich selbst konzentrieren?
Jim G.
2
Es geht nicht um 'mich', sondern darum, wie ich von dort nach hier gekommen bin, ohne anfangs zu wissen, wo 'hier' ist. Ich benutze nur meine eigene Erfahrung als Beispiel, weil ich meine Erfahrung besser kenne als die Erfahrung eines anderen. Wenn Sie es über mich lesen, lesen Sie es aus der falschen Perspektive. Wenn Sie die Dinge "verschärfen", wie Sie es ausdrücken, geben Sie häufig keinen Hintergrund für den Standpunkt an, der zum Ausdruck gebracht wird, und lassen den Leser verwirrt. Ich hätte schreiben können "Ich hatte keine Ahnung, was ich tun wollte, als ich meinen Abschluss machte, aber jetzt mache ich bla bla". Das würde niemanden dazu inspirieren, fortzufahren - kein "wirklicher Grund zu glauben" (TM).
Gute Antwort, Stephen. Nur aus einem anderen POV als andere Antworten hier.
+1, wünschte, ich könnte 1000 Stimmen hinzufügen, um dies als die Top-Antwort zu machen. Berührte mich!
18

Zusätzlich zu den großartigen Ratschlägen anderer würde ich die Teilnahme an Entwicklerveranstaltungen in Ihrer Nähe hinzufügen. Suchen Sie nach Meet-ups, Benutzergruppen, Bar-Camps, Code-Camps usw. Auf diese Weise können Sie sich mit anderen Entwicklern vernetzen, Job-Leads abrufen, mit neuen Technologien Schritt halten und einen realistischen Blick auf die Fähigkeiten anderer Entwickler werfen.

Les
quelle
Ich möchte in diesem Fall mitreden. Mach das. Ich war frisch von einer technischen Schule und arbeitete in Krankenakten in einem Krankenhaus. Ich ging zu lokalen .NET-Meetings. Dauerte einige Zeit, bekam aber schließlich eine Stelle bei einer Entwicklungsfirma, die sich um Server- und Anwendungssupport kümmerte. Es ist zwar nicht mein letztes Lebensziel, aber das Scannen von medizinischen Akten macht mir zu schaffen.
17

Befolgen Sie die 10.000-Stunden-Regel.

Um ein Meister von etwas zu werden, musst du mindestens 10.000 Stunden üben. Verbringen Sie also 10.000 Stunden mit Programmieren, und Sie werden ein Meister darin. Wenn Sie nicht 10.000 Stunden programmiert haben und sich nicht als Meister des Handwerks fühlen, lassen Sie sich nicht entmutigen, sondern verbringen Sie mehr Zeit mit dem Programmieren.

Beachten Sie auch, dass Sie wahrscheinlich dreieinhalb Jahre brauchen, um dies zu tun, wenn Sie 8 Stunden am Tag programmieren. Wenn Sie nur während der Geschäftszeiten programmieren, werden Sie wahrscheinlich 4 Jahre brauchen. Wenn Sie während Ihres 3/4-jährigen Programmierens nicht so viel Zeit verbracht haben, werden Sie sich wahrscheinlich nicht als Meister fühlen.

Barkmadley
quelle
1
und Sie müssen sicherstellen, dass Sie nicht immer wieder dieselbe Stunde machen! Drücken Sie sich, um weiterzulernen.
Froome
+1 für 10k-Regel. Zuerst davon gehört, aber es klingt marketingtechnisch großartig und ist sehr real.
14

Nur ein paar Gedanken, wenn ich darf.

Wendy sagt, dass man einen CS-Abschluss machen kann, aber wenig Ahnung von der Programmierpraxis hat. Ist das nicht ungeheuer beunruhigend oder sogar schrecklich? Es ist so beunruhigend wie der Betrug, der die englischen Abteilungen in den 70er Jahren untergetaucht hat: Literatur ist keine Ansammlung von Ideen, die man verstehen und integrieren kann, sondern vielmehr eine Ansammlung von 'Texten', die der Student abstrahieren und 'dekonstruieren' muss ( http: / /www.answers.com/topic/deconstruction ). Glücklicherweise lässt diese stinkende Flut nach, vielleicht weil sich die Instruktoren, die ihre unkrautige Brandung ausgelöscht haben, jetzt zurückziehen.

Vor Jahren - vor Jahrzehnten - hat mir mein erster Kurs in CS Assemblersprache beigebracht (bevor C erfunden wurde), wobei ich aktuelle Probleme wie Sortieren, Hashing und Suchen (und ja Rekursion) hatte. In meinem zweiten Kurs habe ich das Entwerfen und Realisieren eines echten Live-Compilers gelernt. Ich war ein Teilzeitstudent am MIT und diese beiden Kurse waren alles, was ich brauchte, um als Programmierer bezahlt zu werden. und nur zwei oder drei Monate später etwas produktiv zu werden.

Als ich heute Morgen Wendys Schrei höre, denke ich, dass MIT ausgerechnet seine Angebote nicht verwässern und seine Schüler mit (im Kontext der Programmierpraxis) ziemlich nutzlosem Mist täuschen kann. Aber wenn ich mir den EE / CS-Lehrplan des MIT anschaue, sehe ich, dass genau das passiert ist:

http://student.mit.edu/catalog/m6a.html

Mir fällt besonders auf, dass die Abteilung Python als / die Unterrichtssprache verwendet! Ich meine es ernst! Es sieht so aus, als würde ein CS-Abschluss am MIT bedeuten, einen Schüler zum CS-Lehrer am MIT zu qualifizieren. Sprechen Sie über Rekursion!

Dann bin ich auf diesen Beitrag zu Coding Horror gestoßen ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) und habe ihn sehr auf den Punkt gebracht dieses Gesprächs:

"Ich bin ein Neuling in dieser Diskussion [über die Vorhersage des Erfolgs von Programmiererkandidaten], aber in meiner Erfahrung als spätblühender 30-jähriger CS-Student fand ich die Programmierkurse nutzlos und weniger schlecht unterrichtet als Ich war erst an einem Community College und dann an der University of Illinois in Chicago, aber die einführenden Programmierkurse waren:

"1. Objektorientiert, wodurch die Schüler wenig oder gar kein Verständnis für die Verfahrensmethoden hatten, und

2. Aussortierungsklassen. Die Klassen bestanden hauptsächlich aus Beschreibungen verschiedener Arten von Problemen und der Mathematik dahinter und nicht aus Syntax und Struktur, für die die Leute angewiesen wurden, nur das Buch zu lesen.

"Code wurde bis zum Kern von Data Structures kaum direkt bestätigt, und dann hing es immer noch davon ab, welchen Kursleiter Sie hatten. Einige waren sehr code-leicht und andere waren gut code-schwer. Man merkte, dass es eine große Versuchung für Lehrer war, code-leicht zu sein Zu diesem Zeitpunkt müssten sie sich auch darauf konzentrieren, Studenten, die zwei Jahre lang einen Informatikkurs besucht hatten, das Programmieren beizubringen, wenn sie sich auf Code konzentrierten.

"Da das Programmieren für viele junge Leute ein Hobby ist, haben sich die Bildungseinrichtungen meiner Meinung nach darauf verlassen, um ihre erwarteten Lernkurven zu erstellen. Menschen, die wenig bis gar keine Erfahrung mit Programmieren hatten, haben beim Eintritt in die Schule keine andere Wahl, als wie verrückt zu schummeln, geben alles aus Dies ist meiner Erfahrung nach kein Mangel an abstraktem Denken, da jeder, den ich kenne, der seinen Abschluss in Elektrotechnik gemacht hat, nichts anderes ist, als an etwas festzuhalten auf der abstrakten Front. Sie wissen immer noch nicht, wie man programmiert, während sie Mathe machen, von der ich weder Kopf noch Zahl machen kann. Die meisten absurden Erinnerungen:

"1. Java als erforderliche Programmiersprache. Ich werde Java hier nicht verprügeln, aber wäre es nicht schön, wenn die Schüler ihre eigene Speicherbereinigung lernen müssten? Und wären Zeiger nicht eine nette Sache zum Lernen, auch wenn wir uns nie wieder entschlossen haben, mit ihnen in einer sprache zu programmieren?

"2. Nehmen Sie eine Kernklasse zur Betriebssystemtheorie, nachdem Sie mit Java überschwemmt wurden, und finden Sie heraus, dass es in C (natürlich) ohne eine einzige C-Klasse auf dem Campus war?

"Natürlich bin ich dreißig und auch einer von denen, die immer programmiert haben, also hatte ich keine Probleme, aber ich sah viele Leute, von denen ich wusste, dass sie besser in der Abstraktion sind als ich (aus dem Kalkül-, DiffEQ- und Physikunterricht zuvor) ) und ihre Qual beim Versuch, ein gegen sie gestapeltes Programm zu beenden. "

Nur ein paar Datenpunkte, aber, wie andere gesagt haben, quälen.

- Pete

Pete Wilson
quelle
Ich bin so müde von diesem verblichenen Standpunkt.
Andres Jaan Tack
Python ist eine der besten existierenden Unterrichtssprachen
Casebash
@Icplben, Pete oder Jamaal von codinghorror.com?
Zaki,
14

Erstens, bleib dran!

Zweitens sind hier einige Dinge, die mir geholfen haben:

  1. Halten Sie Ihre Jobsuche über Ihre Region hinaus aufrecht. Auf jeden Fall in Ordnung sein, um zu finden. Tolle Chance rauszukommen und einen neuen Ort zu sehen!
  2. Aufgrund der geringen Erfahrung möchten die Interviewer sichergehen, dass Sie jemand sind, der begeistert und voller Energie arbeitet und Probleme löst. Also habe ich mich dafür interessiert, für das Unternehmen zu programmieren. Was ich war;)
  3. Stellen Sie Ihren Interviewern Fragen. Informieren Sie sich über das Unternehmen und halten Sie während des Interviews Material bereit. Welche Designmuster verwenden Sie? Warum X-Technologie statt Y-Technologie? Ich fühle, das rundet Sie als Person während des Interviews ab und gibt Ihnen die Möglichkeit, eine Pause einzulegen.
  4. Code für Spaß zu Hause! Es muss nicht erfolgreich sein, sondern nur Code schreiben, der möglicherweise eine von Ihnen gelesene Technik oder eine Technologie wie eine Datenbank verwendet.

Drittens war ich in einem ähnlichen Boot wie Sie, als ich wieder meinen Abschluss gemacht habe. Dein erster Job ist da draußen.

Robb
quelle
14

Nur sehr wenige Absolventen einer Disziplin sind Experten für etwas, das sie lediglich studiert haben. Die Informatik ist in dieser Hinsicht keineswegs besonders. Es gibt nichts Schöneres als empirische Erfahrung, und Sie erhalten dies nur, wenn Sie eine vollwertige Software für echte Kunden entwickeln, mit all den Anforderungen, zeitlichen Einschränkungen, Änderungen und der damit verbundenen Teamarbeit.

Dan Diplo
quelle
1
Das stimmt leider. Ein Bachelor ist nutzlos, es sei denn, Sie haben es geschafft, es zu schaffen. Das heißt, Comp Sci Curriculum ist schrecklich auf der undergrad Ebene. CMs Lehrplan erfordert 5 Mathematikstunden, kombiniert jedoch formale Sprache, Automaten und Rechenfähigkeit in einem Kurs und das ist ein Wahlfach.
MIA,
4
Stimme zu 100%. Warum sollten Sie ein Experte für etwas sein, für das Sie sich gerade qualifiziert haben ?
Alex Feinman
13

Ich habe diese böse Seite neulich gefunden http://99designs.com/ Unter Website-Design oder anderem Design finden Sie wahrscheinlich einige Software-bezogene Projekte.

Dies wäre eine großartige Möglichkeit, Codierung zu erlangen, neue Fähigkeiten zu entwickeln, neue Leute kennenzulernen, die potenzielle Arbeitgeber sein könnten, und vielleicht sogar etwas Geld zu verdienen.

Ich habe festgestellt, dass es für Arbeitgeber von großem Wert ist, zu zeigen, dass Sie, obwohl Sie keinen Job hatten, nicht auf Ihrem Hintern saßen. Zeigen Sie, dass Sie dort angekommen sind und einige Projekte durchgeführt haben, vorzugsweise solche, die Sie in einem Interview vorführen können.

Jakob
quelle
Ich habe meinen Tag aufgeteilt zwischen 1) Senden von Lebensläufen 2) Überprüfen von Büchern, aber ich habe an keinem Projekt gearbeitet. Das ist übrigens eine sehr interessante Seite. Es richtet sich eher an Künstler und Designer als an Softwareentwickler, aber ich werde mich weiter darum kümmern müssen.
Ich würde mir nicht so viele Sorgen um die Bücher machen. Wie an anderer Stelle erwähnt, ist der einzig sichere Weg zu lernen, zu tun. Lassen Sie sich nicht davon entmutigen, dass es eine Weile dauert, einen Job zu finden. Es ist bedauerlich, aber manchmal dauert es viele Monate, den richtigen zu finden. Versuche es weiter :) Ich stimme dir zu, die Seite ist mehr auf Kunst / Design ausgerichtet, obwohl es einige davon gibt, wenn du an Websites interessiert bist. Der Vorteil ist, dass Sie ein Projekt durchführen können, ohne die Idee selbst zu haben, und dass Sie bezahlt werden. Andernfalls können Sie auf sourceforge.net nach anderen Projektideen suchen
13

Mach dir keine Sorgen. Rom wurde nicht an einem Tag erbaut.

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

BEARBEITEN: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End
THEn
quelle
12

Machen Sie sich keine Sorgen, dass Sie Google nicht codieren können. Google wurde über mehrere Jahre von vielen sehr erfahrenen Programmierern erstellt. Das ist so, als würde man einen Abschluss in Bildender Kunst machen und sich fragen, wie man das letzte Abendmahl machen könnte.

Schwitzen Sie bei der Jobsuche nicht über die Anforderungen. Rufen Sie sie einfach an und sagen Sie, dass Sie nicht die Jahre haben, aber Sie möchten sich trotzdem bewerben. Wenn sie diese Erfahrung wirklich wollen, fragen Sie, ob noch mehr Nachwuchskräfte verfügbar sind - sie können möglicherweise eine neue Position nur für Sie schaffen. Die meisten Arbeitsplätze werden für eine bestimmte Person geschaffen. Stellen Sie sicher, dass Sie sich an den Projektmanager und nicht an die Personalabteilung wenden. HR schafft in der Regel keine neuen Jobs, sondern überprüft Bewerber häufig nur auf vorhandene Jobs. Google ist in diesem Fall dein Freund;)

Versuchen Sie nicht, eine Web-App (wie Google oder Stack Overflow) zu codieren, es sei denn, Sie möchten etwa 6 Monate investieren. Es ist eine riesige Lernkurve. Sie müssen lernen, ein VCS zu verwalten, einen Webserver, HTML JS- und CSS-Codierung, ein Datenbanksystem und die Sprache der Webanwendung auszuführen. Es ist brutal. Die meisten dieser Technologien sind nur übertragbar, wenn Sie im Internet arbeiten möchten.

Wenn Sie Web-Apps erstellen möchten, sollten Sie eine einfache Web-App installieren (wie diese django-basierte IP-to-Country-Lookup-App - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-comments / ). Sie können einen Rabattcode von 90 USD für Dreamhost kaufen (damit Sie auf einem echten Webserver arbeiten können) und versuchen, die Dinge einzurichten. Seien Sie nicht zu viel Sorgen um die Sicherheit oder Leistung (aber tun Verwendung ssh) - es ist nur ein Lernprojekt.

Wenn du etwas auf dem Desktop machen willst, kannst du dir Pygame ansehen.

wehmütig
quelle
Ich dachte, die erste Version von Google wurde in kurzer Zeit gemacht? Wie über einen Sommer oder so ähnlich
Earlz
Apache, das unter Linux auf Ihrem Desktop ausgeführt wird, ist ein "echter Webserver", für den Sie kein Geld ausgeben müssen. Was glauben Sie, laufen Hosting-Unternehmen?
TMN
Mit "@TMN" meine ich einen Produktions-Hardware- und -Software-Stack. Ich weiß, dass DH Apache und MySQL verwendet, aber die Entwicklung auf einem Produktionsserver hat Vorteile (alles ist eingerichtet, einschließlich kniffliger Dinge wie E-Mail, und sie erledigen die Domain-Registrierung für Sie) und Nachteile (wie kein Root, und das müssen Sie bekommen an entfernte Entwicklung gewöhnt). Mit einem Produktionsserver tauchen Sie in die Webarbeit ein.
11

Sie können alles über das Programmieren lesen, aber Sie werden erst lernen, wie man wirklich programmiert, wenn Sie gut sind. Starten Sie das Programmieren!

Ich würde empfehlen, dass Sie ein persönliches Projekt starten. Was möchtest du erschaffen? ein Spiel? Ein Blog? Es spielt keine Rolle. Mach einfach was!

Dann empfehle ich , nachdem ich einige Zeit (einige Wochen oder Monate) mit echtem Code gearbeitet habe, einen Beitrag zu Open-Source-Projekten zu leisten. Das persönliche Projekt hilft Ihnen dabei, herauszufinden, wie Sie programmieren, wenn das Ziel nicht bereits für Sie festgelegt ist (das Wissen, wie man tatsächlich etwas entwirft, wird in der Schule nicht oft unterrichtet). Wenn Sie an bestehenden Projekten mitarbeiten, lernen Sie, in einem Team zu arbeiten und den Codestandards zu folgen.

Ich würde meine Zeit nicht damit verschwenden, viel zu lesen. Ich würde höchstens sagen, dass Sie wahrscheinlich etwa 20% der Zeit lesen und die anderen 80% Code schreiben sollten. (Natürlich meine ich mit Zeit Ihre Zeit, die Sie für das Programmieren von verwandten Dingen eingeplant haben.)

Earlz
quelle
9

Hier sind MEINE zwei Cent ... gepaart mit Zitaten aus ein paar anderen Quellen.

Ein überraschend großer Teil der Bewerber, auch mit einem Master-Abschluss oder einem Doktortitel in Informatik, scheitert bei Befragungen an der Beantragung grundlegender Programmieraufgaben.

- Dan Kegel über Jeff Atwood

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Dies ist ein Problem, von dem ich viel gesehen habe, sogar bis zu dem Punkt, an dem Menschen mit jahrelanger "Erfahrung" in ihrem Lebenslauf nicht in der Lage sind, einfache Aufgaben auszuführen. Persönlich denke ich, dass die Bildungseinrichtungen weitgehend dafür verantwortlich sind, von der Fakultät, die das Fach nicht kennt oder es nicht lehren kann, bis zu den Beratern, die Studenten lenken sollten, die nur etwas Besonderes für das Geld herausholen wollen ein angemessenes Interesse auf dem Gebiet selbst.

Nach dem Klang Ihrer Frage haben Sie das Gefühl, als wären Sie aus ein paar Jahren Ihres Lebens herausgeschmissen worden, um ein Stück Papier zu bekommen. So sehen heutzutage viele Personalagenturen einen Abschluss für Programmierer. Sie wollen Menschen, die bewiesen haben, dass sie programmieren können, nicht nur jemanden, der ein Stück Papier hat. Aber die Tatsache, dass Sie diese Frage zuerst stellen, zeigt mir den Wunsch, tatsächlich Programmieren zu lernen.

Eines der besten Dinge, die Sie tun können, um zu lernen, wurde bereits mehrmals darauf hingewiesen, nämlich Programmieren. Unglücklicherweise wird dies Ihr Wissen und Ihr Verständnis über die Technologie verbessern, aber es ist nicht unwahrscheinlich, dass es Ihnen bei der Arbeitssuche hilft, es sei denn, Sie können es in Ihren Lebenslauf aufnehmen.

Ich schlage vor, dass Sie zunächst selbst einige Anwendungen mit einem bestimmten Zweck erstellen, herausfinden, was Sie tun können und was Sie herausfordern wird, voranzukommen, und dann zu einigen Stellen gehen, an denen Sie freiberufliche Arbeit aufnehmen können. Erwarten Sie nicht, dass Sie für die freiberufliche Arbeit, die Sie im Internet erledigen, eine hohe Vergütung erhalten. Sie möchten sie Ihrem Lebenslauf hinzufügen, nicht Ihrer Brieftasche. Sobald Sie 3-5 Artikel haben, auf die Sie verweisen und sagen können: "Ich habe das gebaut" oder "Ich habe diese Funktionalität für sie entworfen", dann listen Sie alles auf und finden Sie eine Agentur (sie sind ÜBERALL). und arbeiten mit einigen ihrer Mitarbeiter zusammen, um Ihren Lebenslauf zu optimieren, damit Ihre Ausbildung und Ihr Einfallsreichtum bei der Arbeitssuche unterstrichen werden und der Aspekt Ihres Mangels an Erfahrung minimiert wird.

Das Wichtigste, woran Sie sich erinnern sollten, wenn Sie mit potenziellen Arbeitgebern sprechen (ich sehe, dass die Leute die ganze Zeit durcheinander geraten), und etwas, auf das JEDER in JEDEM BEREICH achten sollte, ist, dass Sie sich absolut nicht verkaufen möchten oder minimieren Sie, was Sie tun KÖNNEN, verkaufen Sie sich nicht und lassen Sie sie glauben, Sie könnten Dinge tun, von denen Sie keine Ahnung haben, wie. Arbeitgeber haben immer ein Händchen dafür, Sie zu bitten, Dinge zu tun, die Sie nicht können, und es ist an diesem Punkt Ihre Aufgabe, es herauszufinden, aber wenn Sie ihnen sagen, dass Sie es bereits können, werden Sie Ihre Worte zwangsläufig später essen .

Viel Glück für Sie!

Nathan Wheeler
quelle