Wie umfangreich sollte ein GitHub-Portfolio für einen CS-Studenten ohne „reale“ Erfahrung sein, der sich sein erstes Praktikum sichern möchte?

Ich bin ein CS-Student, der die Oberstufe des Studiengangs erreicht hat. Als jemand, der absolut keine Erfahrung in der „realen Welt“ in Bezug auf einen Job im Zusammenhang mit Computern hat, ist es für mich absolut entscheidend, mich für Praktika zu bewerben.

Ich bin jedoch ein wenig überwältigt und verwirrt darüber, wie robust mein GitHub-Portfolio sein muss.

Meiner Meinung nach ist ein GitHub-Portfolio, in dem Sie Ihre Programmierkenntnisse unter Beweis stellen können, unerlässlich, wenn Sie sich für eine Stelle im Bereich Informatik bewerben.

Meine Verwirrung betrifft die Frage, wie viele und welche Arten von Programmen ich in meinem GitHub platzieren sollte und in wie vielen verschiedenen Sprachen ich codieren muss?

Die Programme, die ich in verschiedenen Klassen geschrieben habe, sind ziemlich verstreut, einige sind ziemlich mittelmäßig, wie das Programmieren eines einfachen Taschenrechners, um zu lernen, wie man GUIs programmiert. Oder sehr einfache Programme zum Erlernen einfacher Datenstrukturen.

Andere sind etwas komplexer wie Code, den ich in meinem Algorithmus-Kurs geschrieben habe, aber im Algorithmus-Kurs erforderte jede Codierungsaufgabe, dass wir die vorherige Aufgabe ergänzen mussten, sodass wir am Ende des Kurses im Wesentlichen nur ein riesiges Programm mit viel hatten unterschiedlicher Funktionalität. Ich mache mir Sorgen, dass mein GitHub-Portfolio dadurch etwas spärlich aussehen könnte.

Schlimmer noch, ich habe so ziemlich nur in Java codiert, daher wäre es etwas schwierig für mich, Programme in C oder C++ zu codieren. Tatsächlich habe ich Python noch nicht einmal gelernt, weil ich mein Studium begonnen habe, bevor Python populär wurde, als die bevorzugte Sprache Java war.

Ich mache mir Sorgen, dass die Codierung eines robusten, detaillierten Portfolios für GitHub Wochen (vielleicht sogar Monate?) dauern könnte, insbesondere wenn ich Code in mehr Sprachen als nur Java einfügen muss. Ich mache mir Sorgen, dass dies so viel Zeit und Mühe in Anspruch nehmen wird, dass es meine Fähigkeit, mich tatsächlich für Praktika zu bewerben, erheblich verzögern wird.

Wenn mir jemand ein paar Vorschläge machen könnte, wie detailliert ein GitHub für Studenten sein sollte, die ihr erstes Praktikum suchen, wäre ich sehr dankbar.

Ich denke, Sie müssen die Prämisse Ihrer Frage bewerten. Siehe arbeitsplatz.stackexchange.com/questions/64445/…
Willkommen, Trixie! Da muss ich @nvoigt zustimmen. Für das, was es wert ist, ich bin seit ungefähr 16 Jahren ein professioneller Entwickler mit allen Arten von Unternehmen, sei es mit 400.000 Mitarbeitern oder einem 6-Personen-Startup, und ich bin mir nicht sicher, ob ich überhaupt ein Github-Portfolio HABE. Ich weiß, dass ich ein Konto habe, aber ich erinnere mich nicht, ob es dort überhaupt etwas gibt. Ein Portfolio zu haben ist definitiv nützlich, weil Sie auf Lösungen zurückgreifen können, die Sie sich für Probleme ausgedacht haben, mit denen Sie möglicherweise wieder konfrontiert werden, aber versuchen Sie, sich nicht zu sehr darüber aufzuregen. Wenn du überhaupt etwas gepusht hast, dann bist du mir schon voraus!

Antworten (6)

Ich weiß nichts über Praktika, aber ich habe heute schon zu einer anderen Frage geschrieben, dass sich Arbeitgeber bei echten Jobs fast nie das persönliche GitHub-Portfolio eines potenziellen Mitarbeiters ansehen. Ich würde davon ausgehen, dass Praktika größtenteils gleich sind, obwohl sie sich Ihren GitHub möglicherweise etwas genauer ansehen, da sie nicht erwarten, dass Sie einen robusten Lebenslauf haben. Während ich sagen würde, dass es für einen richtigen Job zu 100 % nutzlos ist, würde ich sagen, dass es für ein Praktikum vielleicht nur zu 80 % nutzlos ist.

Was Sie anziehen sollten: Legen Sie einfach alles hinein, nur um zu zeigen, dass Sie etwas drin haben. Vielleicht möchten Sie Ihren Projekten einige aussagekräftige Namen oder kurze Beschreibungen geben, die besonders unscheinbar sind, damit school-assignment-calculatorjeder, der es liest, weiß, dass er nicht zu viel erwarten darf. Stellen Sie jedoch keinen Code ein, der zu chaotisch ist, und stellen Sie sicher, dass Sie Ihre beste Arbeit präsentieren, da Arbeitgeber möglicherweise darauf achten und Sie Ihr Bestes zeigen möchten.

Was die Frage betrifft, welche oder wie viele Sprachen angeboten werden sollen, lautet die Antwort "Funktionieren Sie, was bequem ist". Wenn Sie in Java arbeiten möchten, spricht nichts dagegen, nur Java-Anwendungen anzubieten. Wenn Sie Ihr Portfolio einem Unternehmen präsentieren möchten, das mit Python arbeitet, wird es wahrscheinlich nicht von einem Portfolio in Java beeindruckt sein, und Sie müssen möglicherweise etwas Python präsentieren. Wenn Sie Ihr Portfolio nur Unternehmen präsentieren möchten, die mit Java arbeiten, ist es wahrscheinlich nicht produktiv, viel Zeit mit dem Lernen und Schreiben von Python zu verbringen. Es liegt also wirklich an dem, was Sie wollen / erwarten.

Die Sache ist, dass mein öffentlicher Github keinen echten Produktionscode enthalten wird. Wenn ich damit Geld verdiene, mache ich die Quelle nicht der Öffentlichkeit zugänglich! Wenn es von einem anderen Arbeitgeber stammt, ist das klarer IP-Diebstahl und ich kann verklagt werden, also bleiben nur Schmuck und triviale Dinge übrig, die im Grunde keine Produktionsarbeit sind.
@Nelson Daher ist es überhaupt nicht sinnvoll, ein solches Portfolio zu haben, und so begann ich meine Antwort.
@Nelson Sie setzen einen schädlichen Irrtum fort, dass Open Source irgendwie ein Gräuel für Profit ist, und Ihre Behauptung lässt sich leicht entlarven, indem Sie viele FOSS-Projekte auf Github beobachten, die jeden Tag unzählige Produktionssysteme unterstützen. Noch weniger hilfreich insofern, als die Beteiligung an einem großen FOSS-Projekt einer der stärksten Schritte für Menschen in der Situation von OP wäre.
Für mich spielt die Programmiersprache keine Rolle - zumindest für Einsteiger. Es geht viel mehr um klare Struktur und Kommunikation, wenn Sie Pull Requests zu anderen Projekten beigetragen haben. Ich gehe davon aus, dass sie die Syntax in ein paar Wochen lernen können, aber manche Leute lernen nie, was sauberer Code bedeutet. Zeigen Sie also Ihre beste Arbeit - die Programmiersprache ist nur ein Werkzeug.
Warum sehen sich Arbeitgeber Ihr Portfolio nicht an, wenn Sie zB ein frischgebackener Absolvent sind? Das scheint mir der zuverlässigste Weg zu sein, um anzuzeigen, dass Sie tatsächlich in der Lage sind, etwas anderes zu codieren, als eine Referenz zu kontaktieren (was auch fast niemand tut). Welche Praktika ein Kandidat absolviert hat, sowie seine Whiteboard-Codierfähigkeiten können völlig orthogonal zu seinen tatsächlichen Fähigkeiten sein.
@Peter Abgesehen von der Tatsache, dass sie es nicht tun sollten, ob sie es sollten oder nicht, ist der Grund, warum sie es nicht tun sollten, dass sie keine wirkliche Garantie dafür haben, dass Sie tatsächlich geschrieben haben, was da ist. Sie könnten zum Beispiel einen Freund haben, der ein wirklich guter Entwickler ist, und Sie sagen zu ihm: „Hey, ich brauche ein Portfolio. und sie geben es dir, und du studierst es gut genug, um flüchtige Fragen dazu zu beantworten, die in einem Interview auftauchen könnten. Es ist ziemlich einfach zu fälschen. Der beste Weg, um herauszufinden, ob jemand programmieren kann, besteht darin, ihn zu bitten, zu programmieren und zu sehen, was er tut.
@Ertai87: Einige Unternehmen sehen sich definitiv Codebeispiele an. Außerdem testen Programmierinterviews keine tatsächlichen Softwareentwicklungstests (zumindest keine, die ich jemals durchlaufen habe) und viele Entwickler werden stattdessen keine Aufgaben mehr mit nach Hause nehmen (denn warum sollten sie, wenn sie einfach einen anderen Job annehmen könnten, der dies nicht tut? habe diesen Reifen). Wenn jemand ein nicht triviales Projekt hochlädt, wie wahrscheinlich ist es, dass jemand anderes es ihm gerade gegeben hat? Das heißt, ich schreibe ein Betriebssystem, würde ich lieber a) das meinem eigenen Portfolio hinzufügen oder b) meine Hunderte von Arbeitsstunden ohne triftigen Grund jemand anderem überlassen.
@Peter Niemand stellt ein selbst erstelltes Betriebssystem auf GitHub. Und wenn sie es täten, wäre ich äußerst skeptisch, ob sie es tatsächlich selbst geschrieben haben (und nicht in einer OSS-Gruppe). Wie ich oben geschrieben habe, hatte ich meinen GitHub 5 Jahre lang in meinem Profil, ich habe in diesem Zeitraum wahrscheinlich etwa 30 Vorstellungsgespräche geführt (das ist wahrscheinlich eine vorsichtige Schätzung, es waren wahrscheinlich viel mehr), und kein einziges Mal hat jemand etwas erwähnt oder gefragt alles über alles auf meinem GitHub. Vielleicht sehen Sie sich das persönlich an, aber Sie sind in der Minderheit.
@Ertai87, danke für deinen Kommentar. Eine zusätzliche Frage: Sollte ein Programm, das auf GitHub (oder einem anderen Portfolio-Host) gepostet wird, iterative Versionen zeigen, z. B. Version 1 mit den Fehlern a, b, c, d, Version 2 nur mit den Fehlern c, d, dann Version 3 ohne Fehler, usw? Oder soll das Programm nur ein fertiges Programm sein, in dem alle Fehler behoben sind?

Nach meiner Erfahrung als Junior-Programmierer wird mein Portfolio auf Github sehr SEHR selten überprüft. Um Ihnen eine konkrete Antwort darauf zu geben, wie viele Projekte Sie haben sollten, sind vielleicht mehr als 5. Haben Sie einige dumme Projekte wie Wetter-API-App, Taschenrechner-App und solche Sachen. Wenn jemand nachsehen wollte, gib ihm etwas zum Ansehen. Es beweist, dass Sie wissen, wie Git funktioniert.

Da Sie ein Absolvent sind, ist es etwas wichtiger, dort etwas Arbeit zu haben, aber selbst dann müssen Sie nicht. Einmal wurde mir eine React.js-Rolle angeboten. Sie fragten mich, ob ich Reaktions-Apps auf meinem Github habe, ich sagte, ich habe noch keine, wurde aber trotzdem eingestellt.

Die Idee eines Portfolios wird stark überschätzt. Das werden Ihnen Personalvermittler und Gurus auf LinkedIn sagen. Was Ihnen Jobs bringt, ist einfach, wie gut Sie sich mit Ihrem Lebenslauf und Ihren Vorstellungsgesprächen präsentieren. Solange das gut ist, können Sie sicher auch ohne Github Jobs erzielen. Mein Kumpel weiß nicht einmal, wie man Git benutzt, aber er wurde eingestellt. Er hat einfach versprochen, dass er es lernen würde

Dies hängt davon ab, was der jeweilige Arbeitgeber sucht. Die Qualität Ihres öffentlichen GitHub-Portfolios (oder das Fehlen eines solchen) ist einer von vielen entscheidenden Faktoren, und ich habe noch nie gesehen, dass dies ein Deal-Breaker war. Wenn der Personalchef unschlüssig ist, Sie einzustellen, könnte ein großartiges GitHub-Portfolio den Ausschlag zu Ihren Gunsten geben. Oder Sie treffen vielleicht auf einen Personalchef, der sich nicht die Zeit nimmt, Ihr Portfolio zu sichten, und stattdessen die Entscheidung ausschließlich auf der Grundlage des Vorstellungsgesprächs trifft.

Nimm, was du schon hast, und repariere es so gut du kannst. Wenn Sie Zeit haben, fügen Sie ein Feature/Framework/Muster hinzu, an dem Sie interessiert sind. Wenn Sie danach mehr Zeit haben, starten Sie ein lustiges neues Projekt in einer der von Ihnen aufgeführten Technologien, mit denen Sie noch nicht vertraut sind, um zu zeigen, dass Sie es sind sind lernwillig.

Ihr Portfolio sollte glaubwürdig nachweisen , dass Sie über ausreichende Fähigkeiten für die Stelle verfügen, auf die Sie sich bewerben. Da Sie keine Berufserfahrung haben, liefert Ihr Portfolio den nächstbesten Indikator für Ihre Fähigkeit, reale Softwareprojekte durchzuführen. Idealerweise möchten Sie also, dass Ihr Portfolio so nah wie möglich an dem Job ist, den Sie tun würden. Es ist in Ordnung, wenn es nicht perfekt zusammenpasst, aber je näher Sie kommen, desto besser.

  • Der Projektumfang muss nicht trivial sein. Spielzeugprogramme, Grundübungen und Triviales sind hier keine gute Wahl, da sie kein hohes Können demonstrieren. Zum Beispiel ist ein einfacher Taschenrechner etwas, das Leute während Interviews codieren. Es fügt Ihrer Anwendung nichts Neues hinzu. Ein komplexer Taschenrechner, der Einheitenumrechnungen, Algebra, Kalkül oder Grafiken unterstützt, ist eine andere Sache.
  • Der Tech-Stack muss relevant sein. Wenn Sie sich bei einem Java-Shop bewerben, sind Projekte in Java besser. Allerdings ist viel CS sprach-/plattformunabhängig. Selbst wenn Sie also nur C- und C++-Projekte haben und während des Vorstellungsgesprächs bei der Java-Challenge gut abschneiden, ist es kein Sprung zu sagen, dass sich Ihre C/C++-Kenntnisse auf Java übertragen lassen würden. Aber das ist , wenn Sie mit Ihrem C/C++-Portfolio zum Java-Interview eingeladen werden.
  • Die Domäne muss relevant sein. Wenn Sie sich für eine Frontend-Position bewerben, verbringen Sie auf jeden Fall Zeit mit der GUI und stellen Sie sicher, dass Sie gute Arbeit leisten. Aber erwarten Sie nicht, dass ein GUI-lastiges Projekt in einer Backend-lastigen Position viel für Sie tut. Es zeigt nicht nur nicht so viel Kompetenz in Zielbereichen, sondern wirft auch die Frage auf, ob Sie überhaupt gerne im Backend arbeiten würden, wenn Sie in Ihrer Freizeit immer nur Frontend-Projekte und nie Backend machen. Wenn Sie an Netzwerken interessiert sind, ist eine Peer-to-Peer-Anwendung ebenfalls gut, ein reines Einzelspieler-Textadventure-Spiel ist nicht so gut.
  • Es muss klar erklärt werden. Wenn die Leute nicht einmal sagen können, was Ihr Projekt ist oder wofür es ist, kann es kein starker Beweis sein. Es kann sogar als Beweis dafür gewertet werden, dass es schwierig wäre, mit Ihnen zu arbeiten, weil Sie Ihre Arbeit nicht gut erklären können. Stellen Sie also sicher, dass Ihre Readme-Datei und alle Dokumente vorhanden sind, Ihr Code kommentiert ist, Ihr Git-Verlauf aufgeräumt ist usw. Stellen Sie aber auch zu Beginn des Projekts sicher, dass es ein klares Problem löst , das für die Leute leicht verständlich ist.

Du musst nicht alle vier Kategorien mit Bravour meistern, schon gar nicht für ein Praktikum. Der Großteil Ihrer Konkurrenz hat überhaupt kein Portfolio. Aber wenn Sie nach Möglichkeiten suchen, Ihr Portfolio zu stärken, sollten Sie sehen, welche Kategorie am schwächsten ist, und daran arbeiten. Machen Sie sich keine Sorgen, in einem von ihnen einen perfekten Job zu machen. Zum Beispiel ist es in Ordnung, einige triviale Projekte zu haben, Sie müssen sie nicht löschen oder verstecken. Mit nur einem nicht-trivialen Projekt demonstrieren Sie bereits Ihre Fähigkeit, nicht-triviale Dinge zu erreichen. Aber natürlich ist ein relevantes nicht-triviales Projekt besser als ein irrelevantes nicht-triviales Projekt, weil es ein direkterer Beweis dafür ist, dass Sie in diesem bestimmten Bereich nicht-triviale Arbeit leisten können.

Schließlich spielt die Anzahl der Projekte keine Rolle, solange sie diese Punkte ansprechen. Wenn Sie alle vier Ziele in einem einzigen starken Projekt erreichen können, dann ist es in Ordnung, ein Portfolio mit nur einem Projekt darin zu haben. Tatsächlich sind Sie mit einem großen Projekt besser dran als mit vielen kleinen Projekten.

Meiner Meinung nach ist ein GitHub-Portfolio, in dem Sie Ihre Programmierkenntnisse unter Beweis stellen können, unerlässlich, wenn Sie sich für eine Stelle im Bereich Informatik bewerben.

Sie können dafür Ihr GitHub-Profil verwenden, aber es ist nicht unbedingt erforderlich. Viele Arbeitgeber sehen sich das nicht an – sie verlassen sich eher darauf, Ihnen technische Tests zu geben, um zu sehen, ob Sie Probleme lösen können. Und es gibt noch andere Möglichkeiten, Ihre Arbeit zu präsentieren.

Als jemand, der an der Einstellung von Entwicklern beteiligt war, wäre ich viel beeindruckter, wenn Ihr "Portfolio" aus einem laufenden System bestünde, das ich tatsächlich verwenden und testen könnte.

Eine Auswahl des von Ihnen geschriebenen Codes zeigt mir, wie Sie Code schreiben, aber wenn Sie mir ein laufendes System zeigen, zeigt mir das, dass Ihr Code tatsächlich funktioniert und dass Sie wissen, wie man ihn einsetzt.

Der einfachste Weg, jedem, der Ihren Lebenslauf lesen wird, ein lauffähiges System zu bieten, besteht wahrscheinlich darin, eine Website zu erstellen. Es gibt Hosting-Anbieter, die für solche Dinge kostenlose Stufen anbieten. Zugegeben, dies ist auf die Webentwicklung ausgerichtet; Es ist vielleicht schwieriger, Ihr Wissen über Konzepte auf Betriebssystemebene in einer Web-App zu zeigen. Aber es gibt noch viele andere Dinge, mit denen Sie angeben können – Datenbankkenntnisse zum Beispiel. Und für jemanden, der ohne jegliche Erfahrung in der „realen Welt“ anfängt, ist die Webentwicklung nicht der schlechteste Ausgangspunkt, auch wenn es bedeutet, sich einige grundlegende Webentwicklungsfähigkeiten anzueignen.

BEARBEITEN

Ich habe das oben Gesagte geschrieben und dabei hauptsächlich an reguläre Stellen gedacht, nicht an Praktika. Es lässt sich nicht sehr gut auf Praktika anwenden, da Schulen sich fast ausschließlich darauf konzentrieren, ihre Schüler Code schreiben zu lassen, obwohl fast alle Softwarejobs das Erstellen von Systemen beinhalten, von denen das Schreiben von Code nur ein Teil ist.

Als Person, die an der Einstellung beteiligt ist, möchte ich etwas über Ihre einschlägigen Erfahrungen in der Vergangenheit wissen. Wenn Sie frisch von der Schule kommen, zählen wahrscheinlich nur die Aufgaben, die Sie in der Schule erledigt haben. Es wäre also toll, wenn Sie diese liefern könnten. Sie stehen anstelle dessen, was in einem reiferen Lebenslauf frühere Berufserfahrung wäre.

GitHub ist ein bequemer Ort, um solche Dinge zu teilen, aber es muss natürlich nicht auf GitHub sein. "Frühere" Bewerbungen bestanden manchmal aus Anschreiben, Lebenslauf und Codebeispiel auf 3 separaten Blättern.

Und es muss nicht umfangreich sein. Wichtig ist, dass es widerspiegelt, dass Sie die Aufgabe verstanden haben . Fügen Sie die Note hinzu, die Ihnen der Ausbilder oder TA für die Aufgabe gegeben hat. Wenn die Zuweisung für eine GUI war, fügen Sie einen Screenshot hinzu.

Auch dies steht anstelle der bisherigen Berufserfahrung, die Sie noch nicht haben. Ihre Bewertung wird mit ziemlicher Sicherheit in erster Linie darauf basieren, wie Sie die Fragen im Interviewprozess beantworten, und nicht auf der Qualität dieses Codes. Aber es ist gut zu zeigen, dass man etwas erreicht hat , auch wenn „etwas“ bei einer Schulaufgabe nur gut läuft.

Zufälligerweise habe ich gerade heute früh ein Praktikumsangebot an einen Kandidaten verschickt. Wir stellen direkt von der Fakultät für Informatik an der Universität ein, an der ich arbeite, was bedeutet, dass fast niemand über die Menge an Berufserfahrung verfügt, die mich davon überzeugen könnte, sie direkt einzustellen, und es bedeutet, dass jeder fast genau die gleiche Programmiererfahrung hat.

Also drehen wir es um. Wir konzentrieren uns nicht auf die Programmiererfahrung. Wir konzentrieren uns auf alle anderen Dinge. Dinge, die manche Leute Soft Skills nennen , aber ich mag diesen Begriff nicht, da sie so viel wichtiger sind als die Fähigkeit, Code zu schreiben.

Wenn wir Bewerbungen auswerten und Vorstellungsgespräche führen, konzentrieren wir uns auf die Kommunikationsfähigkeit der Menschen. Die Geschichten über die Projekte, an denen sie gearbeitet haben, und was sie daraus gelernt haben. Wie haben sie ihre Zeit und ihren Projektumfang verwaltet? Haben sie sich auf ein Minimum Viable Product geeinigt und von dort aus iterativ gearbeitet, um sicherzustellen, dass sie ein Ergebnis hatten? Was haben sie getan, um die technische Qualität sicherzustellen und Regression zu verhindern? Die Antworten auf diese Fragen haben sehr wenig mit Code oder bestimmten Tools zu tun.

Diese Erfahrungen stammen oft aus praktischen Projekten. Aber selbst wenn Sie den Code nicht zeigen können, können Sie das, was Sie gelernt haben, teilen. Nehmen Sie sich also etwas Zeit, machen Sie sich eine schöne Tasse Tee und setzen Sie sich mit Stift und Papier hin. Beginnen Sie dann aufzuschreiben, was Sie aus jedem Ihrer Projekte gelernt haben, die guten und die schlechten. Damit machen Sie zwei Dinge: Sie schreiben Ihre Geschichte (wer bin ich und wie bin ich gewachsen), und Sie erstellen sich eine „To-Do-Liste“ mit Dingen, die Sie als wichtig identifiziert haben, zu denen Sie jedoch noch nicht gekommen sind. Wenn Sie die Möglichkeit haben, sich diesen Dingen zu widmen und Erfahrungen zu sammeln, ist das ein wunderbares Privileg. Aber wenn nicht, fügen Sie es der Geschichte hinzu und nennen es "Reflexion", was eine ebenso wichtige Fähigkeit ist wie alle anderen.