Im Interview erfährst du im Detail was Software Engineering ist, was Lisa in ihrem Alltag bei Esri R&D Center Zurich genau macht, was die wichtigsten Grundlagen sind wenn man Software Entwickler:in werden möchte und worauf bei Bewerber:innen besonders geachtet wird.
Was bedeutet Software Engineering?
Software Engineering beschreibt den Prozess der Entwicklung oder Herstellung von Software, beinhaltet in der Praxis aber in den meisten Fällen auch die Verteilung (engl. deployment/delivery), den Betrieb und die Wartung von Software. Im Vergleich zu Hardware ist Software keine physische Komponente und kann auf unterschiedlichen Geräten (engl. clients) ausgeführten werden. Die Software selbst ist eigentlich einfach eine Ansammlung von Programmiercode, normalerweise gebündelt, welche als Applikation auf einem Gerät ausgeführt (engl. execute) werden kann.
Welche Arten von Software gibt es?
Es gibt vielfältige Arten von Software, welche mit verschiedenen Programmiersprachen entwickelt werden. Es gibt Desktopapplikationen, welche auf einem Computer installiert werden und z.B. in einer Java Umgebung ausgeführt werden. Es gibt Apps, welche auf einem mobilen Endgerät installiert und ausgeführt werden, und dann z.B. in einer Android Umgebung laufen. Und dann gibt es Browserapplikationen, z.B. Websites, welche in JavaScript, der Programmiersprache des Browsers, geschrieben und ausgeführt werden. Und dann gibt es noch vieles mehr, wie z.B. Software welche für ganz bestimmte Hardwarekomponenten, z.B. eine Drohne oder ein industrieller Roboterarm, geschrieben wird, um diese zu steuern.
Die Entwicklung der Software ist abhängig davon, welche Programmiersprache verwendet wird um sie zu schreiben, und in welcher Umgebung sie am Ende ausgeführt wird. Zudem gibt es auch unterschiedliche Komponenten einer Software. Unter dem Frontend versteht man die Benutzeroberfläche, mit welcher der Endnutzer interagiert. Beim Backend handelt es sich um die Prozesse und Komponenten, welche im Hintergrund laufen, z.B. Datenbanken. Und dazwischen gibt es typischerweise eine Reihe von Schnittstellen (engl. API), welche den Austausch von Informationen und Daten zwischen dem Frontend und dem Backend ermöglichen.
Was hast du für Aufgaben als Software Engineer?
In meinem Team bei Esri R&D Center Zurich bin ich für die Entwicklung einer Webapplikation tätig, das heisst wir entwickeln eine Software, welche im Browser ausgeführt wird. Dafür verwenden wir TypeScript, eine Programmiersprache welche auf JavaScript aufbaut. Meine Tätigkeiten spielen sich sowohl im Frontend aber auch im Backend ab, ich bin also ein sogenannter Full Stack Developer. Ich arbeite im Frontend, wo wir React verwenden, und entwickle dort GUIs (Graphical User Interfaces), visualisiere Daten und implementiere mögliche Interaktionen. Gleichzeitig bin ich aber auch mit der Definition und Anbindung an unsere Datenbank beschäftigt, was im Bereich des Backend angesiedelt ist.
Darüber hinaus arbeite ich auch an der sogenannten User Experience (UX). UX beschäftigt sich damit, wie benutzerfreundlich Funktionalitäten der Software für den Endbenutzer sind. Dabei muss man einerseits die Anforderungen an die Funktionalität verstehen, und andererseits wissen, wie bestimmte graphische Elemente der Software auf den User wirken.
Mein Aufgabenbereich ist sehr vielfältig, da wir ein relativ kleines Entwicklungsteam sind und sehr agil funktionieren, was die Arbeitsteilung anbelangt. Bei uns helfen alle da mit, wo sie ihr Potenzial entfalten können. Wir haben beispielsweise keine klare Rollenverteilung bezüglich Frontend und Backend. Natürlich gibt es Software Engineers, die sich eher im Frontend oder im Backend zuhause fühlen, und sich dann eher Arbeiten im jeweiligen Bereich suchen. Für mich persönlich war jedoch der Reiz des Entwickelns immer der gesamte Prozess: von der ersten Idee für eine neue Funktionalität, zur Entwicklung von UI Designs, und der Implementierung im Frontend und Backend.
Was braucht man für Voraussetzungen, um Software Engineer zu werden?
Die Softwareindustrie ist sehr schnelllebig. Wer darin bestehen möchte, muss immer wieder Neues dazulernen und flexibel bleiben.
Je nach dem was für eine Art Software man entwickelt, wird eine andere Programmiersprache verwendet. Es gibt jedoch gewisse Paradigmen oder Konzepte in der Softwareentwicklung, welche man auf alle Sprachen anwenden kann. Eine andere Sprache ist oftmals nur eine neue Syntax, die man sich aneignen muss, ähnlich wie bei verwandten Sprachen wie z.B. Italienisch und Spanisch. D.h. nicht die Programmiersprache an sich würde ich als Voraussetzung nennen, sondern viel eher die Freude am Programmieren selbst.
Was mich persönlich am Programmieren fasziniert ist die Art und Weise wie man ein paar Zeilen Code in eine Visualisierung oder Interaktion verwandeln kann. Oder wie man ein kniffliges Problem mit einem Algorithmus elegant lösen kann. Als Software Engineer sollte man sicherlich eine gewisse Leidenschaft für das Schreiben von Code mitbringen – im besten Falle auch ein aussergewöhnliches Talent. Wo man das Programmieren erlernt hat – im Studium, Bootcamp oder autodidaktisch – ist meiner Meinung nach zweitrangig. Nebst dem Programmieren selbst ist es aber wichtig, dass man Konzepte und Paradigmen der Software Entwicklung versteht, wie z.B. Design Prinzipien und Best Practices, die sich etabliert haben. Und dass man sich fortlaufend weiterbildet und am Ball bleibt.
Oft gibt es kein Richtig und Falsch. Man muss es einfach mal probieren. Ganz nach dem Motto „try and error“!
Denn, die Softwareindustrie ist sehr schnelllebig. Wer hier bestehen möchte, muss immer wieder Neues dazulernen und flexibel bleiben. Obwohl sich gewisse Paradigmen seit einem halben Jahrzehnt gehalten haben, die Technologien zu deren Umsetzung ändern sich ständig. Das ist spannend und bietet immer wieder neue Chancen sich weiterzuentwickeln – man muss aber auch der Typ dazu sei.
Probleme gibt es in der Softwareentwicklung zu Haufe. Wer also gerne Probleme löst, grosse wie kleine, dem geht die Arbeit in diesem Job nie aus. Spannend wird es dann, wenn man das Problem nicht nur auf eine Art und Weise lösen kann, sondern viele Lösungen existieren, und man darunter die beste finden muss, z.B. im Bezug auf Benutzerfreundlichkeit, oder Performanz. Gute Softwareentwickler:innen haben irgendwann so viel Erfahrung, dass sie ein präzises Gespür für die richtige Lösung haben. Am Anfang einer Karriere als Softwareentwickler:in wird man oft auch mal eine falsche Lösung bis zum Ende verfolgen, bis man merkt, dass man auf dem Holzweg ist. Das gehört aber dazu und ist ein wichtiger Teil des Lernprozesses. Oft gibt es kein Richtig und Falsch. Man muss es einfach mal probieren. Ganz nach dem Motto „try and error“!
Kaum ein:e Softwareentwickler:in arbeitet alleine. Die meisten Softwareentwicklungsteams erfordern ein hohes Mass an Teamfähigkeit und Zusammenarbeit, und auch selbstständige Freelancer:innen kommunizieren oft und intensiv mit ihren Kunden. Die Umsetzung in Code erfordert ein gutes Verständnis der Anforderungen und wird oft mit vielen Iterationen erreicht. Dabei ist es wichtig, dass man die richtigen Fragen stellt und die technischen Zusammenhänge auch einem Laien verständlich erläutern kann.
Was ist besonders spannend an deinem Alltag?
In meinem Berufsalltag bin ich immer wieder vor neue Probleme gestellt. Ich mag besonders diese Abwechslung, die Herausforderung, und die Zusammenarbeit mit meinen Teamkolleg:innen, mit unseren Nutzer:innen, und auch mit anderen Softwareentwicklungsteams innerhalb und ausserhalb unserer Firma, um eine optimale und elegante Lösung zu finden.
Was mich aber besonders antreibt ist zu sehen, wie unsere Software in der realen Welt verwendet wird. Wir entwickeln eine 3D Applikation für die Stadtplanung, genannt ArcGIS Urban, welche es ermöglicht die zukünftige Bebauung der Stadt zu visualisieren und zu quantifizieren. Es ist enorm spannend zu sehen, wie unsere Software von verschiedenen Nutzer:innen eingesetzt wird, um nachhaltigere und sozialere Städte zu bauen.
Es ist enorm spannend zu sehen, wie unsere Software von verschiedenen Nutzer:innen eingesetzt wird, um nachhaltigere und sozialere Städte zu bauen.
Worauf wird bei Bewerber:innen besonders geachtet?
Analytisches und vernetztes Denken sind besonders wichtig, sowie die Herangehensweise an Probleme. Darüber hinaus achten wir z.B. auch besonders auf die Kommunikation, also wie Bewerber:innen etwas erklären können, z.B. wie sie ein Problem lösen würden, oder wie sie auf neue Inputs oder Fragen eingehen und reagieren.
Natürlich schauen wir auf technische Fähigkeiten wie das Programmieren sowie andere relevante Kenntnisse in der Softwareentwicklung, z.B. Softwarearchitektur. Je nach Level, Rolle oder Aufgabenbereich hat der technische Teil des Bewerbungsgesprächs oder CVs einen höheren oder tieferen Stellenwert. Wenn die geforderten technischen Kenntnisse und Fähigkeiten vorhanden sind, werden noch weitere Faktoren geprüft wie z.B. Motivation und Teamfähigkeit.
Hast du noch weitere Tipps für Bewerber:innen?
Ich habe meine Karriere als Entwicklerin mit einem Praktikumsprojekt gestartet. Das war für mich eine grossartige Chance, nicht nur mein Können unter Beweis zu stellen mit reduziertem Leistungsdruck, sondern auch für mich selbst herauszufinden, ob ich mich in der Firma und in der Rolle wohl fühle. Da ich nicht Informatik, sondern nur etwas Verwandtes studiert habe, wollte ich auch zuerst herausfinden, ob mir der Job und die Branche überhaupt zusagt.
Es ist ein enormer Vorteil, wenn man eine gewisse Leidenschaft für den Anwendungsfall der Software mitbringt.
Software Engineering ist eine Disziplin, bei der man vieles „on-the-job“ und von seinen Arbeitskolleg:innen lernt. Eine angenehme Lernumgebung ist dafür Voraussetzung, was jedoch sehr individuell ist. Manche lernen in einer ruhigen, entspannten Umgebung am besten. Andere lernen am effizientesten, wenn sie ins kalte Wasser geworfen werden.
Wie für jeden Job ist es wichtig, dass man die Umgebung, Stelle und Firma findet, welche für einem persönlich passt. Zudem ist es meiner Meinung nach immer ein enormer Vorteil, wenn man den Anwendungsfall der Software zumindest interessant findet, im besten Fall sogar auch eine gewisse Leidenschaft oder Verständnis dafür mitbringt. Das ist nicht nur wichtig, damit die Qualität der Software hoch ist, sondern trägt auch dazu bei, dass man motiviert bleibt.
Schau dir offene Software Engineer Stellen auf Freshjobs an