Was sind die grundlegenden Mindestkenntnisse, die ein neuer Absolvent haben muss, um einen Job als Software-Ingenieur bei einem der Silicon Valley-Start-ups zu bekommen? Wie wichtig ist vergangene Erfahrung? Welchen Wert haben Codierungswettbewerbe?

Zunächst hängen viele der genauen Fähigkeiten wirklich vom Start ab. Es gibt jedoch einige allgemeine Fähigkeiten, die Ihnen überall helfen.

  1. Seien Sie wirklich gut in einem Bereich der ProgrammierungStartups haben keine Zeit, Sie von Grund auf neu zu trainieren. Sie müssen also von Anfang an bei etwas nützlich sein. Durchsuchen Sie Websites, um zu prüfen, ob Ihr Lieblingsbereich gerade heiß ist. Im Allgemeinen sollten Sie mit mobilen (iOS usw.) und webbasierten (Ruby on Rails usw.) Plattformen gute Ergebnisse erzielen.
  2. Kennen Sie mindestens zwei völlig andere Bereiche der Programmierung – Startups benötigen Ingenieure, die flexibel sind. Auch wenn diese beiden Bereiche nicht das sind, wonach das Startup sucht, zeigen Sie die Fähigkeit, neue Dinge schnell zu lernen, wenn Sie mehrere verschiedene Dinge kennen. Zum Beispiel wurde meine C-Programmierung viel besser, nachdem ich Lisp gelernt hatte, nur weil es mich dazu brachte, über den Tellerrand hinaus zu denken und wirklich Rekursion zu bekommen. (Aber ich würde nicht empfehlen, dass Lisp eine Ihrer Entscheidungen ist. 🙂) Ein guter Programmierer ist jemand, bei dem es nicht wirklich darauf ankommt, welche spezifische Sprache Sie benötigen. Sie können es schnell abholen.
  3. Wissen, wie Sie Ihr eigener Systemadministrator sein können – Startups sind keine großen Unternehmen und haben keine Mitarbeiter, die Ihr System für Sie einrichten können. Wissen, wie man von einem neuen System in einer Box zu einer funktionierenden Entwicklungsplattform wechselt. Dies sollte für jedes System gelten, mit dem Sie arbeiten müssen. Wissen, wie die gesamte Entwicklungsumgebung von Grund auf neu eingerichtet wird.
  4. Wissen und zeigen Sie, dass Sie mit Software-Engineering-Tools zufrieden sind – Starten Sie mit git für Ihre persönlichen Projekte. Wissen, wie man Github oder eine ähnliche Site benutzt. Wissen, wie man einen Produktionsserver startet. Wenn Sie zum Beispiel Rails spielen, beginnen Sie mit Heroku. Noch besser ist es, wenn Sie Ihren eigenen Server einrichten, den Sie benötigen. (Die Erfahrung wird Ihnen helfen zu wissen, wann etwas wie Heroku nützlich ist und wann Sie Ihr eigenes brauchen.)
  5. Wissen, wie man Tests schreibt und Ihre Testumgebung verwendet – Wenn Sie ein ausreichend kleines Startup erhalten, liegt eine Menge Qualitätskontrolle bei Ihnen. Auch bei einem größeren Programm ist es wichtig, als Qualitätsprogrammierer bekannt zu werden. Startups benötigen Ingenieure, die sowohl Tests als auch Code schreiben und ausführen können. Wenn Sie beispielsweise in Rails programmieren, sollten Sie mit der Standardtestumgebung rspec und cucumber vertraut sein. Egal auf welcher Plattform Sie arbeiten, machen Sie sich mit der testgetriebenen Entwicklung vertraut. Es hat an Popularität gewonnen und hilft dabei, sehr starken Code zu erstellen.
  6. Agile – Machen Sie sich mit der agilen Programmierung vertraut. Es wird immer beliebter. Sie müssen es nicht hin und her wissen, da jedes Unternehmen andere Teile davon übernimmt. Sie sollten jedoch auf jeden Fall mit allen Konzepten vertraut sein, die Sie diskutieren und ohne großen Schock in einem agilen Team arbeiten können.
  7. Überleben Sie lange mit Pennies – Dies ist keine technische Fertigkeit und beeinträchtigt nicht Ihre Fähigkeit, einen Job zu finden. Je früher das Startup, desto weniger kann es sich auszahlen. Im Handel erhalten Sie ein besseres Eigenkapital. Sie können jedoch keine Hypothek auf ein Haus aufnehmen. Außerdem kann ein Startup, das angibt, dass es Ihnen ein Gehalt in Jan geben kann, Ausrutscher haben, die es für 6 Monate hinausschieben. Je niedriger Ihre Ausgaben und je mehr Sie gespart haben, desto länger können Sie das Spiel spielen.
  8. Bereit und in der Lage sein, lange zu arbeiten – Startups sind intensiv. Egal wie die gesetzlichen Vorschriften für Papier lauten, ich habe noch nie ein Startup kennengelernt, bei dem die Leute nur 40 Arbeitswochen gearbeitet haben. Das heißt, das Start-up ist in Schwierigkeiten, wenn sie jede Woche 80 Stunden Arbeit erwarten. Sie müssen jedoch bereit sein, zusätzliche Routineschübe zu machen, wenn Sie etwas erledigen. Selbst wenn keine Schübe gemacht werden, sind es wahrscheinlich mehr als 40 Stunden.
  9. Habe ein Leben – Habe etwas außerhalb des Programmierens, das dich interessant macht und dich von anderen abhebt. Früher galt der einsame reine Aussenseiter als der Beste. Heutzutage suchen Unternehmen, insbesondere Startups, nach Menschen, die die Flexibilität zeigen, die sie benötigen. Wenn Sie eine großartige App schreiben können und trotzdem rechtzeitig dazu passen, die Seite eines Hügels mit einem Mountainbike abzureißen, werden Sie mehr hervorstechen.
  10. Kennen Sie das Equity-Spiel – Finden Sie erfahrene Startups und lernen Sie die Regeln für Equity kennen. Ich war so unwissend, als ich mich bei meinem ersten Start anmeldete. Ich habe alle meine Ratschläge bezüglich der Gerechtigkeit der Person, die mir den Job gegeben hat, befolgt!

Nach Ihrer Beschreibung haben Sie meines Erachtens ein Missverständnis darüber, auf welche Fähigkeiten sich diese Top-Unternehmen konzentrieren. Ich werde hier im Detail erklären.

In erster Linie sind Dinge wie Programmiersprachen und Entwicklungswerkzeuge nicht so wichtig. Es ist wahr, dass Sie all diese Dinge in Ihrer täglichen Arbeit verwenden, aber Sie brauchen nicht viel Zeit, um sie zu erwerben. Außerdem können einige durchschnittliche oder sogar schlechte Programmierer mit diesen Tools vertraut sein.

Was ich hier meine ist, dass Top-Unternehmen wie Dropbox diese Dinge, die Sie erwähnt haben, nicht interessieren. Entscheidend ist vielmehr, ob Sie über eine solide Informatikgrundlage verfügen und Ihre Programmierkenntnisse. Der Grund ist ganz einfach. Mit einem guten Verständnis der Grundlagen der Informatik sind Sie in der Lage, die meisten Techniken leicht zu erlernen. Es ist wie bei einer guten Grundlage, auf der Sie alles aufbauen können, was Sie möchten.

Zweitens sind technische Fähigkeiten nicht alles. Diese Unternehmen bewerten auch eine Reihe anderer Soft Skills. Zum Beispiel ist Ihre Kommunikationsfähigkeit extrem wichtig. Während des Interviews werden Sie viel mit Interviewern diskutieren und die Kommunikation wird absolut bewertet. Auch Kultur-Fit ist eine andere Sache, die Unternehmen betrachten. Sie kümmern sich darum, ob Sie eine große Leidenschaft für die Mission der Unternehmen haben.

Aus dieser Perspektive müssen Sie nicht viel Erfahrung in der Vergangenheit haben, besonders wenn Sie ein neuer Absolvent sind. Ich würde Ihnen wärmstens empfehlen, einen Blick auf die 5 wichtigsten Fähigkeiten von Softwareentwicklern in einem Interview zu werfen, das eine großartige Zusammenfassung dieses Themas enthält.

Das erste, was ich tun würde, ist einen Blick auf die Karriereseite des Unternehmens zu werfen und die Stellenbeschreibungen zu lesen, um den technischen Hintergrund zu erfahren. Wenn Sie sich für einen Job bewerben, in dem Java als Hauptprogrammiersprache aufgeführt ist, müssen Sie auf einige Codierungsfragen in Java vorbereitet sein. Die Stellenbeschreibungen werden Sie auch auf die “nice to have” -Fähigkeiten wie maschinelles Lernen hinweisen.

Die Wichtigkeit vergangener Erfahrungen hängt vom Job ab. Es gibt einige Start-ups wie Rocket Fuel, die Fresh Grads einstellen. Als Absolvent ist es wichtig, dass Sie Projekte, Praktika und Programmieraufgaben auflisten, die Sie abgeschlossen haben, sowie Technologien oder Fähigkeiten, die verwendet wurden.

Es gibt viele Unternehmen, die Programmierherausforderungen hosten (Quora ist eine von ihnen) oder die Ihnen Herausforderungen vor dem Vorstellungsgespräch senden. Wenn sie eine Programmierherausforderung hosten, sollten Sie diese Fähigkeiten kennenlernen.