So werden Sie erfolgreicher Softwareentwickler

Hier sind einige der besten Tipps für junge, aufgeweckte Softwareingenieure, die gerade ihre Karriere beginnen. Ich habe sie entweder gelesen oder als Softwareingenieur erhalten.

Die meisten Ratschläge hier richten sich an die Menge der Softwaretechniker, aber ich glaube, es gibt viele Tipps, die unabhängig von Ihrem Beruf gelten.

Bester Karriere- und Lebensrat, den ich erhalten habe

Kurz gesagt, mein bester Rat ist:

  • Unterversprechung, Überlieferung
  • Perfekt ist der Feind des Guten
  • Bleib auf einem Weg
  • Sammeln Sie frühzeitig Feedback
  • Suchen Sie, bevor Sie fragen
  • Zur Vereinfachung optimieren

Wenn Sie dies lieber in einem Videoformat ansehen möchten, habe ich hier ein Youtube-Video erstellt:

Unterversprechung, Überlieferung

Das Unterschätzen des Arbeitsaufwands, der zum Ausführen einer Funktion erforderlich ist, ist ein äußerst häufiger Fehler unter neuen und sogar erfahrenen Ingenieuren.

Wenn Sie sich die Anzahl der Projekte ansehen, die über das Budget hinausgehen und / oder verspätet geliefert werden, werden Sie sehr überrascht sein. Es ist eine verrückte Zahl, ungefähr 50%.

Betrachten wir das für eine Sekunde: 50% aller Projekte sind entweder überbudgetiert oder verspätet abgeschlossen.

Das bedeutet, dass von 1000 Projekten 500 oder die Hälfte verspätet oder über das veranschlagte Budget hinaus geliefert werden. Es verwirrt mich einfach.

Ich erinnere mich deutlich an mein erstes technisches Projekt, dass ich die Autonomie hatte, die Entwicklung der Features zu leiten. Das bedeutete, dass ich der Ansprechpartner war, der ein technisches Designdokument verfasste, in dem genau beschrieben war, wie viel Zeit für die Entwicklung des gesamten Features benötigt wurde, wie viele Ingenieure wir benötigen würden und so weiter.

Als der eifrige junge Ingenieur, der ich war, habe ich die Zeit, die ich brauchte, um Dinge zu erledigen, grob unterschätzt. Etwas in der Größenordnung von 2-3x.

Ich war zu dieser Zeit ziemlich enttäuscht von mir selbst und infolgedessen hatte ich auch ein gespanntes Verhältnis zu einigen meiner Kollegen.

Mein Manager setzte mich dann und gab mir einige lebensverändernde Ratschläge. Er sagte zu mir, immer unterversichert und zu viel geliefert.

Das bedeutet, dass Sie konservativ mit Ihren Schätzungen umgehen, ausreichend Puffer für Ihre Schätzungen bereitstellen sollten, damit verschiedene Dinge schief gehen (weil alles, was schief gehen kann, schief gehen wird), und darauf abzielen sollten, Ihr Projekt vorzeitig / unter den Kosten zu liefern.

Die Vorteile:

  1. Sie haben genügend Zeit, um nach Bedarf zu entwickeln und umzugestalten. Die Entwicklung von Features ist immer ein guter Zeitpunkt, um einen Teil der technischen Schulden zu beheben, die Sie (oder das Team vor Ihnen) im Laufe der Jahre angehäuft haben.
  2. Ermöglicht es Ihnen, das beste Design zu finden, und nicht nur ein funktionierendes Design.
  3. Es gibt viele Dinge, die bei der Entwicklung von Features schief gehen können. Ein Mitarbeiter macht Urlaub, Sie werden krank, Meetings, Ihr Kind wird krank, Ihr Auto wird angefahren und die Liste geht weiter. Es ist wichtig zu wissen, dass etwas schief gehen kann, und Sie möchten sicherstellen, dass Ihr Zeitplan einen Puffer enthält.
  4. Dank Nummer 2 können Sie beständig qualitativ hochwertige Arbeit leisten und dank Nummer 3 jedes Mal pünktlich liefern. Jetzt sind Sie als Leistungsträger im Unternehmen anerkannt, der weiß, was Sie tun rede und kann sich darauf verlassen. Win-Win!

Sie könnten argumentieren, dass die Kehrseite des Versprechens darin besteht, dass andere glauben, Sie seien faul, wenn sie den Arbeitsaufwand von 10 Wochen für etwas veranschlagen, das in 2 Wochen erledigt werden könnte.

Um ehrlich zu sein, hatte ich auch eine Weile damit zu kämpfen. Dann wurde mir jedoch klar, dass es Ihnen gut geht, wenn Sie während des gesamten Prozesses offen kommunizieren und mit den Stakeholdern im Einklang bleiben.

Sie sind für die Kostenübernahme verantwortlich, da sich andere auf Ihr Fachwissen verlassen. Sie wissen, dass Sie mit der Codebasis am vertrautesten sind, und sie vertrauen darauf, dass Sie die bestmöglichen Vermutungen anstellen. Während der Funktionsentwicklung können verschiedene Dinge passieren. Solange Sie offen kommunizieren, ist alles in Ordnung.

Perfekt ist der Feind des Guten

Als Softwareentwickler stellen Sie in der Regel fest, dass einem Projekt dies fehlt oder dass es das braucht, bevor es veröffentlicht werden kann. Ein Projekt kann ein Codierungsprojekt oder nur ein technisches Designdokument sein, das Sie schreiben müssen.

Was häufig passiert, ist, dass Sie, wenn Sie tiefer in das Projekt eintauchen, feststellen, dass es mehr Dinge gibt, die Sie nicht berücksichtigt haben. Dann krempeln Sie die Ärmel hoch und wollen den Dingen auf den Grund gehen. Sie haben beschlossen, in den nächsten Stunden zu recherchieren und alles in Ordnung zu bringen.

Zehn Stunden später wird eigentlich nichts erledigt, und Sie stapeln mehr Arbeit als zuvor.

Wenn Ihnen das bekannt vorkommt, sind Sie nicht allein.

Das passiert jedem - und den Besten von uns. Ich glaube, wir waren schon in jungen Jahren konditioniert, um Arbeiten zu produzieren, die „perfekt“ oder „vollständig“ sind. In Wirklichkeit gibt es jedoch keine perfekte Lösung.

Wir leben in einer Welt voller Zwänge und es gibt einen Kompromiss für jede wichtige Entscheidung, die wir treffen.

Der Schlüssel ist hier zu erkennen, dass wir nicht alles wissen. Sie werden es vielleicht nicht bemerken, aber hinter den meisten Entscheidungen, die Sie treffen, stecken unzählige Alternativen.

Was sollten Sie zum Beispiel als Informatik-Hauptfach für einen ersten Job am College tun? Abgesehen davon, dass Sie für ein Startup oder ein großes Technologieunternehmen arbeiten, können Sie auch als Freiberufler im Ausland arbeiten, einen Youtube-Kanal eröffnen, auf Udemy Informatik unterrichten, einen Blog eröffnen oder ein eigenes Unternehmen gründen. Die Liste der Optionen ist unbegrenzt und die Entscheidung, die Sie heute treffen, basiert auf mehreren Schlüsselkriterien.

Sie werden schließlich eine Entscheidung treffen, die für Sie am besten und objektiv nicht unbedingt die beste ist, da jeder Mensch einzigartig ist und es keine Einheitsgröße gibt.

Das Beste, was wir in einer solchen Situation tun können, ist, so viele Informationen wie möglich zu sammeln, die Risiken in dem zu erkennen, was wir nicht kennen, und von dort aus die beste Entscheidung zu treffen.

Ausfallwahrscheinlichkeiten

So wie ich darüber denke, ordne ich dem Worst-Case-Szenario eine Wahrscheinlichkeit zu und verwende diese für meinen Entscheidungsprozess. Dies habe ich aus einem Buch namens Principles von Ray Dalio gelernt, das ich sehr empfehlen kann.

Wenn die Wahrscheinlichkeit, dass etwas schrecklich schief geht, statistisch signifikant ist, kann ich entweder:

  1. Suche nach einer besseren Lösung oder
  2. Finden Sie Möglichkeiten, um die Risiken so zu mindern, dass sie nicht mehr statistisch signifikant sind.

Sobald eine Entscheidung getroffen ist, führe ich sie aus und gehe weiter.

Spülen Sie und wiederholen Sie für jedes Problem, auf das ich stoße. Ich finde Freude daran, diese Probleme zu lösen, und in gewisser Weise liegt die Freude des Lebens darin, Probleme unterschiedlicher Größenordnung und Komplexität zu lösen.

Wenn Sie mehr darüber erfahren möchten, wie Sie einen Job als Softwareingenieur bekommen, unterrichte ich eine kleine Klasse, in der es um die Bearbeitung des technischen Interviews geht. Mehr darüber erfahren Sie hier oder auf meiner Website: zhiachong.com

Entscheidungsrahmen

Bleib auf dem Weg

Feature Creep ist eines, das natürlich als Gegenbeispiel in den Sinn kommt.

Sie möchten immer mehr Funktionen hinzufügen, da Sie der Ansicht sind, dass die aktuelle Funktion aus dem World Wide Web der 90er Jahre heruntergeladen wurde. Sie haben das Gefühl, dass es noch nicht fertig ist. Sie denken, dass niemand jemals Ihr Produkt verwenden möchte.

Beachten Sie jedoch, dass all diese Dinge in Ihrem eigenen Kopf vor sich gehen. Nichts davon ist validiert. Sie wissen nicht, was die Leute wollen, bis Sie etwas in ihre Hände geben.

Was Sie anstreben sollten, ist, sich zu Beginn Ihres Projekts ein festes Ziel zu setzen und danach zu streben, es zu erreichen, egal was passiert.

Die Vorteile sind zweifach:

  1. Dies verringert das Kriechen der Merkmale und zwingt Sie zum Fokussieren. Es wurden Bände von Büchern darüber geschrieben, und ich werde Sie nicht mit den spezifischen Details langweilen. Der Laserfokus ist unabhängig von Ihrer Position von entscheidender Bedeutung.
  2. Wir Menschen lieben sofortige Befriedigung. Wenn Sie in 2 Wochen etwas veröffentlichen können, dann tun Sie es! Planen Sie im Voraus, was Ihr Projekt in 2 Wochen erreichen soll, und geben Sie es dann in die Hände Ihrer Benutzer! Es ist ein sehr befriedigendes Gefühl, und selbst wenn es kläglich scheitert, haben Sie sich zumindest an Ihr Ziel gehalten und jetzt wertvolles Feedback gesammelt, um es zu wiederholen.

Dies bringt mich zu meinem nächsten Punkt.

Sammeln Sie frühzeitig Feedback

Ich persönlich denke, wir sollten immer darauf abzielen, frühzeitig und häufig zu veröffentlichen und so bald wie möglich Feedback zu sammeln.

Natürlich erkenne ich, dass dies vor allem für Softwareprojekte möglich ist. Aber hör mir zu.

Durch häufiges und frühzeitiges Freigeben können Sie frühzeitig Feedback sammeln. Eine gesunde Rückkopplungsschleife ist ein sehr wichtiger, wenn nicht der wichtigste Aspekt Ihres Projekts.

Die Rückkopplungsschleife für das Produkt

Sie sollten frühzeitig eine Feedbackschleife in Ihre Produktentwicklung einbeziehen, damit Sie wissen, dass Sie das richtige Produkt für die richtigen Mitarbeiter mit den richtigen Einschränkungen entwickeln.

Es ist ebenso wichtig zu beachten, dass ein vorzeitiges Freigeben nicht das Freigeben eines defekten Produkts bedeutet. Ein kaputtes Produkt ist für niemanden von Nutzen. Dies ist nur eine Missachtung für Ihre Benutzer.

Sie sollten ein Minimum-Viable-Product (MVP) finden und liefern. Dies bedeutet, dass Ihr Produkt die Mindestleistung erbringt, um einen Bedarf zu decken.

Zu beachten ist, dass das Sammeln von Feedback nicht bedeutet, dass es sich um Feedback von jedem einzelnen Benutzer handeln muss.

Ziehen Sie in Betracht, Ihre Benutzer zu segmentieren. Holen Sie sich eine kleine Gruppe von Benutzern, idealerweise mit unterschiedlichem Hintergrund (und nicht nur mit Freunden und der Familie). Nehmen Sie Ihr Produkt in die Hand, damit es zumindest Ihren anderen Nutzern noch nicht auffällt und Sie Zeit haben, es zu reparieren, wenn Sie es vermasseln.

Suchen Sie, bevor Sie fragen

Viele jüngere Ingenieure neigen dazu, Fragen zu stellen, ohne selbst nach Antworten zu suchen. Wenn sie auf etwas stoßen, dem sie vorher noch nicht begegnet sind, besteht ihr erster Instinkt darin, einen leitenden Ingenieur zu fragen, wie es gemacht wird und wie man etwas erreicht.

Es wird Ihnen viel Gutes tun, die Antwort selbst zu suchen, bevor Sie jemanden fragen. Der Grund ist zweifach:

  1. Wenn Sie tief tauchen, können Sie Gebiete erkunden, die Sie vielleicht noch nie zuvor erkundet haben. Es gibt Ihnen die Möglichkeit, sich einen Überblick zu verschaffen und sich mit einer anderen Codebasis vertraut zu machen.
  2. Wenn Sie eine höhere Position einnehmen, verlassen sich die Mitarbeiter auf Sie. Mit der Zeit werden Sie der Senior in der Gruppe. Die Leute wenden sich an Sie, um Hilfe zu erhalten, und Sie müssen diese Fähigkeit sowieso später erlernen.

Viele Entwickler scherzen, dass der größte Teil ihrer Zeit für Googeln und StackOverflow aufgewendet wird. Ich bin voll und ganz damit einverstanden, aber nicht aus Gründen, die Sie vielleicht denken.

Die Fähigkeit, Antworten auf ein mehrdeutiges Problem zu finden, ist eine äußerst begehrte Fähigkeit. Das Internet hat sich im Laufe der Zeit zu einem leicht zugänglichen Informationsschatz entwickelt, den Sie jederzeit und überall auf jedem Gerät abrufen können.

Die Fähigkeit, die richtigen Fragen zu stellen, ist jedoch viel schwieriger zu erlernen als die Fähigkeit, sie zu beantworten.

Während Sie Ihre berufliche Karriere fortsetzen, werden Sie feststellen, dass es eine Fähigkeit ist, die Sie erlernen müssen, um die richtigen Fragen zu klären. Wenn Sie es meistern, werden Sie Wunder erleben.

Zur Vereinfachung optimieren

Streben Sie nach Einfachheit in Ihrer Arbeit und in Ihrem Leben.

Oft sehe ich Junior-Entwickler, die an einem Codierungsprojekt arbeiten und Abstraktion, Vererbung, Schnittstellen und einige sehr interessante Frameworks verwenden. Trotz all dieser Phantasie schreiben sie neuen Code, der komplizierter ist als nötig.

Leute, die diesen Code pflegen, werden die meiste Zeit nicht die gleichen Leute sein, die ihn schreiben. Jede zusätzliche Komplexitätsstufe erschwert die Einbindung neuer Ingenieure erheblich.

Mit zunehmender Reife als Softwareentwickler stellen Sie fest, dass das Schreiben von Code nicht nur eine Frage der Leistungsoptimierung, sondern auch der Optimierung der Mitarbeiter ist. Es ist genauso wichtig, Code zu schreiben, über den andere leicht nachdenken können.

Hier kommen Codelesbarkeit und Code-Organisation ins Spiel.

Entscheiden Sie sich immer für einen einfacheren und saubereren Ansatz, es sei denn, Leistung ist ein echtes Problem.

Ich glaube, dass sich Einfachheit auch auf das Leben außerhalb der Arbeit erstreckt. Halte dein Leben frei von Ablenkungen. Reduzieren Sie die Anzahl der unnötigen Habseligkeiten, die Sie in Ihrem Leben haben. Konzentrieren Sie sich auf Dinge, die Ihnen wichtig sind. Optimieren Sie Ihr Leben für Erlebnisse und nicht für Besitztümer. Dies sind einige der Dinge, die Sie beachten sollten, wenn Sie sich durch das Leben bewegen.

Bücher, die ich gelesen habe, und Ressourcen, die mir gefallen haben

  • Principles von Ray Dalio - Eines der besten Bücher, die ich seit einiger Zeit gelesen habe. Der Autor spricht über Prinzipien, die wir sowohl im Leben als auch bei der Arbeit anwenden können. Ich habe seinen Rahmen für die Lösung von Problemen in mein tägliches Leben aufgenommen
  • DailyCodingProblem: Dieser Dienst sendet täglich Codierungsprobleme an Ihre E-Mails und hat einige der neuesten Fragen von führenden Technologieunternehmen. Verwenden Sie meinen Gutscheincode, zhiachong, um 10 € zu sparen!
  • Wie man Freunde gewinnt und Menschen beeinflusst - Ein klassisches Buch zum Aufbau und zur Verwaltung von Beziehungen zu Menschen . Dieses Buch hat mir geholfen zu verstehen, wie ich mit meinen Beziehungen am Arbeitsplatz umgehen kann.
  • The Senior Software Engineer - Tolles Buch mit Handlungselementen zur Reifung als Software Engineer. Hier habe ich gelernt, wie man sucht, bevor man fragt.
  • Wichtige Gespräche - Ein großartiges Buch über den Umgang mit Menschen in einer Situation, in der viel auf dem Spiel steht. Sehr anwendbar über verschiedene Aspekte des Lebens. Unabhängig davon, ob Sie eine höhere Bezahlung aushandeln oder Kommunikationsprobleme mit Ihrem Ehepartner herausfinden - dieses Buch enthält einige gute Tipps zur Lösung dieser Probleme.
  • Lean Startup - Ein gutes Buch zum Testen einer Idee mit einem Minimum-Viable-Product (MVP), bevor Sie weiter investieren. Ich habe dies genutzt, um mehrere Startup-Ideen in der Vergangenheit zu testen.
  • Lila Kuh - Ich habe dieses Buch geliebt. Dies wurde hauptsächlich verwendet, um verschiedene Startup-Ideen zu testen, die ich im Sinn habe. Es geht darum, wie Sie Ihr Startup vermarkten und was es von den anderen abhebt.
  • Evernote - Die beste Notiz-App, die ich je benutzt habe. Kann es nur empfehlen!
  • Moleskin-Notizbuch - ich mag dieses wirklich. Die Qualität ist extrem hoch. Der Preis ist etwas höher, aber da ich ihn täglich benutze, halte ich ihn für eine gute Investition. Wenn ich jeden Tag ein schönes Notizbuch in der Hand halte, bin ich aufgeregter, weitere Notizen zu schreiben.
  • Pilot G2 (Schwarz) - Einfach die besten Stifte, die ich je verwendet habe, und nur Stifte, die ich verwenden werde. Ich kaufe sie in großen Mengen bei Amazon und bewahre sie überall auf. Ich habe einen in meinem Rucksack, einen im Büro und einen in meinem Büro zu Hause, sodass ich immer einen Stift dabei habe. Es schreibt großartig, die Tinte fließt reibungslos und ich liebe das Gefühl, darin zu schreiben. In Verbindung mit dem Moleskin möchte ich manchmal nur den G2 nehmen, um zufällige Dinge darauf zu notieren, weil diese beiden so perfekt zusammenpassen.

Folgen Sie mir auf Twitter, Facebook und LinkedIn. Melden Sie sich für meine Mailingliste an, auf der ich regelmäßig Tipps, Tricks und Branchenerfahrungen sende.

Wenn Ihnen dieser Artikel gefallen hat, kommentieren Sie unten: Was ist Ihr bester Tipp für einen Softwareentwickler?