JavaRush /Java-Blog /Random-DE /Wie ein alter Humanist zur IT kam
PieIsLie
Level 35
Санкт-Петербург

Wie ein alter Humanist zur IT kam

Veröffentlicht in der Gruppe Random-DE
Feuerwerk! Eigentlich habe ich lange darüber nachgedacht, was genau ich in diesem Beitrag schreiben würde und ob ich ihn überhaupt schreiben würde. Zufälligerweise habe ich in den letzten zwei Jahren zu verschiedenen Zeitpunkten meine Chancen auf eine Stelle als Java-Entwickler unterschiedlich eingeschätzt: von „früher oder später – auf jeden Fall“ bis „In der IT habe ich keine Chance“. Wie ein alter Humanist zur IT kam - 1Allerdings sind fast genau zwei Jahre vergangen, seit ich mich bei JavaRush registriert habe. Vor ein paar Monaten erhielt ich mein erstes Angebot, wenig später mein zweites und dann begann ich einen neuen Job. Erfolgsgeschichten haben mir während des Kurses sehr geholfen, daher habe ich beschlossen, meine eigenen zu veröffentlichen. Da der Kurs im Jahr 1818 stattfand, sind einige Informationen möglicherweise nicht aktuell. Ich sage gleich, dass es viel Text geben wird, weil... Ich werde versuchen, Sie über Ausbildung und Jobsuche zu informieren (Anforderungen, Antworten, technische Spezifikationen, Vorstellungsgespräche usw.). Ich werde auch ein paar allgemeine Tipps aufschreiben, die mir persönlich geholfen haben und vielleicht auch anderen helfen. Kurz zu meiner Person: 32 Jahre alt, 10 Jahre Erfahrung in Management und Vertrieb, geisteswissenschaftliche Ausbildung und absolut kein technischer Hintergrund. Vor einigen Jahren habe ich versucht, in C++ und dann in Python einzusteigen – ich hatte nur Kopfschmerzen. Daher ist es schwierig, mich als talentierten Entwickler zu bezeichnen – eher das Gegenteil.

STUFE 1. Training

Ich bin bewusst zu JavaRush gekommen: eine angemessene monatliche Preisliste, eine klare Struktur des Materials, viel Übung und die Präsenz meiner eigenen Community. Der erste Punkt ist klar, aber das Erlernen einer Sprache ohne Struktur ist ziemlich schwierig, und ein solches Training hinterlässt mit Sicherheit gravierende Lücken in Java Core. Die Erfahrung aus Interviews und technischen Spezifikationen zeigt, dass Fragen zum „Kern“ für alles verwendet werden können: von der bitweisen Verschiebung und dem Casting von Generika bis hin zu IO und Serialisierung. Übung ist ein Muss; Ich kann immer noch nur die Hälfte der Dinge verstehen und merken, wenn ich sie selbst geschrieben habe. Nun, die Community: Sie haben das Problem gelöst – geben Sie in den Kommentaren damit an; Wenn Sie sich noch nicht entschieden haben, können Sie gerne Fragen stellen, aber höchstwahrscheinlich wird Ihnen niemand eine fertige Lösung geben. Und selbst nach Abschluss des Kurses bin ich wieder zu benutzerdefinierten Artikeln zu kostenlosen Themen zurückgekehrt, da gibt es für den Anfang viele gute Dinge (insbesondere die ersten Erfahrungen mit Frameworks anhand von Schritt-für-Schritt-Beispielen + Fragen für Interviews). Im Allgemeinen bin ich diesem Projekt für die Basis dankbar, die ich erhalten habe, aber ich würde mich nicht nur auf JavaRush verlassen – derselbe Shildt geht am besten „überlappend“ mit dem untersuchten Thema um und enthüllt oft einige Punkte. In den Rezensionen wurde bereits viel über Aufgaben gesagt, die manchmal über die Theorie hinausgehen und einen zu Google zwingen. Für mich ist das eher ein Plus als ein Minus – und es ist keine Tatsache, dass die Situation jetzt die gleiche ist wie zu meiner Studienzeit. Sofortiger Rat für diejenigen, die wie ich „von Grund auf“ in Java einsteigen : Irgendwann kann es sein, dass Sie sich langweilen oder Schwierigkeiten haben:
  1. Es ist für jeden schwer, bei Null anzufangen; Gott bewahre, nur 5 % der Menschen erreichen das Ende des Kurses. Ihre Aufgabe ist es, einer von ihnen zu werden.

  2. Nach ein oder zwei Monaten wurde mein Interesse geweckt, als die Aufgaben schwieriger und interessanter wurden. Sei geduldig.

  3. Die Hauptsache ist der wöchentliche Fortschritt. Nach zwei Wochen Ruhe ist die Rückkehr bereits schwierig und nicht jeder kann mehrere Monate hintereinander jeden Tag schreiben. Legen Sie für die Woche ein Stundenlimit fest – zum Beispiel 15. Sie können an jedem Wochentag 1,5 Stunden und an beiden Wochenenden weitere 3–4 Stunden programmieren, oder Sie können sich ein paar Abende frei nehmen, aber das „Wochenendlimit“ wird es tun Zunahme. Auf diese Weise wird der Zeitplan flexibel, aber regelmäßig sein. Natürlich wird es dann möglich sein, die Arbeit anhand von Aufgaben und Projekten zu messen, aber auf Syntax- und Kernel-Ebene reichen Stunden aus.
Im Allgemeinen habe ich etwa 5 Monate gebraucht, um den Kurs abzuschließen (bevor ich das Praktikum bekommen habe) , obwohl ich mir sowohl Urlaub als auch kurze Pausen leisten konnte; Auch hier blieben bei einer Fünf-Tage-Woche nur die Wochenenden und Werktagsabende von 22 bis 00 Uhr frei. Mit einem lockereren Zeitplan oder einem strengeren Trainingsplan können Sie also viel früher zurechtkommen. Dann wollte ich ein Praktikum machen, aber am Ende hat es nicht geklappt.

STUFE 2. Selbstbildung

Deshalb habe ich das Praktikum nicht bekommen: Ich hatte nur ein paar Tage Zeit, um mich mit den technischen Anforderungen zu befassen, bis ich in die Gruppe aufgenommen wurde, und hatte keine Zeit, mich mit den Anforderungen auseinanderzusetzen – es gab zu viele unbekannte Wörter. Weil Ich wollte nicht noch drei Monate warten, sondern beschloss, alleine weiterzumachen. Glücklicherweise gibt es Anleitungen und Video-Tutorials für alle gängigen Frameworks. In den nächsten Monaten beschäftigte ich mich mit Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, beherrschte SQL und versuchte, alles zu einem Ganzen zusammenzufügen. Sechs Monate später hatte ich Projekte, die jetzt beängstigend anzusehen sind, aber ich sammelte praktische Erfahrungen im Umgang mit „erwachsenen“ Frameworks und einem GitHub, die auf Wunsch eines potenziellen Arbeitgebers gezeigt werden konnten. Hinweis :
  1. Je früher Sie etwas über .gitignore erfahren, desto besser. ;)

  2. Viele Leitfäden enthalten mehrere Frameworks gleichzeitig; Verwenden Sie dies und fügen Sie Ihre eigenen hinzu. Wir haben einen Online-Shop mit Maven + Spring Boot + Data geschrieben – Autorisierung, Komponententests und Protokollierung hinzugefügt.

  3. Für Webprojekte können Sie kostenlose Frontend-Vorlagen aus dem Internet nehmen – sie sind angenehmer zu bearbeiten, sie sehen als Screenshots in der README auf Git besser aus. Gleichzeitig können Sie sich HTML und CSS merken – wahrscheinlich möchten Sie die Stile und das Layout korrigieren.

Der einfachste Weg, einen solchen Entwicklungsplan für sich selbst zu erstellen, besteht darin, sich die Stellenangebote von HH für Junior/Middle Java Developer anzusehen und herauszufinden, welche Technologien und Frameworks am häufigsten genannt werden. Schreiben Sie sie auf, erstellen Sie technische Spezifikationen dafür und setzen Sie sich Fristen für die Umsetzung. Wenn ich jedoch mit einem Praktikum vor Ort beginnen würde, müsste ich vielleicht nicht mehrere Monate mit Heimprojekten verbringen.

Was mir gefehlt hat (später habe ich mich bei einem Vorstellungsgespräch verbrannt)

  1. Algorithmen. Um meine Fehler zu vermeiden, empfehle ich sofort ein kurzes Buch auf Russisch, „Grocking Algorithms“. Was ist die Komplexität von Algorithmen, woraus besteht sie, warum reicht Quicksort nicht aus, eine Einführung in die Graphentheorie – alles ist da und in der verständlichsten Sprache.

  2. Sammlungen „unter der Haube“. Ich kann mich nicht erinnern, ob dies in JavaRush der Fall war, aber es ist nützlich zu wissen, wie HashMap.get() funktioniert oder warum ein HashSet nicht garantiert die Elementreihenfolge beibehält. Nochmals: Welche Sammlungen sind Thread-sicher und warum?

  3. SQL. Sie benötigen mindestens bis zu JOINs – was sie sind, wie sie funktionieren und die Fähigkeit, im Handumdrehen ein SELECT auf zwei Tabellen auf Papier zu schreiben. Ich empfehle www.sql-ex.ru: Es bringt Sie in ein oder zwei Tagen auf das gewünschte Niveau.

  4. Spring Core: Welche Annotationen gibt es, was ist ein Kontext, wie werden Beans erstellt, welcher Bean Scope ist Thread-sicher und wie löst man die gegenseitige Injektion – alles Interviewfragen. So geben Sie eine Seite zurück, wie geben Sie JSON zurück usw. Ich lese gerade „Spring 5 for Professionals“ auf Russisch, aber im Allgemeinen empfehlen sie „Spring in Action“.

STUFE 3. Jobsuche

Tatsächlich habe ich in den ersten paar Monaten nach Abschluss meiner Heimprojekte etwa 30 Antworten auf verschiedene offene Stellen für Junior-/Trainee-Mitarbeiter gesendet (über HH, LinkedIn, Personalvermittlungsagenturen), mit nahezu null Ergebnissen. Ich konzentrierte mich nur auf offene Stellen ohne Erfahrung, gab ehrlich einen mir bekannten Stapel an und schrieb in Anschreiben über meine hohe Lernfähigkeit. Das Ergebnis sind zwei Anrufe (von denen einer sofort in meinem Vor-Mittelstufe-Englisch endete), zwei weitere Unternehmen schickten technische Spezifikationen, es gab nur ein „Treffen“ und dann war ich alleine dort und löste Probleme zu Algorithmen auf einem Blatt Papier. Danach nahm die Personalabteilung einfach die Papiere weg und sagte: „Wir rufen Sie an.“ Ich habe versucht, ein paar Praktika (unbezahlt und bedingt bezahlt) zu bekommen: Ich habe die technische Spezifikation gemacht, bin aber nicht über die endgültige Sozialversicherung hinausgekommen; Aber jetzt kann ich sagen, dass Auszubildende auf jeden Fall von T-Systems, CFT, Andersen und EPAM eingestellt werden (die Bewertungen sind gemischt, entscheiden Sie selbst). Für mich ist es ein guter Einstieg in das Feld, wenn man die Möglichkeit hat, mehrere Monate ohne Einkommen zu sitzen und nicht zu sterben =) Im Allgemeinen wurde ich nach dieser Erfahrung etwas deprimiert und habe die ganze Geschichte mit der Suche auf Eis gelegt Fast sechs Monate lang habe ich weiter am vorherigen Profil gearbeitet, einige Anwendungen nur zum Spaß geschrieben, sie aber nicht einmal auf Git gepostet. Bis ich einen Bekannten traf, dem ich beiläufig von den Misserfolgen bei offenen Stellen erzählte: Damals arbeitete er bereits als Mittelentwickler, begann aber genauso – mit dem Selbststudium. Ein Bekannter gab mir ein paar Empfehlungen , die er selbst nutzte und die mir bei meiner zukünftigen Jobsuche sehr geholfen haben. Ob Sie ihnen folgen oder nicht, liegt bei Ihnen, denn... Sie sind in gewisser Weise nicht ganz ehrlich. Also weitere Zitate:
  • Sorgen Sie in Ihrem Lebenslauf auf jeden Fall für mehr als 6 Monate Berufserfahrung: Praktika, Abschlussarbeiten, freiberufliche Tätigkeit, Remote-Arbeit – was auch immer. Dies wird in der Phase der ersten Prüfung von Lebensläufen durch die Personalabteilung eine große Hilfe sein;

  • Entfernen Sie das Wort „Junior“ und das erwartete Gehalt aus Ihrem Lebenslauf. Belassen Sie es einfach beim Java-Entwickler und besprechen Sie das Geld individuell mit jedem Unternehmen.

  • Versuchen Sie, dass die Personalabteilung den „Fork“ des vorgeschlagenen Gehalts nennt, bevor Sie Ihre Erwartungen nennen. Wenn ein Unternehmen 80.000 bis 120.000 Euro anbietet und Sie 40.000 Euro oder mehr suchen, werden Sie von einigen Anbietern mit Verachtung behandelt.

  • Bewerben Sie sich auf alle offenen Stellen, die zu Ihnen passen, auch wenn diese 1–3 Jahre kaufmännische Erfahrung erfordern.

Nachdem ich alle diese Empfehlungen befolgt hatte, verbesserte sich die Suchsituation deutlich. Erstens endete die Hälfte der etwa 12 neuen Antworten fast sofort in einem Meeting, Skype oder TK (was sich bereits stark von der Ignorierung in den vergangenen Monaten unterschied). Zweitens fingen HR-Leute an, mir zu schreiben, auf die ich nicht antwortete – in Instant Messengern, per E-Mail, auf LinkedIn. Drittens erwiesen sich die Anforderungen an die kaufmännische Erfahrung als wirklich nicht zu streng – viele Unternehmen waren bereit, mit einem Kandidaten zu kommunizieren, der nicht in den vorgegebenen Bereich von 1–3 Jahren Unternehmenspraxis fiel. Als Ergebnis - ein Angebot für einen Junior, eines für einen Middle mit Probezeit. Insgesamt dauerte die Suche zwei Monate. Hinweis :
  1. Fügen Sie in Ihren Lebenslauf den gesamten Stapel an Sprachen, Technologien und Frameworks ein, mit denen Sie gearbeitet haben.

  2. Registrieren Sie sich auf LinkedIn – dort sind wirklich viele HR-Leute aus verschiedenen Unternehmen. Füllen Sie Ihr Profil sorgfältig aus – tatsächlich ist dies auch Ihr Lebenslauf. Um Ihr Kontaktnetzwerk auszubauen, fügen Sie LIONs hinzu, die für Ihr Profil relevant sind. Sie akzeptieren Anfragen von allen Benutzern.

  3. Probieren Sie sich in kostenlosen Java-Tests aus – diese werden oft vor dem Junior-Interview auf Papier durchgeführt. Es ist besser, sich im Voraus vorzubereiten.

Ein paar Worte zu Interviews
  1. Sie fragen immer nach den Kollektionen: Welche gibt es, wie unterscheiden sie sich, wann kann man sie am besten nutzen?

  2. Immer bei abstrakten Klassen und Schnittstellen – können sie Methoden und Felder haben, welche, können sie vererbt werden usw.

  3. Fast immer zum Thema Multithreading – was Sie in Ihrer Arbeit verwendet haben, Schlüsselwörter, Methoden, sind Sie mit util.concurrent vertraut?

  4. Bei der Arbeit mit dem Speicher kommt es häufig vor, dass der Heap und der Stapel gleich sind und ob diese Zeichenfolgen und diese Objekte gleich sind.

  5. Manchmal über Algorithmen – welche kennen Sie, welche Komplexität, warum, können Sie jetzt einen Algorithmus schreiben?

  6. Schreiben Sie manchmal basierend auf Mustern – welche Sie kennen, welche Sie verwenden – einen Singleton oder eine Factory.

  7. Manchmal in SQL - Arten von JOINs, was eine Transaktion ist, wie man sie in JDBC durchführt, schreiben Sie eine kurze Abfrage.

Tatsächlich hängt alles sehr vom Unternehmen ab : Jemand stellt keine einzige Frage zu Java Core, sondern verbringt 40 Minuten damit, über Frameworks und SQL zu reden; Manche Leute verwenden überhaupt keine gängigen Frameworks und fragen nur nach Algorithmen, Typen, Sammlungen und Speicher. Ungefähr die Hälfte der Treffen begann mit Tests – manchmal auf Russisch, manchmal auf Englisch (20–30 Fragen für 20–30 Minuten); Normalerweise werden Fragen auf der Ebene „Hier ist der Code, wird er ausgeführt oder nicht und wenn nicht, dann in welcher Zeile“ oder „Hier sind mehrere Objekte, werden sie nach N Operationen gleich sein“ gestellt. Ein paar Worte zu den technischen Spezifikationen : 70 % der Unternehmen, die mit der Kommunikation beginnen, haben mir vor oder nach dem Meeting technische Spezifikationen geschickt. Normalerweise dauert die Fertigstellung ein paar Tage bis eine Woche, aber meistens können die Fristen etwas verschoben werden. Als technische Spezifikationen kann alles verwendet werden. Hier sind die Beispiele, die ich gemacht habe:
  • Seite „Geschäftskontakte“ im Salesforce-Profil mit Bearbeitung und Hinzufügen neuer Datensätze;

  • Simulation eines Aufzugs in einem mehrstöckigen Gebäude mithilfe der Spring State Machine mit Konsolensteuerung;

  • Android-Anwendung basierend auf der LibGDX-Bibliothek mit zeichenweiser Textausgabe bei Tastendruck;

  • REST-Imitation von Carsharing, mit Hinzufügen von Clients über eine HTTP-Anfrage und Rückgabe von JSON;

  • Problem beim Sortieren eines ungerichteten Graphen durch eine freie Zelle;

  • Suche nach gleichschenkligen Dreiecken mithilfe von Koordinaten aus einer Datei;

  • Refactoring des fertigen Codes mithilfe der Stream-API;

  • UI-Rechner mit Unterstützung für ternäre Ausdrücke;

  • Rennen der Threads mit dem Schreiben der Ergebnisse in eine Datei.

Manchmal wird verlangt, dass Berechnungsmethoden durch Unit-Tests abgedeckt werden und Abfragemethoden durch Integrationstests abgedeckt werden. Hinweis :
  1. Versuchen Sie nicht nur, die Aufgabe abzuschließen, sondern auch sicherzustellen, dass der Code den OOP-Prinzipien entspricht.

  2. Überprüfen Sie Ihren Code auf Effizienz – ich wurde einmal abgelehnt, weil ich unter anderem PrintStream anstelle von BufferedWriter verwendet habe.

  3. Planen Sie Ihre Ausführungszeit mit einer Marge von 50 % – es ist besser, früher zu beginnen und fertig zu werden, als um acht Uhr morgens nach Ablauf der Frist einen Git-Push durchzuführen.

Nun, ich glaube, ich habe alles geschrieben, was ich wollte. Das Wichtigste ist, dass Wasser Steine ​​abwetzt. Man kann nicht viel, viel in Java schreiben, dann lange, lange nach einem Job suchen und am Ende nichts finden. Wenn ein 30-jähriger Geisteswissenschaftler es geschafft hat, können Sie es noch besser machen. Die Hauptsache ist, keine Angst vor den ersten Anrufen, technischen Aufgaben und Vorstellungsgesprächen zu haben: Nach jeder vergeblichen Zeit habe ich garantiert etwas für mich gelernt und es verbessert – je länger, desto sicherer fühlt man sich. Wenn es irgendwo chaotisch gelaufen ist oder es Fehler gibt, entschuldige ich mich im Voraus, schreibe, ich werde es korrigieren. Ich hoffe, meine Erfahrung hilft zumindest jemandem =)
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION