Wie man einem unerfahrenen Entwickler in einem Interview überlebt und bei der Arbeit nicht verrückt wird



Von einem Übersetzer: Valery Aleksiev, ein erfahrener Programmierer, sprach zu Beginn seiner Karriere darüber, was ein Softwareentwickler am besten kann. Insbesondere, welche Tools es wert sind, verwendet zu werden, und worauf in Interviews zu achten ist.

Die ersten Jahre meiner Karriere waren Jahre intensiven Trainings. Ich stieß auf eine harte Realität und erkannte, dass ich viele verschiedene Fähigkeiten erwerben musste, an die ich vorher noch nicht einmal gedacht hatte. Aus diesem Grund habe ich beschlossen, einen kleinen Leitfaden für andere Entwickler zu schreiben. Der Artikel enthüllt Themen wie Interviews, die Arbeit als Programmierer und Ressourcen, die zur Verbesserung beitragen.

Vorstellungsgespräche


Nachdem Sie eine Karriere als Programmierer begonnen haben, werden Sie sofort feststellen, dass Interviews scheiße sind. Sie können für alle Beteiligten schrecklich sein. Sie sind einfach Zeitkiller, ein stressbildender Faktor und das erste Hindernis für eine erfolgreiche Karriere. Aber Sie müssen sich mit ihnen befassen, daher ist es besser zu wissen, worauf Sie sich vorbereiten müssen.

Kampfvorbereitung

Fragen und Aufgaben können sehr unterschiedlich sein. Als Beispiel werde ich die beliebte FizzBuzz-Aufgabe anführen.

Schreiben Sie ein Programm, das Zahlen von 1 bis 100 anzeigt. Für Zahlen mit einem Vielfachen von drei müssen Sie jedoch Fizz anstelle der Zahl selbst und für Zahlen mit einem Vielfachen von fünf Buzz ausgeben. Zeigen Sie für Zahlen mit Vielfachen von drei und fünf das Wort FizzBuzz an.

Alles scheint so einfach und klar wie am Tag zu sein, oder? Tatsächlich scheitern die meisten Programmiereranfänger beim Vorstellungsgespräch. Ich habe sogar Fälle gesehen, in denen Bewerber für die leitende Position die Aufgabe nicht erledigt haben und außerdem Zugang zum Netzwerk hatten. Mein Rat ist, diese Aufgabe vor dem Interview in der Programmiersprache zu erledigen, die Sie am häufigsten verwenden. Andernfalls ist das Interview für alle Teilnehmer Zeitverschwendung.

Natürlich brauchen Sie viel mehr Wissen. Insbesondere:

  • Grundlegende Datenstrukturen und Algorithmen: verknüpfte Listen, Arrays, Bäume und Sortierungen.
  • Allgemeine Informationen zu „Ihrer“ Sprache, einschließlich Unveränderlichkeit von Zeichenfolgen, Speicherverwaltung und mehr.
  • Objektorientierte Programmierkonzepte wie Klasse gegen Objekt und Vererbung.

All dies muss buchstäblich auf Hochglanz poliert werden, wenn Sie sich von der besten Seite zeigen wollen. Ich kann solche Ressourcen empfehlen, die bei der Vorbereitung auf Interviews helfen:

  • "Cracking the Coding Interview ", ein fantastisches Buch, das Informationen über eine Vielzahl von Programmierproblemen und deren Lösungen enthält;
  • CodeWars , eine Site mit ungewöhnlichen Programmieraufgaben, die Sie direkt in Ihrem Browser in verschiedenen Sprachen lösen können.

Skillbox empfiehlt: Praktikum "Profession Web Developer" .

Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.

Und noch ein bisschen mehr



Es gibt einige Punkte, die Ihnen helfen, zusätzliches Wissen und Erfahrung zu sammeln.

Lernen Sie zunächst, Ihre Gedanken klar zu formulieren und Ihr Wissen und Ihre Fähigkeiten zu beschreiben. Erfahren Sie, wie Sie gute und faltbare Lebensläufe erstellen. Das mag albern klingen, aber viele Arbeitssuchende wissen nicht, wie sie das machen sollen, sie können weder erklären, was sie in einem persönlichen Meeting sind, noch einen kompetenten Lebenslauf schreiben.

Zweitens veröffentlichen Sie Beispiele Ihres Codes auf GitHub oder einem anderen offenen Repository. Codebeispiele sollten nicht zu kompliziert sein, aber der Code muss sauber und rational gestaltet werden. Dies ist Ihre Chance, einige Ihrer Fähigkeiten vor dem Interview zu zeigen.

Versuchen Sie, an einem Open-Source-Projekt teilzunehmen. Dies zeigt Ihre Erfahrung und bringt Ihnen bei, in einem Team zu arbeiten.

Befragen Sie Ihren Interviewer

Ja, das Interview sollte Sie nicht nur fragen. Sie können und sollten sich für die verschiedenen Nuancen Ihrer zukünftigen Arbeit und Ihres Unternehmens interessieren. Hören Sie sich die Antworten genau an. Sie können sehr wichtig sein, explizite und nicht sehr Informationen darüber enthalten, was ein neues Unternehmen ist, sein Team und seine Arbeit.

Hier finden Sie Beispiele für Fragen.

Was wird mein Standardarbeitstag sein?
Dies ist ein wichtiges Thema, da sich die Aufgaben eines Softwareentwicklers in verschiedenen Unternehmen erheblich unterscheiden können. Wenn die Antwort nicht zu sicher oder vage ist, können Sie dies als Warnung betrachten, als Indikator dafür, dass hier etwas nicht stimmt. Die Person, die Sie anstellt, sollte ein klares Verständnis dafür haben, warum Sie ein Unternehmen sind.

Wie testen Sie Ihre Software?
Im Idealfall sollten die Tests sehr unterschiedlich sein. Wenn die Antwort so etwas wie "Wir schreiben einfach alles auf einmal ohne Fehler, haha" lautet, sollten Sie dies so verstehen, dass es Fehler gibt, aber niemand will oder kann sie nicht beheben.

Welches Versionskontrollsystem verwenden Sie?
Eine wichtige Frage, da sie für die Teamarbeit notwendig ist. Wenn die Antwort lautet: "Was, Versionskontrollsystem?" - dann schnell und weit von einem solchen Interview weglaufen.



Wenn Ihr Gesprächspartner anfängt, über ein benutzerdefiniertes System zu sprechen, wartet auch in diesem Unternehmen nichts Gutes auf Sie, da die Infrastruktur hier offensichtlich schon lange nicht mehr aktualisiert wurde.

Führen Sie Codeüberprüfungen durch?
Tatsächlich ist die Codeüberprüfung ein wichtiger Schritt in der Teamarbeit, da Sie so viele Fehler identifizieren können. Wenn Sie negativ beantwortet werden, bedeutet dies, dass die Teamarbeit nicht sehr gut geliefert wird. Natürlich kann es Ausnahmen geben, aber in den meisten Fällen ist dies der Fall. Wenn Ihnen so etwas wie "Wir vertrauen uns gegenseitig" gesagt wird, ist es eine Überlegung wert. Höchstwahrscheinlich überprüft niemand etwas in dieser Firma.

Welche Bildungsprogramme können Sie anbieten? Ein Programmierer muss sich ständig weiterentwickeln, daher bieten die meisten Unternehmen die Möglichkeit zu lernen. Wenn dies nicht der Fall ist, ist entweder Geld ein Problem oder Entwickler werden häufig gewechselt.



Welchen Softwareentwicklungsprozess verwenden Sie?
In jedem Unternehmen, in dem mehr als zwei Personen arbeiten, muss es einen Algorithmus für die Gesamtarbeit des Teams geben, einen optimierten Prozess. Wenn es nichts Vergleichbares gibt, wird die Arbeit in dieser Firma so sein, als würde man ein Fahrrad fahren, das brennt, und alles um es herum brennt, jeder brennt.

Wie lösen Sie das technische Schuldenproblem?
Technische Schulden oder Codierungsschulden sind ein Begriff, der langlebige Fehler in der Code- oder Anwendungsarchitektur identifiziert. Probleme häufen sich und werden letztendlich zu einem sehr ernsthaften Hindernis für die weitere Arbeit am Projekt.

Wenn Sie beantwortet werden, dass es keine Lösungen gibt und sich das Unternehmen „auf neue Funktionen konzentriert“, ist das Problem höchstwahrscheinlich so groß geworden, dass es nicht mehr gelöst werden kann, oder es wird in naher Zukunft Chaos geben.

Was können Sie über die Unternehmenskultur sagen?
Unterschiedliche Unternehmen haben eine sehr unterschiedliche Atmosphäre und Kultur. Denken Sie jedoch daran, dass Sie mehrere Jahre lang mehr als 40 Stunden pro Woche im Team sein müssen. Hören Sie also zu, was Ihnen gesagt wird.

Arbeite als Programmierer


Okay, Sie haben alle Phasen des Interviews durchlaufen und einen Job bekommen. Glückwunsch!



Was jetzt? Sie müssen viele interessante und nicht so interessante Dinge realisieren. Da wir Programmierer sind, wollen wir uns mit der Diskussion über Code befassen.

Guter Code

Es muss folgende Kriterien erfüllen:

  • Lesbar sein, da der Code viel häufiger analysiert wird als geschrieben. Daher sollte Ihr Code sowohl für Sie als auch für Ihre Kollegen lesbar und verständlich sein.
  • Zuverlässig. Sie müssen sicherstellen, dass alle Klassen und Methoden korrekt verwendet werden und das Programm nicht abstürzt.
  • Optimiert. Sie sollten kein Perfektionist sein, aber Sie müssen Ihren Code dennoch regelmäßig überprüfen. Sie sollten immer bereit sein, eine kleine Codeoptimierung durchzuführen.

Hier sind noch ein paar Dinge zu lernen.

Sie werden nicht viel programmieren.

Ja, das mag seltsam erscheinen, aber in der Tat werden Sie viel mehr Zeit verbringen in:

  • Debuggen
  • Lesen des Codes;
  • Besprechungen und Schreiben von E-Mails / Antworten;
  • Planung.

Lassen Sie uns über die Fähigkeiten sprechen, die für die Karriere eines Programmierers wichtig sind.

Debuggen und Lesen von Code



  • Um ein Profi im Debuggen zu werden, müssen Sie sich für die geeigneten Tools entscheiden. Die meisten gängigen Programmiersprachen verfügen über die erforderlichen Tools zum Debuggen. Lernen Sie sie kennen, lernen Sie, wie man sie benutzt - das spart Ihnen unzählige Stunden.
  • Verstehen Sie die Grundlage, die Struktur der Codebasis. Sie können den Code mit Tools wie ReSharper, grep oder Sourcegraph lernen.
  • Lernen Sie die Handbücher. Sie werden überrascht sein, wenn Sie erfahren, wie wenige Entwickler technische Dokumentation lernen. Infolgedessen wissen viele einfach nicht, wie die Software funktionieren soll, was bedeutet, dass mehr Zeit für das Debuggen aufgewendet wird. Lesen Sie einfach die Dokumentation - Sie sparen Zeit.

Organisation und Planung

Da Sie viel mit Kollegen kommunizieren, Aufgaben planen und ausführen müssen (und einige gleichzeitig), müssen Sie in der Lage sein, Ihre Zeit zu organisieren. Dies wird Ihnen helfen:

  • TODO / Aufgaben. Ihr Unternehmen verfügt höchstwahrscheinlich über ein System zur Verwaltung von Aufgaben und zur Überwachung ihrer Implementierung, aber es schadet nicht, ein eigenes System zu starten. Verwenden Sie Trello, Todoist oder etwas anderes.
  • Anmerkungen. Dabei müssen Sie sich oft verschiedene notwendige Kleinigkeiten merken. Am besten zeichnen Sie sie auf - beispielsweise mit Evernote, OneNote und anderen Tools.
  • Grafiken und Visualisierung. Bewerten Sie Ihre Leistung am besten mit Tools wie Lucidchart, Visio und anderen.

Wann werden Bibliotheken verwendet?

Fast immer. Das Rad muss nicht immer wieder neu erfunden werden. In den meisten Fällen führt das Arbeiten ohne Bibliotheken zu Zeitverlust. Dies bedeutet natürlich nicht, dass Sie nicht wissen sollten, wie die Algorithmen verwendet werden oder wie die Datenbanken aufgebaut sind, da Sie verstehen müssen, wie und wo Sie all dies verwenden sollen.

Die Standardbibliotheken der beliebtesten Sprachen sind äußerst effizient. Lesen Sie die Dokumentation, um besser zu verstehen, wie Sie sie verwenden.

Sie sollten keine Angst haben, mit zusätzlichen Bibliotheken zu arbeiten, wenn diese Zeit sparen. Es kann sein:

  • Open-Source-Bibliotheken, in denen Sie die Qualität des Codes bewerten können.
  • Unter MIT und BSD lizenzierte Bibliotheken können problemlos verwendet werden. Seien Sie vorsichtig mit der GPL.
  • Diejenigen, die bereits seit langer Zeit im Einsatz sind und über eine breite Palette von Funktionen verfügen.
  • Unterstützt - diejenigen, die regelmäßig Updates erhalten.
  • Wird von anderen Unternehmen / Projekten verwendet, was auf deren Zuverlässigkeit hinweisen kann.

Verbessere dich weiter

Es mag kitschig klingen, aber Sie müssen auch während der Arbeit und in Ihrer Freizeit lernen - jeden Tag. Dies wird durch Online-Kurse, Bücher, Blogs sowie eine zweite (dritte) Ausbildung unterstützt. Es lohnt sich auch, auf Konferenzen und verschiedene Arten von Workshops zu achten. Unter den bekanntesten Konferenzen würde ich GOTO (allgemeine Richtung), Strange Loop (auch allgemein), PyCon (Python), CPPCon (C ++), DEF CON (Sicherheit), Fluent (Webdev) hervorheben.

Source: https://habr.com/ru/post/de429720/


All Articles