TechLead-Story: Alexander Urbanec, CTO bei SobIT

TechLead-Story: Alexander Urbanec, CTO bei SobIT

tech-stories TechLeadStory

Team

Wie groß ist das Dev-Team? Wie setzt sich das Team,in Funktionen aufgeteilt, zusammen?

Aktuell haben wir ein Team von zehn Personen in Wien, mit Schwerpunkt auf WPF Desktop-Anwendungen, Windows-Services und Rest-Schnittstellen, sowie ein zweites Team von sechs Personen in Klagenfurt, mit Schwerpunkt Web- und mobile Frontends, Responsives Webdesign und Offline Fähigkeit. Funktional sind dabei fast alle Entwickler Full-Stack, und werden von einer Anforderungsmanagerin und einem Tester unterstützt. Es gibt für die einzelnen Lösungen oder Produkte jeweils technische Verantwortliche – man könnte sagen Product Owner –, sowie einen Manager, der die Ressourcen und Prioritäten im Auge behält.

Wie ist euer Dev-Team organisiert und aus welchem Grund habt ihr euch für eine bestimmte Organisation entschieden? Worin liegen die Vorteile, wo die Nachteile?

Unser Team arbeitet agil. Eine Mischung aus Scrum und Kanban, mit ein paar Adaptierungen für unseren Bedarf. Wir haben einige Jahre mit verschiedenen Prozessen experimentiert und fühlen uns aktuell mit dem gewählten am Wohlsten. Im Wesentlichen werden die Tasks über längere Iterationen hinweg in einem Kanban-Board einsortiert und von dort entnommen, wobei der Prozess auch im laufenden Zyklus größtmögliche Flexibilität erlauben soll. Wir versuchen damit einerseits klare Aufgaben und Prioritäten zu vergeben, andererseits aber auch einen möglichst geringen bürokratischen bzw. unflexiblen Overhead zu erreichen.

Was macht euer Team im Vergleich zu anderen Teams besonders?

Die hohe Eigenverantwortung jedes Entwicklers und die Einbindung im gesamten Prozess der Software-Entwicklung. Wenig Abgrenzung und Hierarchie, mehr Big Picture und gemeinsames Schaffen von Lösungen. Die Möglichkeit sich technisch und fachlich nach eigenen Interessen zu spezialisieren, Ideen einzubringen und diese auch zu verwirklichen. Die SobIT ist gemeinnützig aufgebaut, das heißt die Zielsetzung ist dem Kunden mit möglichst geringen Kosten – effektiv und effizient – einen möglichst hohen Nutzen zur Verfügung zu stellen. Dies erreichen wir durch Mitdenken aller Akteure, gemeinsame Abstimmungen und einer partnerschaftlichen Zusammenarbeit mit den Anwendern. Über den Weg dorthin, sowie über die verwendeten Frameworks und Technologien entscheidet dabei fast ausschließlich das Team.

Recruiting

Wie ist eure Dev-Abteilung in den Recruiting-Prozess integriert?

Das Recruiting für Entwickler läuft relativ unabhängig vom normalen Recruiting Prozess ab. Die Suche läuft dabei zunehmend auch über externe Personalvermittler. Das interne Erstgespräch wird zwar noch durch HR unterstützt, aber die konkrete Bewertung der Bewerber findet vorrangig durch Mitglieder des Teams oder der Teamleitung statt. Dabei liegt der Fokus nicht am reinen Abklopfen auf Technologien, sondern auch insbesondere auf Team- oder Prozess-Fitting, da die erfolgreiche Zusammenarbeit, gerade in der Softwareentwicklung, sich zunehmend nicht nur über Hard-Facts definiert.

Gibt es ein konkretes Prozedere für neue Kollegen? Wie werden diese integriert?

Begleitetes Self-Learning, mit Freiheit und Ressourcen dies auch zu tun. Für jeden Task steht ein Mentor zur Verfügung, wobei die Tasks üblicherweise so gewählt werden, dass ein langsames Einfinden in die Lösung und einzelne Bereiche erleichtert wird. Im Team herrscht generell eine sehr offene Gesprächskultur, das heißt für Fragen und Probleme findet man stets auch ohne Meetings oder Termine ein offenes Ohr.

Neben der fachlichen Qualifikation, worauf legt ihr noch Wert, wenn ihr nach Entwicklern für euer Team sucht?

Selbständigkeit und Ergebnisorientierung. Wir legen als Team den Fokus nicht auf Bürokratie und starre oder detaillierte Vorgaben, sondern auf Ziele und suchen MitarbeiterInnen, die diese auch eigenverantwortlich erreichen wollen. Dies gibt Freiheit und Gestaltungsspielraum, aber stellt Anforderungen an Organisations- und Kommunikationsfähigkeiten. Die KollegInnen müssen menschlich gut ins Team passen, sollen Spaß an der Arbeit haben und sich als Teil des Ganzen sehen wollen. Abgrenzungen und ein formaler Zuständigkeitsfokus sind nicht Teil unserer Kultur. Weiters sollte man eine technische Problemlösungskompetenz, aber auch ein fachliches (Geschäfts-) Prozessverständnis haben, um die Lösung nicht nur technisch, sondern auch gesamtheitlich zu verstehen. IT ist für uns kein Selbstzweck,ausgehend von Lastenheften, sondern eine Unterstützung für die Menschen, die damit arbeiten.

Technologien

Welchen technischen Herausforderungen seht ihr Euch gegenüber?

Wir bemühen uns stets am Puls der Zeit zu bleiben, um die Möglichkeiten von neuen Technologien bestmöglich zu nutzen. Gleichzeitig müssen wir dabei natürlich auch stabile und tragfähige Lösungen schaffen. 

Aktuell ist eine unserer größten Herausforderungen die Umstellung einer über die Jahre als Stand-Alone-Produkt gewachsenen WPF-, C#-, Entity Framework-Applikationen mit ein paar teil-integrierten mobilen- und Web-Komponenten auf eine moderne, serviceorientierte Client-Server Lösung mit verschiedenen und gleichberechtigten UIs oder Service-Konsumenten – mobile Applikation, Web-Applikation, WPF. Im Zuge dessen werden alte, mit der Service-Schicht verflochtene UIs auf MVVM umgestellt und die teils monolithische Business Logik in die kleinteilige, mittels dependency injection austausch- und anpassbare neue Service-Architektur transferiert. Diese wiederum setzt in einigen Bereichen bereits auf .NET Core.

Mit welchen Technologien arbeitet ihr?

Verwendete Technologien in Wien: C#, WPF (.NET Framework 4.8 und .NET Core 3.0), ASP.NET Core, gRPC, Entity Framework 50 und EF Core, Visual Studio 2019

Technologien in Klagenfurt: C#, ASP.NET, Angular, Android Studio, Git Extensions, Visual Studio 2019 und Visual Studio Code

Externe Frameworks: Telerik, Stimulsoft, Autofac, NLog, PostSharp, FluentValidation, Stateless, NewtonSoft MEF

Toolings: ReSharper

Umgebung: Azure DevOps mit Git, MS SQL-Server

Wie hat sich die Technologie des Unternehmens seit der Gründung verändert?

Das Team besteht als interne Entwicklungsabteilung unseres Mutterkonzerns seit ca. 2009 und wurde 2012 in die SobIT ausgelagert. Begonnen haben wir bereits 2009 mit .NET, WPF und Entity Framework, allerdings mit weniger Fokus auf MVVM und Mandantenfähigkeit als derzeit. Abgesehen von den verschiedenen Upgrades im Bereich .NET Framework, Visual Studio usw. waren die größten Veränderungen – wie bereits erwähnt – im Wiener Team mehr im architekturellen als im technologischen Bereich zu finden. Wir haben mit einem überschaubaren Team von Entwicklern begonnen, die im engen Austausch miteinander standen. Als wir mehr Kollegen und gleichermaßen Kunden gewannen, standen wir vor der Herausforderung unserem Code einen Maßstab aufzuerlegen, mit dem jeder arbeiten kann. Clean Code und Code Reviews fanden somit Einzug in unseren Prozess. Unterstützt werden wir dabei auch von einem ReSharper-Template, das unsere Formatting-Guidelines anwendet. Ebenso verändert haben sich unsere Entwicklungsprozesse, in denen wir von Arbeitspaket-Verwaltung bis zu Build- und Release-Management mittlerweile fast gänzlich auf Azure DevOps  – ehemals TFS – setzen . Das Team in Klagenfurt ist erst zwei Jahre jung und hat abgesehen von einem kurzen Abstecher zu React – jetzt Angular – die Technologien erst relativ frisch gewählt.

 

 

Alexander Urbanec

Web: http://www.sobit.at/