7 Minuten Lesezeit Mit Insights von Katarina Markovic Expert Software Engineer katarina.markovic@zuehlke.com Herzlich willkommen auf dem Hüb – einem Ort, an dem Fachleute ihre Expertise und ihr Wissen weitergeben. Wir informieren über die Branche, gestalten deren Zukunft mit und halten dich über alle wichtigen Trends auf dem Laufenden. Für welche Art von Unternehmen kann man als Software Engineer arbeiten? Wie kann man sich im Laufe des Berufslebens weiterentwickeln? Welche Skills muss man für die verschiedenen Arbeitsumfelder mitbringen?Gönn dir einen Kaffee, schalte entspannende Musik ein, und erlebe mit uns die dritte Folge von The HüB. Diesmal teilt Katarina Marković die wertvollen Erfahrungen, die sie als Full Stack Developer bei Zühlke gesammelt hat. Für welche Art von Softwareunternehmen kann man arbeiten? Generell ist Software dazu da, Probleme zu lösen und im Unternehmen einen Wert zu generieren. Ich habe schon in Unternehmen gearbeitet, in denen die Softwareentwicklung nicht das Hauptgeschäft ist, und in Unternehmen, die sich ausschließlich auf die Softwareentwicklung konzentrieren, entweder für ein eigenes Produkt oder als Dienstleister. Bei Unternehmen, deren Hauptgeschäft nicht die Softwareentwicklung ist, besteht deine Aufgabe darin, insgesamt zum Wachstum des Unternehmens beizutragen. Die IT-Abteilung ist nur ein Teil des Ganzen. Aber es ist eine gute Gelegenheit, etwas über die Wirtschaftswelt und die Abläufe in diesem Unternehmen zu lernen. Bei einem Unternehmen, das ein eigenes Produkt entwickelt, musst du über alle potenziellen Kunden und ihre Bedürfnisse nachdenken – und über die Optionen, die man anbieten kann, um sie alle zufrieden zu stellen. Man muss vor allem die Qualität und Benutzerfreundlichkeit im Auge behalten, damit die Software, die man entwickelt, möglichst fehlerfrei ist. Schließlich zahlt da jemand für das fertige Produkt. Vermutlich wirst du sehr stark mit dem Produkt verbunden sein, sodass es sich anfühlt, als sei es dein eigenes. Für manche kann aber die jahrelange Arbeit an ein und demselben Produkt eintönig werden, vor allem, wenn es woanders in der IT immer wieder neue Trends und Technologien gibt. Wenn du bei einem Dienstleister arbeitest, ist der Kunde derjenige, der darüber entscheidet, ob einige bekannte Bugs akzeptiert werden können, um Geld zu sparen. So tauchst du auch in die Kultur des Softwarehauses ein, fungierst als Berater und arbeitest eng mit dem Kunden zusammen. Es hängt sehr davon ab, worum es bei dem Projekt geht: manchmal ist man stark in das Geschäft des Kunden involviert, und manchmal lernt man nur einen ganz bestimmten Aspekt der Aufgabenstellung kennen. Wenn dich als Engineer vor allem die Codierung interessiert, ohne die größeren Zusammenhänge im Unternehmen oder der Organisation, merkst du das alles vielleicht gar nicht oder findest es nicht so wichtig. Die Gemeinsamkeit aller drei Szenarien ist, dass du deinen Code auf der Grundlage der Anforderungen schreibst, die man dir vorlegt. Wie behält man als Software Engineer seine Motivation? Man muss sich vor allem bewusst machen, was einen am meisten motiviert. Lernst du gerne brandneue Technologien oder Lösungsstacks kennen? Schaffst du gerne etwas Neues und Innovatives? Erleichterst du gerne anderen ihre Aufgaben? Oder ist dir die gute Teamatmosphäre, die Kommunikation mit Kunden oder das Kennenlernen der Branche wichtig? Es gibt so viele verschiedene Dinge, die einen motivieren können. Da sollte man sich eine Umgebung suchen, die zumindest einige davon ermöglicht. Außerdem muss man auch die Courage haben, zu sagen, wenn man etwas nicht gerne tut. Man sollte darum bitten, dass man eine Aufgabe bekommt, die einen interessiert. Schließlich ist Softwareentwicklung ein weites Feld, das viele verschiedene Möglichkeiten bietet. Es gibt so viele Optionen: verschiedene Softwareprodukte, Lösungen für Business-Cases, unterschiedliche Teamzusammensetzungen und Unternehmenskulturen. Da kann eigentlich jeder das finden, wo er sich wohlfühlt. Es ist nicht so einfach, ein leistungsstarkes Team zusammenzustellen. Einerseits muss man ja die Menschen mit den richtigen Fähigkeiten zusammenbringen, andererseits muss man aber auch ihre Motivationsfaktoren berücksichtigen. Wenn man auch noch Persönlichkeitstypen innerhalb des Teams aufeinander abstimmen würde, wäre ein großer Fortschritt, aber das ist ein anderes Thema. Was ist das Besondere an der Full-Stack-Entwicklung? Manche Unternehmen trennen die Front-End- und Back-End-Entwicklung. Die Front-End-Entwickler denken über visuelle Effekte, verschiedene Bildschirmgrößen, Browser, Zustandsverwaltung und Komponenten der Oberfläche usw. nach. Die Backend-Entwickler „leben“ in der Cloud oder auf der Serverseite; sie programmieren APIs, den größten Teil der Geschäftslogik, Schnittstellen zu externen Systemen wie Datenbanken, Dateisystemen, anderen Anwendungen usw. Full-Stack-Entwickler machen beides. Full-Stack-Entwickler können zu allen Teilen der Anwendung beitragen, die Architektur des gesamten Projekts mitbestimmen. Der Nachteil ist, dass sie zu bestimmten Themen weniger wissen als entsprechende Spezialisten. Man kann schließlich nicht auf allen Gebieten Experte sein. Bei Zühlke versuchen wir alle Spezialisten in einem bestimmten Gebiet zu sein, aber darüber hinaus auch Erfahrungen zu sammeln um in der Lage zu sein, andere Bereiche abzudecken. Am besten erkläre ich die Full-Stack-Arbeit mal anhand eines meiner jüngsten Projekte aus dem IoT-Bereich. Hierbei ging es um die Digitalisierung einiger Maschinen auf der Feldebene. Wir mussten Sensoren in die Software einbinden, die auf einem Industrie-PC läuft, und Daten in die Cloud schickt. Da es auf der Feldebene möglicherweise keine Internetanbindung gibt, musste auch dieser Fall abgedeckt werden. In der Cloud wurden die Daten zur weiteren Analyse zusammengefasst und gespeichert und auf vielen verschiedenen Bildschirmgrößen angezeigt. Es waren viele Technologien im Spiel und eine Menge Probleme zu lösen. Full-Stack-Entwickler müssen bei der Arbeit an ihrer Lösung all diese Aspekte im Auge behalten, während Front-End oder Back-End nur über ihren Teil des Problems nachdenken müssen. Ist der Technologiemarkt übersättigt? Es kommen und gehen viele Technologien. Einige halten sich, aber viele andere schaffen es nicht, eine ausreichend große Community anzuziehen. Man könnte jetzt sagen, dass die Zeit, in der ich mit Aurelia gearbeitet habe, verschwendet war, weil ich das nie wieder nutzen werde. Was aber die Technologie überlebt, sind die Konzepte. Wenn man also schon mal die Basics und Konzepte kennt, kann man leichter zwischen den Technologien wechseln. Deshalb würde ich dazu raten, sich auf Konzepte zu konzentrieren, nicht auf die Technologie selbst. Wie entwickelt man sich als Software Engineer weiter? Neues Wissen eigne ich mir über das Internet an, über Videokurse oder die Teilnahme an Workshops und Schulungen. Ich lerne auch viel von anderen Teammitgliedern, wenn ich an einem Projekt mitarbeite. Jeder Mensch hat aber seine eigene Art zu lernen. Es hängt auch davon ab, wo deine Interessen liegen. Manche Dinge kann man aus einem Buch lernen, andere nur durch Erfahrung. Verschiedene Arten von Produkten aus unterschiedlichen Branchen und Unternehmen bieten dir die Möglichkeit, nicht nur etwas über die Technologie, sondern auch über Teamorganisation und ‑kultur, Agilität, Produktlebenszyklus usw. zu lernen. Deshalb spielt es eine Rolle, an welcher Art von Projekt du arbeitest, denn bei jedem lernst du etwas anderes. Projekte für „altmodische“ Unternehmen verlangen beispielsweise Aufwand, damit sie sich auf ein agiles Projektmanagement und den Scrum-Prozess einlassen, und das ist eine einmalige Gelegenheit, Erfahrungen mit dieser Transformation zu sammeln. Wenn du als Entwickler arbeitest, musst du viel über das Problem wissen, an dessen Lösung du arbeitest. Wenn du willst, kannst du also später Experte auf diesem Gebiet werden und deine Karriere z.B. als Business Analyst in deinem Spezialgebiet fortsetzen. Du kannst aber auch in jede andere Rolle wie Teamleiter, Softwarearchitekt, Scrum Master, oder Projektmanager hineinwachsen. Welche Skills muss man mitbringen, um in einer modernen Software-Umgebung zu arbeiten? Abgesehen von guten fachlichen Kompetenzen braucht man auch eine Menge Soft Skills, um Erfolg zu haben. Software wird von Menschen und für Menschen entwickelt, deshalb ist Kommunikation absolut wichtig. Es arbeitet sich immer leichter, wenn die Teamatmosphäre stimmt. Du musst auch präsentieren können, denn oft musst du mit deiner Arbeit den Kunden überzeugen. Agile erfordert, dass du schnell auf Änderungen reagierst, das Team kontinuierlich über Änderungen informierst, Feedback zu Prozessen gibst usw. Du brauchst Fingerspitzengefühl, wenn du Feedback gibst, egal ob es sich nun um den Prozess oder um die Arbeit selbst handelt. Bei Zühlke begreifen wir Feedback als Chance, uns weiterzuentwickeln und auf etwas aufmerksam zu machen, was wir gerne ändern würden. Es ist nicht leicht, Feedback zu geben und anzunehmen, vor allem vermeintlich negatives. Menschen sind so unterschiedlich! Und wenn man Feedback gibt, muss man überlegen in welcher Situation man das tut und wann es überhaupt einen Nutzen hat. Auf jeden Fall muss es immer sachlich und in guter Absicht geschehen. Es darf auch niemals die Persönlichkeit kritisieren, sondern höchstens bestimmte Verhaltensweisen. Du betonst erst einmal die positiven Aspekte und nennst dann Dinge, die verbessert werden können. Auf diese Weise kommt es bei deinem Gegenüber positiv an und wird als eine Chance für Wachstum, statt als eine unangenehme Erfahrung empfunden. Ansprechpartner für Serbien Katarina Markovic Expert Software Engineer Katarina Markovic ist .NET Developerin und seit November 2017 bei Zühlke. Sie ist auch Frontend-Entwicklerin mit Kenntnissen in Aurelia, Angular und Typescript. Ihre Kernkompetenz liegt in der C#-Sprache und der Arbeit mit Datenbanken. Sie arbeitete hauptsächlich für Fin-Tech-Unternehmen. Ihre Leidenschaft ist es, Software zu verbessern, um sie für den Menschen nützlicher zu machen. Kontakt katarina.markovic@zuehlke.com +381 11 442 6700 Schreiben Sie uns eine Nachricht You must have JavaScript enabled to use this form. Vorname Nachname E-Mail Telefonnummer Message Absenden Bitte dieses Feld leer lassen Schreiben Sie uns eine Nachricht Vielen Dank für Ihre Nachricht.