Ich bedauere meine gesamte Karriere als Programmierer

Zunächst einmal nannte ich mich "Software-Ingenieur"





Vom Übersetzer:

Wir, die wir nur Steine ​​schneiden, müssen uns immer Kathedralen vorstellen. Wir, die wir einfache Steine ​​schneiden, sollten immer Kathedralen dahinter sehen. Wir alle erinnern uns an dieses wundervolle Zitat aus dem Buch von Andrew Hunt „The Pragmatist Programmer. Der Weg vom Lehrling zum Meister. " Der folgende Beitrag handelt meiner Meinung nach davon. Sein Autor - technischer Leiter und Architekt Dave Taubler - spricht darüber, wie sich seine Karriere und seine Ansichten zu seiner Arbeit im Allgemeinen entwickelt haben: von der Enttäuschung im Marketing bis zu dem, was er heute, viele Jahre später, erreicht hat. Der Autor teilt einige Empfehlungen, die er für die Karriereentwicklung als nützlich erachtet, und spricht, wie im Titel geschrieben, darüber, was er in seiner eigenen Karriere ändern würde, wenn er könnte.



Meine Karriere begann nicht in der Softwareentwicklung, sondern im Marketing. Ich bin eine kreative Person und ich dachte, dass die Kunst der Slogans und Harmonien zu mir passen würde. Aber die Marketingwelt hat sich als mechanischer herausgestellt, als ich es mir vorgestellt habe. Überraschenderweise (oder vielleicht nicht überraschend) wurde mir klar, dass das Programmieren - bis zu diesem Zeitpunkt ein Hobby - mir die kreative Energie gab, nach der ich mich sehnte. Nach ein paar Jobs im Marketing fand ich einen Job in der Webentwicklung. Dieser Job war der Beginn meiner Karriere als Softwareentwickler, seitdem bin ich nicht mehr zum Marketing zurückgekehrt.



Der Beruf war großartig. Sie hat natürlich gut bezahlt, und ich habe meinen Job während des wirtschaftlichen Abschwungs behalten. Durch die Webentwicklung konnte ich mit verschiedenen Unternehmen zusammenarbeiten und wundervolle Leute kennenlernen. Und seien wir ehrlich, das Codieren macht Spaß, also bereue ich es wenig. Aber es gibt immer noch etwas, das ich bedauere. Nämlich:



Ich möchte mich nicht als "Softwareentwickler" sehen.


Ich spreche nicht davon, sich selbst als "Programmierer" oder "Softwarearchitekt" oder was auch immer zu bezeichnen. speziell diese beiden Wörter stören mich nicht sehr. Es tut mir leid, dass ich meinen gesamten beruflichen Lebenszweck definiert habe, um Software zu entwerfen und Code zu schreiben. Warum? Es gibt tatsächlich mehrere Gründe.



Ich sah mich als Hindernis, das beseitigt werden musste



Ich habe mich immer als Schalter gesehen [ca. übers. - Enabler ist natürlich "eine Person oder Sache, die etwas möglich macht": eine Person oder Sache, die etwas möglich macht. In diesem Fall spricht der Autor jedoch bedauerlicherweise von sich selbst als Element einer Kette, was bedeutet, dass diese Art von Literalismus hier angemessen ist und die Stimmung und Absicht des Gesagten deutlich widerspiegelt], ein notwendiges Glied in der Produktentwicklungskette das übersetzt Konzepte in die Realität. Dies ist für das Geschäft genauso wichtig wie Wasser für das Leben. Aber in letzter Zeit bin ich mir einer solchen Selbstbestimmung nicht mehr so ​​sicher.



Überlegen Sie, wie die Produktentwicklung funktioniert. Jemand hat eine großartige Idee. Stellen Sie beispielsweise Personen Geld zur Verfügung, die keinen Kredit erhalten können, oder helfen Sie Handwerkern, ihre Arbeit online zu verkaufen. Aber um eine Idee in die Realität umzusetzen, braucht der Autor der Idee jemanden, der über die Erfahrung und die Fähigkeiten verfügt, um die Idee zu verwirklichen. Hier komme ich als Softwareentwickler ins Spiel. Zahlen Sie mich einfach und ich werde zu Ihrer Idee beitragen. Richtig? Ja. Abgesehen von dem, was mir dämmerte: Ich bin nicht wirklich ein Assistent. Ich bin ein Hindernis. Ich bin das, was wirklich zwischen der Idee und ihrer Verkörperung steht. Was muss entfernt werden. Mit anderen Worten: Glaubst du, sie wollenStellen Leute jemand anderen ein, um Ideen umzusetzen? Wenn sie zum Beispiel einfach einen Knopf drücken könnten ... würden sie nicht stattdessen einen Knopf wählen?



Natürlich gibt es keinen solchen Knopf. Noch nicht. Aber die Branche bewegt sich langsam darauf zu. Vor langer Zeit musste man jemanden wie mich einstellen, um eine einfache Website zu erstellen. Und jetzt kann mit Tools wie Wix fast jeder per Drag & Drop zu einer ziemlich fortgeschrittenen Site gelangen ... Kein Programmierer erforderlich! Low-Code-Entwicklungsplattformen reduzieren auch den Bedarf an Softwareentwicklern.



Sogar die Programmiersprachen selbst werden allmählich (wenn auch langsam) vereinfacht; Schreiben wird einfacher. Was bringt eine Programmiersprache, wenn nicht die Lücke zwischen menschlichen Anweisungen und der Ausführung von Anweisungen durch den Computer geschlossen werden soll? Verstehe mich nicht falsch. Ich denke nicht, dass die Nachfrage nach Software-Ingenieuren bald verschwinden wird. Aber ... sich mit Fähigkeiten versorgen, deren Wert allmählich abnimmt? Eine solche Karriere schien mir unzuverlässig. Und das führte mich zu meinem zweiten Problem:



Ich entwickelte ungerechtfertigten Zynismus



Als ich anfing, war Java ein heißes neues Produkt. Also tauchte ich kopfüber ein. Und ich erinnere mich an einige eingefleischte C- und C ++ - Programmierer, die Java absolut hassten. Natürlich hatten sie Gründe. Aber es schien mir, dass diese Gründe in vielen Fällen einfach die existenzielle Bedrohung maskierten, die Programmierer fühlten. Die Fähigkeit zu programmieren war für sie sehr schwierig. Dann kam Java, das viele der Schwierigkeiten von C und C ++ abstrahierte. Plötzlich stellte sich heraus, dass ein ganzer Strom neuer Programmierer ihre Arbeit erledigen konnte.



Ein paar Jahre später fühlte ich mich wie in den Schuhen dieser Programmierer. Reflexiv fand und akzentuierte ich Fehler in jeder Sprache oder Technologie, die angeblich einfacher waren als das, was ich wusste. Natürlich hatte ich und meine Gründe dafür. Aber oft waren sie eher Rationalisierungen, die später erstellt werden. Also, was ist mit mir passiert? Es ist lange her, dass ich in meinen bevorzugten Programmierwerkzeugen Fuß gefasst habe und es nicht aufgeben wollte. Mein Ziel war es nicht, Technologie zur Lösung von Problemen einzusetzen, sondern spezifische Softwareentwicklungsfähigkeiten anzuwenden , die ich bereits verbessert hatte. "Wenn diese Fähigkeiten unnötig werden, werden meine Ziele auch nicht benötigt", dachte ich. Und so baute ich aus Zynismus eine Verteidigungsmauer. Das gleiche, über das ich mich vor vielen Jahren bei anderen Programmierern gewundert habe.



Der Punkt ist, dass es nervenaufreibend und anstrengend sein kann, einen solchen Zynismus in sich zu behalten. Tatsächlich bemerkte ich einen Teufelskreis: Je mehr ich mich gegen meine eigenen Fähigkeiten verteidige, desto weniger möchte ich neue Dinge lernen.



Ich habe meinen beruflichen Horizont begrenzt



Ich habe während meiner Karriere in vielen Branchen gearbeitet. Social Media, Musik-Streaming, Finanztechnologie (Fintech) und sogar Fotobearbeitung. Obwohl ich Erfahrung in vielen Branchen habe, kenne ich mich in einem bestimmten Bereich nicht immer gut aus. Gleichzeitig bemerkte ich, dass einige meiner Kollegen während ihrer gesamten Karriere in derselben Branche blieben. Ein Kollege hatte zum Beispiel eine Leidenschaft für Fotografie und spezialisierte sich daher auf Fotobearbeitungssoftware. Andere Kollegen haben ihre gesamte Karriere der Finanztechnologie gewidmet.



Tatsache ist, dass sie sich vor allem für ihre Branchen interessierten. Das Programmieren war einfach ein Mittel, mit dem meine Kollegen an ihren Branchen teilnahmen und ihren Lebensunterhalt verdienten.



Anfangs kam es mir etwas seltsam vor. Wenn Sie Code schreiben, fragte ich mich, sollten Sie sich nicht als Softwareentwickler definieren? Natürlich würde ich mich bemühen, jeden Bereich zu untersuchen, in dem mein derzeitiges Unternehmen tätig ist. Aber oft dachte ich, es sei ein notwendiges Übel und ich sollte mehr darauf achten, meine technischen Fähigkeiten zu verbessern. Warum ist das wichtig? Natürlich haben viele Ingenieure eine erfolgreiche Karriere hinter sich, die sich fast ausschließlich auf Software und Technologie konzentriert, nicht wahr?



Karriere Wachstum



Im Nachhinein wurde mir klar, dass ein Teil des Problems darin bestand, wie ich dachte. Wenn ich über meine Rolle als Programmierer nachdachte, stimmte ich eher zu. Andere Leute kennen das Geschäft , das ich für mich selbst definiert habe, und können daher die Arbeit meines Teams priorisieren . Ich war in der Firma, nur um meinen Job zu machen. Während ich mich auf die Softwareentwicklung konzentrierte, kam mir selten der Gedanke, dass ich höhere Ansprüche hatte.



Aber um über die Rolle eines leitenden Ingenieurs hinauszugehen, müssen wir das Geschäft verstehen. Unabhängig davon, ob wir den Weg des Managers / Direktors oder des Chefingenieurs / Architekten gehen, werden wir im Namen des Unternehmens Entscheidungen auf hoher Ebene treffen. Verständlicherweise war es mir unangenehm, mich auf geschäftliche Themen zu konzentrieren, als ich zum ersten Mal eine Führungsposition übernahm. Aber als ich mich daran gewöhnt hatte, im Namen des Geschäfts zu denken, fühlte ich mich frei. Es war, als würde man ganz neue Fähigkeiten entdecken. Wenn Sie noch höher zielen, liegt der Fokus noch mehr auf dem Geschäft. Die Erfahrung der Ingenieure in der Branche wird immer wichtiger. Und was ist mit meinen Kollegen, von denen ich Ihnen erzählt habe? Viele von ihnen verließen die Maschinenbauwelt vollständig und wurden in der Wirtschaft befördert. Einige gingen später, um ihre Startups in der Finanztechnologie zu gründen.



Karriereglück



So sehr ich das Codieren auch genieße, ich fand es schwierig, Tag für Tag eine Leidenschaft für das Schreiben von Code aufrechtzuerhalten. Um wirklich glücklich in Ihrer Karriere zu sein, ist es wichtig zu wissen, dass es wichtig ist, das Gesamtbild zu sehen, wie meine Arbeit die Welt zum Besseren verändert.



Darüber hinaus möchte ich das tun, was einige meiner Kollegen getan haben, nämlich einen Schritt zurücktreten und verstehen, was ich in dieser Welt wirklich schätze. Vieles ist mir wichtig: Musik, Bildung, Klimawandel usw. Wenn ich zurückgehen und etwas in meiner Karriere ändern könnte, würde ich Folgendes ändern: Ich würde entscheiden, was meine Werte sind und welche Probleme ich möchte in dieser Welt lösen. Und dann würde ich alle meine technischen und nichttechnischen Fähigkeiten einsetzen, um diese Probleme zu lösen.



Wie man über Software-Engineering hinausgeht



Diese Geschichte mag nicht bei jedem Anklang finden, der Software schreibt, um seinen Lebensunterhalt zu verdienen. Es gibt viele Leser, die ihre Branche mehr lieben als ihre Programmiersprache. Wer ist bequem genug, um von C # zu JavaScript und von dort zu Go zu springen? Wer ohne Probleme aufgibt, was er bereits gelernt hat, wenn die Lösung einfacher erscheint. Aber wenn diese Geschichte bei Ihnen ankommt, lesen Sie weiter. Im Laufe der Zeit habe ich meine Einstellung zu meiner Karriere geändert, und es gibt keinen Grund, warum Sie nicht dasselbe tun können. Im Folgenden finden Sie einige Tipps, die ich hilfreich finde.



Tauchen Sie ein in andere Technologien



Was wird unsere Zurückhaltung heilen, uns von der Technologie zu trennen, an die wir gewöhnt sind und auf die wir uns verlassen? Eintauchen in andere Technologien. Der einfachste Weg, diesen Tauchgang zu machen, ist ein Nebenprojekt: die Software, die wir selbst erstellen, wenn die Arbeitszeit vorbei ist. Die Hauptsache ist, tief in eine Sprache einzutauchen, die uns unbekannt ist. Ich spreche über zwei Dinge:



  • Wählen Sie eine völlig andere Sprache außerhalb unserer Komfortzone. Wenn Sie beispielsweise mit Java vertraut sind, wechseln Sie nicht einfach zu Kotlin. Versuchen Sie stattdessen Go, Python, Rust oder NodeJS.
  • Zur Definition des Komplexes im Sinne des Projektabschlusses Arbeiten Sie nicht nur mit dem Tutorial. Setzen Sie sich ein hohes Ziel, damit Sie die Sprache wirklich lernen, um sie zu erreichen.


Machen Sie es sich zum Ziel, eine neue Sprache so gut zu lernen, dass Sie für Geld einen Job mit dieser Sprache bekommen. Ich habe genau das vor vielen Jahren getan. Ich war ein Softwarearchitekt, der sich auf das Java-Backend konzentrierte. Aber als Nebenprojekt half ich einem Freund beim Erstellen einer iOS-App und einer Mac-Desktop-App. Dies gab mir die Fähigkeit, später einer bekannten Musik-Streaming- Firma beizutreten , um ihnen beim Erstellen einer iOS-App zu helfen.



Sie benötigen mehr als nur verschiedene Programmiersprachen: Sie müssen in sprachunabhängige Tools eintauchen. Zum Beispiel habe ich mir in Docker und Kubernetes so viel wie möglich die Hände schmutzig gemacht. Als ich immer besser darin wurde, Bilder zu entfalten und zu orchestrieren, wurde ich weniger besorgt darüber, was in diesen Bildern enthalten war.



Oder nehmen wir Cloud-Technologien. In der Vergangenheit habe ich die Rolle von Technologien ohne Server heruntergespielt, weil ich keine Erfahrung mit ihnen hatte. Aber zum letzten Mal habe ich sie auch angenommen. In einer kürzlich durchgeführten Arbeit habe ich beispielsweise versucht, AWS Lambda in unsere Microservices-Architektur zu implementieren. Und arbeitete an einem Nebenprojekt, in dem GCP-Cloud-Funktionen weit verbreitet sind.



Je mehr ich mich in neue Technologien vertiefte, desto befreiter fühlte ich mich. Ich fühlte mich bestimmten Fähigkeiten nicht mehr verpflichtet, fühlte mich jedoch flexibler und bereit, Probleme mit den am besten geeigneten verfügbaren Tools zu lösen.



Konzentrieren Sie sich auf das Gesamtbild des Designs



Wie viele Softwareentwickler begann ich, der praktischen Programmierung weniger Aufmerksamkeit zu schenken und mich mehr auf allgemeine Probleme zu konzentrieren. Das Management anderer Ingenieure und die Konzentration auf Architektur haben mir geholfen, meine persönliche Zeit für Investitionen in einige der vom Team verwendeten Technologien zu verlieren. Darüber hinaus ermöglicht dieser Ansatz, sich auf andere Geschäftsbereiche zu konzentrieren. Ich war kürzlich Teil eines funktionsübergreifenden Teams, das eine neue Produktinitiative leitete. Davon abgesehen habe ich mehr Zeit mit Produktmanagern und Designern verbracht, die an der Produktentwicklung beteiligt waren, als mit Code.



Eine kleine Einschränkung. Als Leiter der technischen Abteilung ist es mir immer wichtig, die Technologien, die das Team einsetzt, nicht aus den Augen zu verlieren, um zumindest ein wenig bewusst zu sein. Natürlich möchte unser Team möglicherweise Sprachen und Tools verwenden, die über Ihre persönlichen Fähigkeiten hinausgehen. Es ist nicht schlecht; Vielmehr ist es eine großartige Chance, vom Team zu lernen. Und vertrau mir, das Team wird es lieben, wenn wir ihnen die Gelegenheit geben, uns etwas beizubringen.



Werde ein Ideenmensch



Zuvor habe ich eine vereinfachte Ansicht der Entstehung von Produkten vorgestellt. Jemand hat eine Idee und jemand anderes setzt sie um. Also dachte ich mir: Was soll man Entwickler sein, warum nicht Autor einer Idee werden?



Nebenprojekte



Bisher war das Ziel meiner Nebenprojekte, entweder mit meinen vorhandenen technischen Fähigkeiten Schritt zu halten oder neue Technologien zu erlernen. Im Wesentlichen bildeten diese Projekte die verherrlichten Hello World-Übungen.



Jetzt beginne ich mit der Idee selbst. Ich habe mir etwas ausgedacht, von dem ich denke, dass es nützlich sein wird, aber im Idealfall etwas Neues. Manchmal ist es eine Idee, die sich in ein Produkt verwandeln kann. In anderen Fällen ist diese Idee nur für mich nützlich. Der Punkt ist, dass ich mich hauptsächlich auf die Idee konzentriere.



Dann fordere ich mich heraus, den besten Weg zu finden, um diese Idee zum Leben zu erwecken. Möglicherweise hängt die Implementierung mit dem Schreiben einer monolithischen Anwendung in Java zusammen. Oder vielleicht handelt es sich um ein JavaScript / React-Frontend, das hauptsächlich von Cloud-Diensten unterstützt und mit ein wenig Go-Code verknüpft wird. Vielleicht sprechen wir über Aufgaben, die überhaupt nichts mit Programmierung zu tun haben.



Bei der Arbeit



Ich fing auch an, diesen gesunden Menschenverstand bei der Arbeit zu üben. Es war einmal eine Zeit, in der ich nach Projekten suchte, in denen ich meine spezifischen Programmierkenntnisse einsetzen konnte. Immerhin wurde ich für diese besonderen Fähigkeiten eingestellt, oder? Aber nach und nach wurde mir klar, dass ich hauptsächlich eingestellt wurde, um die Probleme der Organisation zu lösen. Also suchte ich nach den Problemen, die am dringendsten gelöst werden mussten, und fand heraus, wie ich sie lösen konnte. In vielen Fällen ist die Lösung softwarebezogen. Aber ich begann die Zeiten zu genießen, in denen die Entscheidung nicht softwarebezogen war, weil ich damals meinen Anwendungsbereich erweiterte und Grenzen überschritt, wobei ich mich mehr auf die geschäftliche Seite der Dinge konzentrierte.



Ist das leichter gesagt als getan? Kann sein. Dies hängt natürlich von der Bereitschaft unseres Arbeitgebers ab, die Programmierung sehr schnell aufzugeben. Ich habe jedoch festgestellt, dass viele Unternehmen mehr als glücklich sind, wenn Ingenieure die Initiative ergreifen möchten, um Probleme zu lösen, die über das Schreiben von Software hinausgehen. Was ist, wenn unser Unternehmen die Initiative nicht unterstützt? Dann denken Sie daran, dass wir Software-Ingenieure sind ... Wir können es uns leisten, ein wenig wählerisch zu sein, für wen wir arbeiten.



Wenn Sie in andere Technologien eintauchen möchten, wie der Autor des Beitrags empfiehlt, sind wir unsererseits bereit, mit unserem Wissen, erfahrenen Mentoren und unserer Unterstützung zu helfen. Es wird schwierig, aber interessant. Und vergessen Sie nicht den immer aktiven Promo-Code HABR, der den Rabatt auf das Banner um 10% erhöht.





Andere Berufe und Kurse
BERUF
















Bild



All Articles