Um Teamarbeit bei der Softwareentwicklung geht es im Interview mit Christian Kranert in der einhundertachtundachzigsten Episode des IT-Berufe-Podcasts.
TL;DR
Bei meinen IT-Azubis gehört Teamarbeit ab dem ersten Ausbildungsjahr zum Alltag, weil komplexe Software das Wissen verschiedener Menschen braucht. Gemeinsam mit Christian Kranoth gehe ich darauf ein, wie du dich vom ersten Gespräch über ein Problem bis zum Testen einbringst und dabei von anderen lernst. Frühe Gespräche mit dem Fachbereich, gemeinsam abgestimmte technische Konzepte und regelmäßiger Austausch helfen dabei, bessere Software zu entwickeln. Als IT-Azubi kannst du von Anfang an echte Aufgaben übernehmen, während dich erfahrene Kolleg:innen begleiten und dir durch Feedback helfen, selbstständiger zu werden.
Kapitelmarken
[00:00:00] Thema und Einführung in Episode 188
[00:02:23] Teamarbeit als Teil der IT-Ausbildung
[00:03:07] Christian Kranoths Weg in der Softwareentwicklung
[00:05:38] Warum Softwareentwicklung Teamarbeit braucht
[00:08:13] Technische Komplexität und verschiedene Fachgebiete
[00:10:04] Mit dem Fachbereich Probleme und Lösungen besprechen
[00:13:25] Offene Gespräche und Unternehmenskultur
[00:15:04] Teamarbeit in Wasserfall und Scrum
[00:17:11] Täglicher Austausch und das Daily
[00:20:44] Produktideen bewerten und das Backlog priorisieren
[00:23:18] Das technische Konzept gemeinsam erarbeiten
[00:26:06] Aussagekräftige Namen im Team festlegen
[00:27:58] Pair Programming und Code Reviews
[00:28:35] Mit der Qualitätssicherung zusammenarbeiten
[00:30:27] Sinnvolle Meetings und aktive Beteiligung
[00:35:41] Verantwortung für die Teamkultur
[00:37:07] Das Phasenmodell der Teamentwicklung in der Praxis
[00:39:50] Hierarchien und weitere Schwierigkeiten im Team
[00:42:15] Zurückhaltende Kolleg:innen ermutigen
[00:45:35] Führung und Konflikte im Team
[00:47:11] Fehlerkultur und verbindliche Checklisten
[00:49:42] IT-Azubis und Junior-Entwickler:innen einbeziehen
[00:52:40] Mit Checklisten und Dokumentation selbstständiger arbeiten
[00:54:08] Folgen dauerhaft abgelehnter Teamarbeit
[00:55:31] Erfahrene Entwickler:innen und der Begriff 10x Developer
[00:57:00] Wissen weitergeben und gemeinsam wachsen
[00:58:13] Abschließende Gedanken zur Teamarbeit
[00:59:32] Kontakt zu Christian Kranoth
[01:00:33] Feedback und Ausbildungsbegleitung per Newsletter
Inhalt
Vorstellung Christian Kranert
Christian hat sich schon in Episode 164 des Podcasts über Softwarequalität ausführlich vorgestellt, aber hier noch einmal die wichtigsten Eckdaten.
Christian Kranert
seit 17 Jahren in der IT und Softwareentwicklung tätig
angefangen mit Visual Basic 6 auf Windows 95
Ausbildung zum Fachinformatiker für Anwendungsentwicklung absolviert
viel im SAP-Umfeld mit ABAP entwickelt
inzwischen hauptsächlich mit C# unterwegs
lebt und arbeitet in Nürnberg bei Head On Solutions GmbH
entwickelt dort Cloud-Software für lokale Geschäfte wie Friseur-Studios zum Planen von Terminen, Kassieren, Buchhaltung usw.
ist Abteilungsleiter mit eigenem Team
Teamarbeit in der Softwareentwicklung
Warum brauchen wir Teamarbeit bei der Softwareentwicklung?
bei der Komplexität heutiger Software ist es fast undenkbar, diese alleine zu entwickeln
heutige Webanwendungen enthalten z.B. sehr viel UI-Entwicklung und sind im Backend und Frontend sehr komplex, Stichwort: Full Stack
Christians Unternehmen hat ein eigenes Team ausgelagert nur für VueJS im Frontend
durch das Team entsteht auch bessere Software
wir wollen doch die "echte Welt" übersetzen in Code und dort gibt es auch mehr als einen Benutzer
gemeinsam zu entwickeln macht mehr Spaß, ist sozial, man kann voneinander lernen, man kann sich weiterentwickeln
die interdisziplinäre Zusammenarbeit mit dem Fachbereich bzw. Kunden ist auch extrem wichtig
Wie sieht erfolgreiche interdisziplinäre Zusammenarbeiten zwischen dem IT-/Entwicklungs-Team und anderen Abteilungen aus?
der Fachbereich erklärt den Entwickler:innen die Fachlichkeit
Entwickler:innen dürfen/müssen das aber auch hinterfragen und ggfs. bessere Lösungen vorschlagen
man sollte erst über das Problem reden und nicht schon über Lösung
es muss die generelle Bereitschaft zur Teamarbeit vorhanden sein und eine entsprechende Kultur
Welche Prozessmodelle (z.B. Wasserfall, Scrum) unterstützen/behindern die Teamarbeit?
das klassische Wasserfallmodell ist eher hierarchisch aufgebaut mit Lasten-/Pflichtenheft und passt nicht so gut zur Teamarbeit
Scrum ist aber auch kein Allheilmittel
das Daily ist sehr wichtig, denn Kommunikation ist der Schlüssel zu erfolgreicher Teamarbeit
Wie sieht richtig gute Teamarbeit in der Softwareentwicklung aus?
Kommunikation ist das A und O, z.B. wenn ein Feature fertig ist, damit die Kolleg:innen darauf aufsetzen können
alle Teammitglieder:innen sollten auch aktiv Hilfe anbieten und einfordern
die gesamte Softwareentwicklung ist Teamarbeit und die geht schon mit der Produktidee los
dabei kann es helfen, verschiedene Perspektiven einzunehmen, um ein besseres Bild der Anforderungen zu bekommen
auch weitere Aufgaben lassen sich besser im Team lösen: Risiken abschätzen, Prioritäten ableiten, Product Backlog füllen
wenn das Verhältnis von Kosten und Nutzen passt, startet die Implementierung und Aufgaben werden im Team verteilt
in Christians Team werden Konzepte z.B. gemeinsam erarbeitet, ganz einfach in OneNote*
das Team startet mit einem Datenmodell als Diskussionsgrundlage und legt dann die Datentypen fest
außerdem werden Mockups erstellt, um darüber gemeinsam zu diskutieren
sehr wichtig ist auch das gemeinsame Festlegen von Namen im Team, denn viele Köpfe haben mehr (fachliches) Wissen als einer alleine
der große Vorteil bei dieser Vorgehensweise ist, dass früh erkannte Fehler bei Anpassungen wenig kosten im Vergleich zu späteren Projektphasen, wenn alles schon umgesetzt ist
Warum ist die Teamkultur nicht nur beim Code Review wichtig und wie sieht sie aus?
Christians Team entwickelt oft im Pair Programming zusammen und führt danach noch Code Reviews durch
hier war oft insb. beim Testen die Einstellung, dass das doch jemand anders macht und nicht die Aufgabe der Softwareentwickler:innen sei
aber gerade beim Testen ist die Abstimmung mit den Tester:innen wichtig, damit man nicht den kompletten Code umschreiben muss, wenn man am Test vorbei entwickelt hat
Wie stellt man sicher, dass alle Teammitglieder:innen sich aktiv einbringen und wie kann eine Führungskraft Teamarbeit fördern/behindern?
die Führungskraft ist sehr wichtig, denn ihre zentrale Aufgabe ist die Pflege der Teamkultur
die häufig anzutreffene Skepsis bei Entwickler:innen gegenüber Meetings muss von der Führungskraft abgebaut werden
Meetings müssen aber natürlich auch einen Mehrwert für alle Teilnehmer:innen bieten und müssen vernünftig geplant und vorbereitet werden
auch für Entwickler:innen sind Meetings wichtig, da sie helfen, offene Fragen zu klären und Entscheidungen herbeizuführen
Teamarbeit kann die Teammitglieder:innen motivieren, wenn man gemeinsam eine gute Lösung findet und z.B. eine "harte Nuss" knackt
Braucht ein Team eine Leitung?
das kommt stark auf das Team an
Storming, Forming, Norming, Performing: gibt es das wirklich in der Praxis?
Christian hat das mal in einem Buch gelesen, aber nur dunkel in Erinnerung
in der Praxis durchlaufen die Teams diese Phasen wohl tatsächlich, aber intuitiv verhalten sich die Mitglieder:innen meist den Phasen entsprechend
Wie sieht häufig die (negative) Realität in Sachen Teamarbeit aus bzw. an welchen Fehlern scheitert Teamarbeit häufig?
Juniors werden vernachlässigt und bekommen keine oder zu wenig Unterstützung
Hierarchiedenken, gerade wenn Softwareentwicklung nicht das Kerngeschäft des Unternehmens ist
Introvertiertheit der Teammitglieder:innen
aber auch Extrovertiertheit bzw. Egozentrik bei Teammitglieder:innen
Mangel an Diversität im Team
Wie wird man als Entwickler:in "teamfähig"?
Persönlichkeitsentwicklung! dazu gibt es viele gute Bücher
eine fördernde und fordernde Führungskraft ist wichtig für das Empowerment der Teammitglieder:innen
die Führungskraft sollte z.B. One-on-Ones mit Mitarbeitenden führen, immer wieder nachfragen und auch die eigene Entwicklung aufzeigen
loben und wertschätzen sollten bei jeder Führungskraft dazu gehören
Empathie ist auch wichtig
Konflikte sollten schnell gelöst werden
Wie wichtig ist eine gute Fehlerkultur?
sehr wichtig
Fehler müssen erlaubt sein und dürfen nicht "geahndet" werden
aber was ist eigentlich ein Fehler? Schludrigkeit ist sicherlich kein Fehler
Checklisten können helfen, eine gewisse Basisqualität sicherzustellen
Wie können schon Azubis in die Teamarbeit integriert werden?
einfach mal loslegen und sie an die Hand nehmen
Azubis direkt in echte Projekte einbinden, aber ohne harten Deadlines oder großes Fehlerpotential
viel loben
Checklisten helfen auch hier beim Einstieg
Was sind die Folgen, wenn nicht im Team gearbeitet wird?
Christian hat noch nie jemanden kennengelernt, der/die sich aktiv gewehrt hat gegen Teamarbeit
eher haben die Kolleg:innen evtl. Angst mitzumachen
den berühmten "10x-Develover" gibt es nicht, aber Seniors können als Multiplikatoren im Team wirken und Juniors voranbringen und damit das gesamte Team
Wie/wo kann man dich erreichen?
LinkedIn
Links
Permalink zu dieser Podcast-Episode
RSS-Feed des Podcasts
Qualitätssicherung bei der Softwareentwicklung mit Christian Kranert
Christian Kranert bei LinkedIn
Head-on Solutions GmbH bei LinkedIn
Zusammenfassung
Warum du im Team arbeitest
Wenn ich neue IT-Azubis begrüße, spreche ich mit ihnen darüber, wie sie im Team zusammenarbeiten. Bei komplexer Software kommen verschiedene Fachgebiete zusammen, die jeweils eigenes Wissen verlangen. Durch den Austausch mit anderen entstehen stabilere Produkte, deren Funktionen besser zu den Bedürfnissen der Benutzer:innen passen.
Christian Kranoth bringt dazu 17 Jahre Berufserfahrung in der Softwareentwicklung mit....