Zühlke – Empowering Ideas

mmil
Insights

5 Tipps für die Karriereplanung in der Softwareentwicklung

Wie wird man ein guter Software Engineer? Welche Skills sind in der Branche gefragt? Wie bleibt man auf dem aktuellsten Stand?

Hol Dir einen Kaffee, mach Dir entspannende Musik an, und begleite uns zur sechsten Folge von The Hüb. Diesmal teilt Dr. Milan Milanović die wertvollen Erfahrungen, die er als Lead Software Architect bei Zühlke gesammelt hat.

Insight in brief

Willkommen bei The Hüb – einem Ort, an dem unsere Fachleute offen ihre Meinungen, Ideen, Kenntnisse und Erfahrungen zur Branche, ihrer Zukunft und wichtigen Trends weitergeben.

Wie wird man als Software Engineer richtig gut?

Wer auf einem Gebiet gut werden will, muss auf jeden Fall erst mal die Grundlagen lernen. Das geht entweder durch formelle Bildung oder informelle Aneignung. Ich bin der Meinung, dass jede Ausbildung den Zeitaufwand wert ist, weil sie das weitere Leben auf vielfältige Weise beeinflusst. Durch die Grundlagen, die in unserer Branche seit langem gelten und auch weiterhin gelten werden, lernt man, in die richtige Richtung zu denken und Probleme systematisch zu lösen.

Was ich aber in den letzten Jahren in der Branche beobachtet habe, ist, dass die Unternehmen eher nach einem bestimmten Skillset suchen als nach einer formalen Ausbildung. So viele Informationen und ein Großteil des Branchenwissens sind leicht zugänglich und auch noch kostenlos. Aber wenn Du wirklich ein guter Software Engineer werden willst, musst Du kontinuierlich lernen und an Dir arbeiten.

In der formalen Ausbildung geht es um einen systematischen Ansatz zur Problemlösung und Bewertung. Du lernst alle Grundlagen und erwirbst ein breites Wissensspektrum in Deinem Fachgebiet. Im Bereich Programmierung lehren die meisten Ausbildungsstätten Algorithmen und andere Elemente, die für die meisten Aufgaben im der Softwareentwicklung wichtig sind. Ich will damit nicht sagen, dass man ohne eine formale Ausbildung kein guter Software Engineer werden kann, aber das ist eher die Ausnahme als die Regel.

Ich glaube allerdings auch, dass man am effizientesten am Projekt und im Team lernt. Dabei ist es wichtig, dass diejenigen, die schon länger dabei sind, genug Zeit haben, um sich um Neulinge zu kümmern und ihnen beim Vorankommen zu helfen. Der ständige Austausch zwischen erfahrenen und neuen Teammitgliedern ist außerdem sehr wichtig, um die Techniken für das gemeinsame Projekt möglichst effektiv in den Griff zu bekommen.

Du kannst auch online durch Schulungen, Kurse und Tutorials lernen. Außerdem würde ich die Beteiligung an einem Open-Source-Projekt empfehlen. So kannst Du Dir ein eigenes Projektportfolio aufbauen und gleichzeitig schon einmal Networking betreiben.

Allerdings musst Du mit dem Lernen auch am Ball bleiben. Mach dabei einen Schritt nach dem anderen. Gehe weiter, wenn Du ein Thema beherrscht. Wenn Du Dich mit einer Sache richtig gut auskennst, hebst Du Dich in Deinem Bereich ab. Auch die Auftraggeber wissen solche Leute mit besonderer Expertise zu schätzen.

Als Software Engineer sollte man sich generell ein paar Stunden pro Woche gezielt weiterbilden, um „fit zu bleiben“. Ich selber halte mich an eine einfache 20-Minuten-Regel: Jeden Morgen beschäftigst Du Dich erst einmal (mindestens) 20 Minuten mit etwas, das Du nicht oder noch nicht gut genug kannst. Dafür musst Du nur Deinen Arbeitstag 20 Minuten früher als sonst beginnen. Aber wenn Du konsequent bist, wird das einen großen Einfluss auf deine Karriere haben. Wenn Du jeden Tag nur kleine Fortschritte machst, sind Deine Lösungen in einem Jahr schon um ein Vielfaches besser.

Worauf sollten Neulinge achten?

Viele Unternehmen bevorzugen immer noch Leute, die in einem bestimmten Bereich programmieren (Spezialisten), weil die ihren Tech-Stack sehr gut kennen. Aber solche Leute sind oft nur begrenzt in der Lage, Probleme außerhalb ihres Fachgebiets zu analysieren. „T-Shaped Professionals“, also Software Engineers, die die Stärken des Generalisten und des Spezialisten in sich vereinen, sind für das Team viel besser. Wer mehrere Skillsets pflegt, kann viel eher an verschiedenen Teilen eines Projekts beteiligt werden.

Meines Erachtens brauchen Nachwuchskräfte solide Grundlagen, egal ob sie die nun aus Büchern, von anderen oder am Projekt lernen. Problemlösung durch Projektprozesse kann besonders effektiv sein. Mein Rat ist, so viel wie möglich zu programmieren, vor allem gemeinsam mit anderen im Rahmen eines Projekts (Paarprogrammierung). Lies aber auch den Code anderer und mach Code Reviews. Auf diese Weise erwirbst Du Skills, die in der Branche gefragt sind. Außerdem musst Du lernen, wie man in einem Team arbeitet und mit anderen kooperiert. Das ist manchmal sogar noch wichtiger als das fachliche Können.

Wie wichtig ist es, mit den Branchentrends Schritt zu halten?

Ich gehöre zu denjenigen, für die das Programmieren gleichzeitig Job und Hobby ist. Code zu schreiben macht mir Spaß, also tue ich es bei jeder Gelegenheit. Außerdem lese ich viele Bücher und Artikel zum Thema. Ich nehme mir auch die Zeit, den Code anderer Leute zu lesen – besonders online, wo es ja viele Open-Source-Projekte gibt. Man kann immer noch dazulernen.

Du bekommst so einen besseren Überblick über Dein Arbeitsgebiet und es kann auch für zukünftige Projekte hilfreich sein. Ich verwende zum Beispiel einige neue Sprachversionen in einer Anwendung, an der wir gerade arbeiten. Das war zu diesem Zeitpunkt zwar nicht unbedingt nötig, aber ich glaube, dass ich damit in Zukunft besser strukturierten Code erstellen und effizienter programmieren kann.

Apropos Branchentrends: Ernstzunehmende Software Engineers und Software Architects nehmen sich natürlich die Zeit, diverse Fachbücher und Online-Beiträge aus zuverlässigen Quellen wie InfoQ, DZone, ThoughtWorks Technology Radar usw. zu lesen und nutzen alle verfügbaren internen Plattformen zum Wissensaustausch (z. B. Yammer).

Was müssen denn Software Architects können?

Die Software-Architektur ist ein anderer Aufgabenbereich als Software Engineering. Software Architects müssen ein sowohl in die Breite als auch in die Tiefe gehendes Wissen mitbringen, vorzugsweise für verschiedene Technologie-Stacks. Am wichtigsten sind Kenntnisse zu den Grundlagen der Software-Architektur, verschiedene Architekturstile, Diagramm-Erstellung usw. Ganz wichtig für Architects ist Kommunikationskompetenz, weil sie mit allen möglichen Stakeholdern, Auftraggebern und den Developers sprechen müssen. Nicht zuletzt müssen Architects deshalb auch gute Führungsqualitäten und analytische Fähigkeiten besitzen. Wenn Du mit der Teamleitung betraut bist, musst Du als Architect in der Lage sein, ein Team mit unterschiedlichen Persönlichkeiten und Spezialisierungen zu führen. Was die analytischen Fähigkeiten angeht, so musst Du wissen, wie man die Stakeholder im Projekt klar identifiziert, die Anforderungen versteht, das System designt, den richtigen Architekturstil und Tech-Stack auswählt und natürlich auch, wie man das Ganze dokumentiert.

Um Architect zu werden, muss man definitiv einen oder mehrere Technologie-Stacks kennen und verstehen. Außerdem müssen Architects viel lesen, am besten Literatur, die andere Architects empfehlen. Als Architect kannst Du auch entsprechende Kurse belegen und Zertifizierungen erwerben (TOGAF, Open CA oder eine Architekturzertifizierung von einem der großen Cloud-Anbieter).

Darüber hinaus müssen Architects natürlich wissen, was auf der Code-Ebene überhaupt möglich ist. Das ist die Basis, die sich aber noch in weitere Bereiche unterteilen lässt, wie Lösungsarchitektur, Softwarearchitektur usw. In einem sind sich alle Architects auf jeden Fall einig: es gibt keine perfekten Lösungen, nur bestmögliche Kompromisse.

Wie macht man Karriere?

Wenn ein Unternehmen konkrete Jobanforderungen für jede Rolle und einen internen Karrierepfad definiert hat, kannst Du ohne Weiteres lange dort bleiben und aufsteigen. Die notwendige Erfahrung erwirbst Du dort. Höhere Positionen verlangen in der Regel mehr „People Skills“ oder soziale Kompetenz, weil Du mit Junior Developers arbeitest und sie coachen musst. Nach ein paar Jahren Berufserfahrung gibt es mehrere Richtungen, in die Du Dich orientieren kannst. Manche entscheiden sich zum Beispiel für eine Laufbahn im Management, wobei vor allem Projektmanagement beliebt ist. Andere verfolgen lieber eine fachliche Karriere. Es gibt Unternehmen, die von vornherein Empfehlungen für die angestrebte Laufbahn haben. Das lockt Dich aus der Reserve und bietet Dir Chancen zur Weiterentwicklung.

Wenn Du Deine Karriere gezielt verfolgen willst, solltest Du Dir ein Unternehmen suchen, das Dich in Deinen Ambitionen unterstützt und Dir hilft, Dich in der gewünschten Richtung weiterzuentwickeln.

mmil

Milan Milanović

Lead Software Architect
Ansprechpartner für Serbien

Dr. Milan Milanović arbeitet seit Oktober 2017 bei Zühlke. Er verfügt über mehr als 15 Jahre Erfahrung in der Softwarebranche und hat bereits in verschiedenen Domänen und mit diversen Tech-Stacks gearbeitet, unter anderem Web-Tier-Technologien, .NET- und Java-Plattformen sowie mobiles und dezentrales Computing. Er ist promovierter Informatiker sowie Microsoft Certified Developer und ScrumMaster. Als Autor zahlreicher wissenschaftlicher Publikationen in verschiedenen Bereichen der Informatik hat er diverse (internationale) Auszeichnungen erhalten. Seine größten Interessensgebiete sind Software-Architektur, Cloud-Computing-Lösungen, Web- und Mobile-Lösungen, agile Methodik und Management von Software-Teams im Hinblick auf innovative und hochwertige Produkte.

+381 11 442 6700