Zühlke – Empowering Ideas

Menschen und Kultur

5 Tipps für die Karriereplanung in der Softwareentwicklung

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.

mmil

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.

5 Minuten to read

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.

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.

Milan Milanovic
Ansprechpartner für Serbien

Milan Milanović

Lead Software Architect

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.

Kontakt