Kapitel 1. Was macht ein Team für Softwareentwicklung effektiv?

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Manche Teams scheinen wie gut geölte Maschinen zu arbeiten und Erfolge zu erzielen. Die Kommunikation läuft reibungslos, sie halten Fristen mit einem Lächeln ein und gehen Herausforderungen zielstrebig an. Andere Teams hingegen kämpfen darum, jeden Meilenstein zu erreichen. Die Kommunikation ist chaotisch und die Einhaltung von Terminen ist eine Herausforderung. Was macht die erfolgreichen Teams so effektiv? In der Regel ist es eine Mischung aus mehreren Dingen: klare Pläne, ehrliche Gespräche, eine gesunde Portion Vertrauen und ein gemeinsamer Glaube an das, was sie tun. Einige Teams haben den Rhythmus und die Schritte bereits verinnerlicht, während andere noch dabei sind, die Dinge herauszufinden. Aber die gute Nachricht ist, dass jeder die Schritte lernen kann. Selbst die strauchelndste Mannschaft kann mit ein bisschen Übung ihren Rhythmus finden.

Dieser Rhythmus zeigt sich in Softwareentwicklungsteams in ihrer Fähigkeit, nützliche Produkte oder Produktfunktionen zu produzieren, indem sie Code schreiben, ihn testen und der Welt zur Verfügung stellen. Teams, die dies regelmäßig tun, gelten als effektiv. Um großartige Software zu entwickeln, müssen wir also zuerst effektive Entwicklungsteams aufbauen.

In meiner mehr als 25-jährigen Erfahrung als Leiter von Ingenieurteams bei Google und anderen Tech-Unternehmen habe ich aus erster Hand erfahren, wie die Teamdynamik ein Projekt entscheiden kann. Beim Aufbau effektiver Teams geht es nicht nur darum, die richtigen technischen Fähigkeiten zusammenzubringen, sondern auch darum, eine Kultur der Zusammenarbeit, des Vertrauens und der gemeinsamen Ziele zu fördern. In diesem Kapitel erzähle ich dir, was ich über den Erfolg von Ingenieurteams gelernt habe. Dabei stütze ich mich sowohl auf Forschungsergebnisse als auch auf meine eigenen Erfahrungen in der Praxis.

Was ein Ingenieurteam effektiv macht, hängt von dem ab, was Teams von Gruppen unterscheidet. Auf der einen Seite ist eine Gruppe eine Ansammlung von Einzelpersonen, die ihre Bemühungen koordinieren. Andererseits ist ein Team eine Gruppe, die durch gemeinsame Verantwortlichkeiten und Ziele verbunden ist. Ihre Mitglieder arbeiten zusammen und tragen gegenseitig Verantwortung, um Probleme zu lösen und gemeinsame Ziele zu erreichen. Wenn Teams ihre Arbeit planen, Fortschritte überprüfen oder Entscheidungen treffen, berücksichtigen sie die Fähigkeiten und die Verfügbarkeit aller Mitglieder und nicht nur die eines Einzelnen. Dieses gemeinsame Ziel ist der Antrieb eines effektiven Teams.

Ich hatte die Gelegenheit, solche Teams bei Google zu beobachten oder ihnen beizuwohnen. Diese Teams sind mit Leidenschaft dabei, ihre Ziele zu erreichen. Sie finden Brainstorming-Sitzungen eher lustig als stressig. Die Teammitglieder schreiben und testen den Code zwar auf ihren jeweiligen Rechnern, aber sie haben eine gemeinsame Vision davon, was der Code erreichen soll. Es gab Zeiten, in denen sie einige schwierige Probleme lösen mussten, aber eine Kultur der Zusammenarbeit, der Innovation und des gegenseitigen Respekts hat ihnen geholfen, solche Zeiten zu überstehen.

Führungskräfte sind ein wichtiger Teil dieses Bildes. Als Leiter/in der Softwareentwicklung, der/die sein/ihr Team effektiv machen will, fungierst du als Anker, der die einzelnen Teammitglieder mit den gemeinsamen Aufgaben und Zielen des Teams verbindet. Du gibst die Vision, die Richtung, die Anleitung und den Rahmen vor, der für diese Verbindung notwendig ist.

Es ist zwar möglich, ein Team ohne Leiter/in zu haben, aber mit der Unterstützung eines/einer guten Leiters/in kommt das Team viel weiter - und genau da kommst du ins Spiel!

Der Aufbau eines effektiven Teams für Softwareentwicklung erfordert Arbeit. Viele Faktoren können den Erfolg eines Teams für Softwareentwicklung beeinflussen, z. B. die Zusammensetzung des Teams, die Kommunikation, die Führung und die Arbeitsabläufe. In diesem Kapitel geht es darum, welche Eigenschaften Teams effektiv machen und wie du sie in dein Team einbauen kannst. Auf diese Eigenschaften kannst du bei der Einstellung achten, aber sie sind auch Eigenschaften, die du in deinem bestehenden Team fördern kannst.

Forschung darüber, was Teams effektiv macht

Zunächst wollen wir untersuchen, was Teams effektiv macht. Dazu schauen wir uns einige der umfangreichen Untersuchungen an, die bereits zu diesem Thema durchgeführt wurden.

Projekt Aristoteles

Google führte eine der bekanntesten Studien über effektive Teams in der Softwareentwicklung durch, das sogenannte Projekt Aristoteles.1 Ziel des Projekts war es, die Faktoren zu ermitteln, die einige Teams erfolgreicher machen als andere. Die Studie ging davon aus, dass die Zusammensetzung eines Teams nicht der entscheidende Faktor für den Erfolg ist, sondern wie die Teammitglieder miteinander umgehen.

Hinweis

Vor Project Aristotle gab es Project Oxygen, das untersuchte, welche Eigenschaften einen guten Manager ausmachen. Einige der Erkenntnisse in diesem Kapitel beruhen auf den Ergebnissen von Project Oxygen, auf die ich in Kapitel 4 näher eingehen werde.

Um herauszufinden, was Teams effektiv macht, mussten die Forscher zunächst definieren, was Effektivität bedeutet und wie man sie messen kann. Dabei stellten sie fest, dass die verschiedenen Rollen unterschiedliche Perspektiven auf die Effektivität haben. Während sich die Führungskräfte für Ergebnisse wie Verkaufszahlen oder Produkteinführungen interessierten, waren die Teammitglieder der Meinung, dass die Teamkultur der Schlüssel zur Teameffektivität ist. Die Teamleiter/innen gaben an, dass Eigenverantwortung, Vision und Ziele die wichtigsten Messgrößen sind.

Schließlich beschlossen die Forscher, bestimmte qualitative und quantitative Faktoren zu untersuchen, die sich auf die Effektivität des Teams auswirken könnten, z. B. die folgenden:

Teamdynamik

Demografie, Konfliktlösung, Zielsetzung, psychologische Sicherheit

Persönlichkeitsmerkmale

Extraversion, Gewissenhaftigkeit

Fertigkeiten

Programmierkenntnisse, Kundenmanagement

Die Forscherinnen und Forscher führten Interviews durch und überprüften vorhandene Umfragedaten von 180 Google-Teams. Anhand dieser Daten führten sie 35 verschiedene statistische Modelle durch, um herauszufinden, welche der vielen erhobenen Daten die Effektivität des Teams beeinflussen.

Projekt Aristoteles hat fünf Schlüsseldynamiken identifiziert, die zum Erfolg von Softwareentwicklungsteams beitragen (siehe Abbildung 1-1). Diese werden im Folgenden in der Reihenfolge ihrer Bedeutung aufgeführt:

Psychologische Sicherheit

Dies war der wichtigste Faktor, der von den Forschern ermittelt wurde. Er bezieht sich auf das Ausmaß, in dem sich die Teammitglieder wohl fühlen, wenn sie ihre Meinungen und Ideen ohne Angst vor Vergeltung oder Kritik äußern können. Teams, die ein hohes Maß an psychologischer Sicherheit haben, sind in der Regel innovativer und gehen mehr Risiken ein, was zu besseren Ergebnissen führen kann. Die Forscher fanden heraus, dass Teams, die sich sicher fühlen,:

  • verlassen das Unternehmen seltener

  • Sie nutzen die verschiedenen Ideen, die im Team diskutiert werden, mit größerer Wahrscheinlichkeit

  • Mehr Umsatz zu machen und ihre Verkaufsziele zu übertreffen

  • Neigen dazu, die Effektivität ihrer Führungskräfte hoch einzuschätzen

Verlässlichkeit

Dies bezieht sich auf das Ausmaß, in dem sich die Teammitglieder aufeinander verlassen können, um ihre Arbeit zu erledigen und Termine einzuhalten. Teams, in denen sich die einzelnen Mitglieder aufeinander verlassen können, arbeiten mit größerer Wahrscheinlichkeit effizient und effektiv.

Struktur und Klarheit

Dies sind Bedingungen, unter denen die Teammitglieder die Ziele des Projekts und ihre individuellen Rollen und Verantwortlichkeiten klar verstehen. Teammitglieder, die genau wissen, was von ihnen erwartet wird, sind in der Regel produktiver und konzentrierter.

Bedeutung

Dies bezieht sich auf das Ausmaß, in dem Teammitglieder das Gefühl haben, dass ihre Arbeit sinnvoll ist und einen Zweck hat. Teams mit einem ausgeprägten Sinn für Ziele sind in der Regel motivierter und engagierter.

Aufschlag

Dies bezieht sich darauf, wie die Teammitglieder glauben, dass ihre Arbeit einen Unterschied macht und Auswirkungen auf die Organisation oder die Gesellschaft hat. Teams, die sich ihrer Bedeutung bewusst sind, engagieren sich stärker für ihre Arbeit und den Erfolg des Projekts.

Abbildung 1-1. Googles Projekt Aristoteles: Die fünf Dynamiken effektiver Teams

Auch wenn die Forschung im Rahmen von Project Aristotle bei Google durchgeführt wurde, könnten die ermittelten Faktoren, die die Teameffektivität beeinflussen, auch für Teams in anderen Kontexten von Bedeutung sein. Wenn sich Softwareentwicklungsteams auf diese fünf Faktoren konzentrieren, können sie ein Umfeld schaffen, das Zusammenarbeit, Innovation und Erfolg begünstigt. Wie ich in Kapitel 4 erläutern werde, kann eine gute Führungskraft diese Dynamik in ihren Teams fördern.

Die Forscher fanden auch heraus, dass Variablen wie die Teamzusammensetzung (Größe und Standort) oder individuelle Eigenschaften (extrovertierter Charakter, Dienstalter, Betriebszugehörigkeit usw.) nicht wesentlich zur Teameffektivität bei Google beitrugen. Auch wenn diese Variablen keinen signifikanten Einfluss auf die Messung der Teameffektivität bei Google hatten, bedeutet das nicht, dass sie unwichtig sind, wie der folgende Abschnitt zeigt.

Andere Forschung

Project Aristotle ist vielleicht die bekannteste Studie über effektive Softwareentwicklungsteams, aber auch viele andere Studien haben sich mit Faktoren wie Teamzusammensetzung, Kommunikation, Führung und Arbeitsprozessen beschäftigt. Hier sind einige der wichtigsten Erkenntnisse aus diesen Studien:

Kleinere Teams sind besser.

Obwohl Projekt Aristoteles die Teamgröße nicht als relevant für die Teameffektivität ansah, haben andere Studien gezeigt, dass kleinere Teams besser funktionieren. Wenn ein Team größer wird, steigt die Anzahl der Verbindungen, die zwischen den Mitgliedern verwaltet werden müssen, exponentiell an. Die Verwaltung dieser zahlreichen Kommunikationskanäle kann kompliziert sein. Viele Forscher haben festgestellt, dass kleinere Teams mit weniger als 10 Mitgliedern eher erfolgreich sind als größere Teams.

Vielfalt kann von Vorteil sein.

Manchmal wird behauptet, dass die Vielfalt im Team zu Kommunikations- und Koordinationsproblemen führen kann. Ein vielfältiges Team besteht zum Beispiel in der Regel aus Menschen mit unterschiedlichem familiären Hintergrund. Personen mit kleinen Kindern suchen eher nach flexiblen Arbeitszeiten, was zu Koordinationsproblemen führen kann. Andere haben jedoch festgestellt, dass vielfältige Teams innovativer und effektiver sein können. Eine Studie von Lu Hong und Scott Page von der University of Michigan ergab, dass Gruppen von zufällig ausgewählten (wahrscheinlich unterschiedlichen) hochqualifizierten Problemlösern besser abschneiden können als Gruppen, die sich aus den besten Problemlösern zusammensetzen. Es ist jedoch wichtig zu beachten, dass Vielfalt allein nicht ausreicht. Teams müssen auch ein integratives und respektvolles Umfeld für alle Teammitglieder schaffen. Ein Team, das zum Beispiel Teammitglieder unterstützt, die flexible Arbeitsregelungen brauchen, wird sich besser koordinieren können als ein Team, das gegenüber Mitgliedern mit solchen Bedürfnissen intolerant ist.

Klare Kommunikation ist entscheidend.

Effektive Kommunikation ist eine wesentliche Voraussetzung für effektive Teamarbeit. Studien haben ergeben, dass Teams, die häufig und offen kommunizieren, erfolgreicher sind als solche, die das nicht tun. Psychologische Sicherheit ist die Überzeugung der Teammitglieder, dass sie ihre Gedanken, Ideen, Bedenken und sogar Fehler frei äußern können, ohne negative Konsequenzen oder Urteile befürchten zu müssen. Ihre Bedeutung wird durch die Forschungsergebnisse des Projekts Aristoteles untermauert. Klare Kommunikation ist auch der Kitt, der die Teammitglieder verbindet und für Struktur und Klarheit innerhalb des Teams sorgt.

Leadership matters.

Die Führung eines Teams in der Softwareentwicklung kann einen großen Einfluss auf seinen Erfolg haben. Googles Project Oxygen hat gezeigt, dass Teams zwar auch ohne eine Führungskraft funktionieren können, aber dennoch Manager gebraucht werden. Es hat die wesentlichen Eigenschaften identifiziert, die gute Manager und effektive Teams ausmachen. Auf diese Eigenschaften werde ich in Kapitel 4 eingehen, aber jetzt ist es wichtig zu verstehen, dass es eine starke Korrelation zwischen effektiver Führung und positiven Teamergebnissen gibt.

Agilität ermöglicht Anpassungsfähigkeit.

Agilität ist die Fähigkeit, sich schnell an veränderte Umstände anzupassen. In der Softwareentwicklung bedeutet das, dass man in der Lage ist, sich umzuorientieren, wenn sich die Anforderungen ändern oder wenn unerwartete Probleme auftreten. Agile Teams sind anpassungsfähig und können schnell und effizient arbeiten und dabei eine hohe Qualität beibehalten. Eine Studie von McKinsey & Company hat ergeben, dass Unternehmen, die eine erfolgreiche agile Transformation durchlaufen haben, eine deutliche Verbesserung in Bezug auf Effizienz, Geschwindigkeit, Kundenzufriedenheit, Innovation und Mitarbeiterengagement verzeichnen - allesamt wichtige Faktoren für die Effektivität.

Colocation treibt die Innovation voran.

Die Debatte darüber, ob Colocation- oder Remote-Arbeit besser für die Effektivität von Software-Teams ist, hält an, wobei beide Ansätze ihre eigenen Vor- und Nachteile haben. Mehrere Studien, die u.a. in Harvard und Stanford durchgeführt wurden, diskutieren die Vorteile von Remote- oder Hybridarbeit in Bezug auf die Zufriedenheit und Bindung von Mitarbeitern. Andere Studien haben jedoch gezeigt, dass persönliche Interaktionen am Arbeitsplatz, sowohl geplante als auch zufällige, den Wissensfluss, das Teilen von Werten und den Austausch von Ideen fördern, was wiederum zu Innovationen beiträgt.

Auch wenn es triviale Unterschiede in den Ergebnissen gibt, können wir auf der Grundlage der in diesem Abschnitt diskutierten Forschungsergebnisse ein theoretisches Bild eines idealen, effektiven Teams entwerfen. Siehe Abbildung 1-2. Indem sie psychologische Sicherheit, klare Strukturen und Kommunikation, Zuverlässigkeit, sinnvolle Arbeit und Flexibilität ermöglichen, können Softwareentwicklungsteams ein Umfeld schaffen, das Zusammenarbeit, Innovation und Erfolg begünstigt.

Abbildung 1-2. Faktoren, die Teams beeinflussen

Auf diesem Verständnis der Dynamik und der Faktoren, die die Effektivität von Teams beeinflussen, kannst du nun aufbauen. Als Nächstes musst du dir überlegen, wie sich das Arbeitsumfeld auf Teams auswirken kann und wie du dein Team motivieren kannst, erfolgreich zu sein. Achte in den nächsten Abschnitten darauf, wie die Faktoren, die Teams beeinflussen, in verschiedenen Kontexten auftauchen.

Motivation treibt die Leistung an

Bevor du ein effektives Team aufbauen oder planen kannst, wie du dein bestehendes Team effektiver machen kannst, musst du die Macht der Motivation verstehen und nutzen. Mit Motivation meine ich nicht nur traditionelle Belohnungen und Anreize, wie z. B. eine Vergütung und greifbare Vergünstigungen am Arbeitsplatz. Solche Anreize können Menschen effektiv dazu motivieren, einfache Aufgaben zu erledigen. Im Gegensatz dazu werden intrinsische Belohnungen, wie z. B. der Stolz auf die eigene Arbeit oder das Erlernen neuer Fähigkeiten, an modernen Arbeitsplätzen geschätzt, an denen Innovation und Kreativität eine große Rolle spielen - wie z. B. in der Softwareentwicklung. Intrinsische Belohnungen motivieren Menschen dazu, an Projekten zu arbeiten, für die sie sich bereits begeistern, z. B. an aktuellen oder an neuen, innovativen Projekten. Diese Bestätigung und Unterstützung ermöglicht es diesen Menschen, sich zu entfalten und ihre beste Arbeit zu leisten.

Laut Daniel H. Pink in seinem Buch Drive (Riverhead Books, 2011) gibt es drei Elemente, die Menschen wirklich motivieren und ihre Leistung steigern:

Autonomie

Autonomie ist der Wunsch, selbstbestimmt und eigenverantwortlich zu arbeiten. Softwareentwicklungsteams mit einem hohen Maß an Autonomie sind in der Regel engagierter und motivierter, da jedes Team so arbeiten kann, wie es seinen individuellen Stärken und Vorlieben am besten entspricht.

Beherrschung

Meisterschaft ist der Wunsch, die eigenen Fähigkeiten und Fertigkeiten ständig zu verbessern. Dieses Prinzip ist für Teams in der Softwareentwicklung unerlässlich, da sich die Technologie ständig weiterentwickelt und verbessert. Ingenieure und Ingenieurinnen, die ihr Handwerk beherrschen, werden mit größerer Wahrscheinlichkeit qualitativ hochwertige Arbeit leisten und zum Erfolg ihres Teams beitragen.

Zweck

Zweck ist der Wunsch, etwas Sinnvolles und Wichtiges zu tun. Dieser Grundsatz ist für Softwareentwicklungsteams von entscheidender Bedeutung, da Ingenieure oft an Projekten arbeiten, die erhebliche Auswirkungen auf ihr Unternehmen oder ihre Branche haben. Dies erinnert an eine von Aristoteles' Dynamiken effektiver Teams: Wirkung.

Um ein effektives Team aufzubauen, musst du diese drei Katalysatoren berücksichtigen, die helfen, Teammitglieder zu motivieren.

Um das besser zu verstehen, möchte ich dir eine fiktive Geschichte von einem desillusionierten Ingenieur erzählen, der seine Leidenschaft wiederentdecken konnte, und von seinem einfühlsamen Manager, der ihn motivieren konnte. Ich werde sie David und Sarah nennen.

David, der einst ein strahlender Softwareentwickler in einem Technologieunternehmen war, verlor langsam den Funken. Er war seit fünf Jahren dort und arbeitete an verschiedenen Projekten, aber die Projekte, an denen er arbeitete, fühlten sich immer banaler an. Er vermisste den Nervenkitzel, etwas Sinnvolles zu entwickeln, etwas, das nicht nur ein weiteres Rädchen im Getriebe eines Unternehmens war.

Seine Vorgesetzte, Sarah, bemerkte den Wandel in seiner Energie. David war nicht mehr der begeisterte Problemlöser, der er früher war. Bei ihrem regelmäßigen Einzelgespräch erkundigte sich Sarah vorsichtig nach seiner Motivation. "Ich habe das Gefühl, dass du dein Feuer verloren hast, David", sagte sie. "Können wir irgendetwas tun, um dir zu helfen, deine Leidenschaft wiederzufinden?

David zögerte. Er war sich nicht sicher, wie er seine wachsende Unzufriedenheit ausdrücken sollte. Doch Sarahs aufrichtige Sorge veranlasste ihn, sich zu öffnen. Er erzählte von seiner Sehnsucht nach einer sinnvollen Arbeit und seinem Wunsch, etwas zu schaffen, das mehr bewirkt als eine weitere gewinnorientierte Anwendung.

Sarah hörte aufmerksam zu und nickte verständnisvoll. Sie wusste, dass David ein wertvoller Mitarbeiter war, und sie wollte ihm helfen, seine Leidenschaft neu zu entfachen. Sie schlug vor, innerhalb des Unternehmens nach Möglichkeiten zu suchen, die seinen Interessen entsprachen, und vielleicht sein Fachwissen für interne Projekte mit sozialer Zielsetzung zur Verfügung zu stellen. Mit Sarahs Unterstützung begann David, verschiedene Möglichkeiten auszuloten. Schließlich kam er in ein Team, das Software für ein Projekt für erneuerbare Energien entwickelte, und seine Leidenschaft kam zurück.

Er arbeitete unermüdlich, nicht um Anerkennung oder Prämien zu bekommen, sondern weil es sich für ihn lohnte, einen Beitrag zu einer Sache zu leisten, an die er glaubte. Er war motiviert durch das Ziel und die unmittelbare Wirkung seiner Arbeit, weil er wusste, dass sein Code dazu beiträgt, eine sauberere Zukunft zu schaffen.

Sarah zeigte in diesem Fall gute Führungsqualitäten. Sie verstand, wie Motivation die Leistung steigert und nutzte sie, um ihr Team zu stärken. Sie zeigte Einfühlungsvermögen und arbeitete mit ihren Beschäftigten und ihren Führungskollegen zusammen, um eine Win-Win-Situation für alle zu schaffen.

Du siehst, wenn jemand motiviert ist, ist er von Natur aus dazu angetrieben, hochwertige Ergebnisse zu liefern, und wird mit größerer Wahrscheinlichkeit effektiv sein. Wenn du ein effektives Team aufbauen willst, musst du herausfinden, wie du die drei Elemente, die motivieren und die Leistung steigern - Autonomie, Beherrschung und Zielstrebigkeit - in jedem Schritt des Teambildungsprozesses aktivieren kannst. Zum Beispiel:

  • Lass die Teammitglieder die Entwicklung der einzelnen Module leiten, damit sie Autonomie und ein Gefühl der Verantwortung entwickeln können.

  • Hilf den Teammitgliedern, Zugang zu den neuesten Tools zu bekommen, die ihnen helfen, die Technologie, an der sie arbeiten, produktiv zu beherrschen.

  • Erkläre, wie sich deine Beiträge direkt auf die Ziele der Organisation auswirken, damit sie einen sinnvollen Zweck haben.

Ein effektives Team aufbauen

Wie bereits erwähnt, haben effektive Teams bestimmte Qualitäten oder Dynamiken, die es ihnen ermöglichen, effektiv zu sein. Ihre Leistung wird auch durch ihre Motivation bestimmt. Schauen wir uns nun an, wie wir dieses Wissen in der Praxis nutzen können, um diese Faktoren und Motivationen in ein effektives Team einzubauen. Unabhängig davon, ob du mit einem bestehenden Team arbeitest, neue Teammitglieder einstellst oder eine Mischung aus beidem machst, erfordert eine effektive Teambildung in der Regel, dass du Folgendes tust:

  1. Versammle die richtigen Leute.

  2. Fördern Sie das Gefühl von Teamgeist.

  3. Wirksam führen.

  4. Effektivität aufrechterhalten (eine Wachstumskultur).

Die in diesem Abschnitt beschriebenen Schritte basieren auf den Forschungsergebnissen zu den wichtigsten Faktoren für die Teameffektivität, die weiter oben im Kapitel erläutert wurden.

Lass uns jeden dieser Schritte im Detail betrachten.

Versammle die richtigen Leute

Ein modernes Team für Softwareentwicklung muss so zusammengesetzt sein, dass es effektiv arbeiten kann. Das bedeutet, dass es über die richtige Anzahl von Personen mit relevanten Fähigkeiten, einer gemeinsamen technischen Denkweise und unterschiedlichen Hintergründen und Erfahrungen verfügt, die effektiv zusammenarbeiten können, um ihr gemeinsames Ziel zu erreichen. Wie die Forschung zu Teamgröße und Vielfalt gezeigt hat, kann die Zusammensetzung eines Softwareteams einen großen Einfluss auf seine Effektivität haben.

Wenn du mit einem bestehenden Team an einem laufenden Projekt arbeitest, bewerte deine aktuelle Teamstruktur und die Sammlung von Fähigkeiten und Hintergründen. Vielleicht möchtest du nach der Lektüre dieses Abschnitts einige Dinge anpassen, um die Effektivität des Teams zu verbessern. Wenn du ein neues Team für ein Projekt zusammenstellst, solltest du von Anfang an darauf achten, dass die Größe, die Einstellung und die Vielfalt stimmen. Das solltest du auch bedenken, wenn du neue Teammitglieder zu einem bestehenden Projekt hinzufügst.

Obwohl die ideale Teamgröße und -zusammensetzung von Faktoren wie Branche, Unternehmensgröße und Produktkomplexität abhängt, liefert die Forschung einige allgemeine Richtlinien. Eine Studie ergab, dass die optimale Teamgröße für Softwareprojekte zwischen drei und fünf Mitgliedern liegt. Teams, die in großen Unternehmen an hochkomplexen Projekten arbeiten, müssen jedoch möglicherweise größer sein, während Start-ups oder Teams, die an kleineren Projekten arbeiten, auch mit weniger Mitgliedern erfolgreich sein können.

Einstellungen und Vorstellungsgespräche für Effektivität

Wenn du ein neues Team aufbaust oder ein bestehendes Team erweiterst, ist es wichtig, die Bewerber/innen nicht nur nach ihren technischen Fähigkeiten zu beurteilen, sondern auch nach den wichtigsten Denkweisen und Eigenschaften, die zur Effektivität des Teams beitragen. Stelle in Vorstellungsgesprächen Fragen, die auf die bereits erwähnten technischen Denkweisen abzielen, z. B. dass du dich um die Benutzer kümmerst, ein guter Problemlöser bist und offen für Lernen und Wachstum bist. Stelle den Bewerbern Szenarien vor, die ihre Herangehensweise an Herausforderungen wie die Festlegung von Prioritäten und das Abwägen von Kompromissen testen.

Um ein vielfältiges Team aufzubauen, musst du bei der Rekrutierung ein weites Netz auswerfen und dir über mögliche Vorurteile in deinem Einstellungsverfahren bewusst sein. Setze dir Ziele in Bezug auf die Vielfalt und überprüfe regelmäßig deinen Personalbestand und deine Einstellungsentscheidungen, um Bereiche mit Verbesserungspotenzial zu identifizieren. Kommuniziere während des gesamten Einstellungsprozesses die Kultur und die Werte deines Teams, damit die Bewerber/innen sich selbst aussuchen können, ob sie zu dir passen. Der Einstellungsprozess ist eine zweiseitige Angelegenheit, und du möchtest Teammitglieder, die sich mit der Arbeitsweise deines Teams identifizieren.

Größe

Die Zusammensetzung eines Softwareentwicklungsteams kann je nach Komplexität des Projekts und der angewandten Entwicklungsmethodik variieren. Neben Softwareingenieuren und -entwicklern können auch Projektmanager, Produktmanager, Qualitätsingenieure, technische Architekten, Teamleiter, UI/UX-Spezialisten usw. dazugehören. Jedes Mitglied hat eine bestimmte Aufgabe zu erfüllen, und moderne Softwareentwicklungsteams können unterschiedlich groß sein, von kleinen 2-Personen-Teams bis hin zu großen Teams mit über 10 Personen.

Es ist wichtig, die richtige Größe deines Teams für jedes Projekt zu bestimmen. Dieselbe Gruppe von Leuten, die bei einem großen Projekt sehr gut zusammengearbeitet hat, kann bei einem kleinen Projekt ins Straucheln geraten. Nimm diese fiktive Geschichte über ein Startup - ich werde sie Code Crusaders nennen. Sie hatten eine starke erste Version ihres Produkts geliefert und waren voller Tatendrang. Doch ihr anfänglicher Erfolg verflüchtigte sich bald, als die Größe ihres Teams über ein überschaubares Maß hinaus wuchs.

Mit 30 Entwicklern, die an vier verschiedenen Versionen desselben Produkts arbeiteten, wurde die Kommunikation zu einem Wirrwarr aus Meetings, E-Mails und widersprüchlichen Prioritäten. Fristen wurden verpasst, Projekte stagnierten und die Frustration wuchs. Das einst zusammenhaltende Team zersplitterte in isolierte Gruppen, die jeweils an ihrem eigenen Teil des Puzzles arbeiteten, ohne eine klare Vision des Ganzen zu haben. Die Entscheidungsfindung wurde quälend langsam und wurde durch endlose Debatten und widersprüchliche Meinungen verzögert. Die Freude an der Zusammenarbeit wurde durch das Gefühl ersetzt, in einem bürokratischen Labyrinth verloren zu sein.

Trotz individueller Talente wurde die Effektivität des Code Crusaders-Teams durch seine wachsende Größe beeinträchtigt. Sie waren ein Opfer ihres eigenen Erfolgs, ein Beweis dafür, dass größer nicht immer besser ist.

Die ideale Größe deines Teams für die Softwareentwicklung hängt von verschiedenen Faktoren ab, darunter das Projekt, das Produkt, die Unternehmenskultur und die Teamdynamik. Stelle dir die folgenden Fragen:

Produkt

Welche Ressourcen brauche ich, um mein Produkt zu entwickeln? Die Teamgröße sollte die Ressourcen widerspiegeln, die für ein Produkt benötigt werden. Eine App, die regelmäßig aktualisiert werden muss und viele Nutzer hat, erfordert mehr Ressourcen als ein internes Tool, das nur von einer Person genutzt wird.

Komplexität

Ist mein Produkt einfach und leicht zu entwickeln oder kompliziert und knifflig? Für ein einfaches Produkt, wie z.B. einen Chat-Client, werden weniger Ingenieure benötigt als für etwas Komplexeres, wie z.B. Algorithmen für maschinelles Lernen oder KI-Systeme.

Unternehmenskultur

Wie viel Autonomie hat jedes Mitglied innerhalb seiner Rolle oder seines Teams? Manche Organisationen bevorzugen mehrere kleine Gruppen und fördern die Zusammenarbeit zwischen ihnen. Andere bevorzugen eine kleine Anzahl von größeren Gruppen, die unabhängig voneinander arbeiten.

Führungsstil

Fördert das Unternehmen eine offene Kommunikation zwischen allen Beteiligten, damit sie wissen, wie ihre Beiträge zu den übergeordneten Zielen passen? Oder liegt der Schwerpunkt eher auf einer Top-Down-Entscheidungsfindung, bei der die Führungskräfte alle wichtigen Entscheidungen treffen, ohne dass die geografisch/organisatorisch nächstgelegenen Mitarbeiter/innen einbezogen werden?

Sobald du die Antworten auf diese Fragen kennst, kannst du sie mit dem abgleichen, was du derzeit hast oder was du dir für dein neues Team wünschst. Dann kannst du entscheiden, ob:

  • Du brauchst zusätzliche Ingenieure oder Ingenieure mit anderen Fähigkeiten.

  • Die vorhandenen Ingenieure in deinem Team müssen umgeschult werden.

  • Ob einige Module ausgelagert werden müssen oder ob sie alle intern entwickelt werden können.

Gemeinsame Denkweise der Ingenieure

Um ein effektives Team für Softwareentwicklung zu haben, wäre es ideal, wenn jedes Mitglied die richtige Einstellung hätte. Wenn ich von der richtigen Einstellung spreche, meine ich damit die Wertschätzung der fünf von Project Aristotle identifizierten Dynamiken (psychologische Sicherheit, Zuverlässigkeit, Struktur und Klarheit, Bedeutung und Wirkung) und die Motivation für intrinsische Belohnungen. Diese Einstellung ist der Kitt, der eine Gruppe von Softwareentwicklern zusammenhält und sie zu einem effektiven Team macht.

Softwareentwickler/innen haben ein klares übergeordnetes Ziel: Software zu entwickeln, die Probleme löst, für deren Lösung die Kunden bezahlen würden. Ingenieure müssen darüber nachdenken, was am wichtigsten ist und welche Auswirkungen ihre Software haben wird. Oft geht es darum, den Nutzern und dem Unternehmen den besten Nutzen zu bieten und sich in der verfügbaren Zeit selbst weiterzuentwickeln. Als Teil eines Teams arbeiten Ingenieure und Ingenieurinnen bei der Entwicklung von Software synergetisch zusammen. Eine gemeinsame technische Denkweise erleichtert den Weg zu Synergie und Effektivität.

In diesem Abschnitt gehe ich auf die Eigenschaften ein, auf die du bei Softwareentwicklern achten solltest, um ein effektives Team aufzubauen oder zu verbessern. Denke daran, dass nicht jeder in gleichem Maße über alles gleich denkt oder in allen Eigenschaften überragend ist, und das ist in Ordnung. Es geht darum, eine gesunde Kultur mit den Merkmalen effektiver Teams zu schaffen. Wenn du jedoch ein vielfältiges Team pflegst, kannst du ein harmonisches Gleichgewicht erreichen, so dass die Ingenieure ihre Kollegen im Team beobachten und von ihnen lernen können.

Wenn du also ein neues Team aufbaust, solltest du Ingenieure einstellen, die bereits die meisten der folgenden Eigenschaften aufweisen. Wenn du ein bestehendes Team verstärkst, ermutige und hilf deinem Team, diese Eigenschaften weiterzuentwickeln.

Kümmert sich um den Nutzer.

Wenn du ein neues Team aufbaust oder dein bestehendes Team verstärkst, brauchst du Ingenieure, die sich um die Nutzer kümmern. Ein guter Softwareentwickler muss verstehen, dass die Bedürfnisse der Nutzer/innen wichtiger sind als die Verwendung einer bestimmten Technologie oder eines bestimmten Frameworks. Ein guter Softwareentwickler berücksichtigt folgende Punkte:

Der Problembereich

Was will der Nutzer mit dem Produkt erreichen?

Der geschäftliche Kontext

Welchen Geschäftszweck unterstützt das Produkt?

Die geschäftlichen Prioritäten

Welche Produkteigenschaften sind für das Unternehmen in dem betreffenden Zeitraum (Quartal oder Jahr) wichtiger?

Die Technologie

Welche Technologien gibt es, und welche davon eignen sich am besten für das Produkt?

Wenn du dir diese Fragen stellst, kann ein guter Softwareentwickler zu einem hochwertigen Produkt beitragen, das die Bedürfnisse der Nutzer erfüllt. Wenn er nicht darüber nachdenkt, wie die Menschen das Produkt oder die Dienstleistung nutzen werden, ist es wahrscheinlich, dass das Produkt im Leben der Menschen nicht hilfreich sein wird.

Das mag zwar offensichtlich klingen, aber ich habe schon Entwickler erlebt, die sich in den Details des Codes verfangen haben, ohne zu überlegen, warum sie das überhaupt tun. Das kann sie von ihren eigentlichen Zielen ablenken. Sich auf kleine Aufgaben zu konzentrieren, anstatt zu wichtigen Ergebnissen beizutragen, wie z. B. echte Probleme zu lösen oder sinnvolle Nutzererfahrungen zu schaffen, kann Ingenieure davon abhalten, ihre beste Arbeit zu leisten.

Wenn du ein bestehendes Team verstärkst, entwickle diese Einstellung bei deinen Teammitgliedern, indem du sie zu Folgendem ermutigst:

Benutzerinteraktion

Auch wenn eine direkte Interaktion mit den Nutzern für jeden Ingenieur nicht möglich ist, kannst du den Ingenieuren die Möglichkeit geben, Supportingenieure zu beschatten oder an Usability-Tests teilzunehmen, um sich mit einigen alltäglichen Problemen vertraut zu machen, die den Nutzern begegnen können.

Workshops zur Nutzerforschung

Ermutige Ingenieure, an Workshops teilzunehmen, die sich auf Aktivitäten wie Nutzerinterviews oder Journey Mapping konzentrieren. Das kann ihnen helfen, Empathie für die Bedürfnisse und Perspektiven der Nutzer zu entwickeln.

Ist ein guter Problemlöser.

In einer Rede zur Eröffnungsfeier 2017 sagte Dr. Neil deGrasse Tyson: "Wenn du weißt, wie du denken kannst, bist du weit mehr befähigt als diejenigen, die nur wissen, was sie denken sollen." Dieses Prinzip kannst du auf dein Entwicklungsteam anwenden, denn bei der Entwicklung von Software geht es nicht nur darum, etablierte Prozesse zu befolgen oder zu wissen, was man denken muss.

In der gleichen Rede erzählte Dr. Tyson von einem Interview-Szenario, in dem zwei Kandidaten nach der Höhe der Spitze eines Gebäudes gefragt werden. Der erste Kandidat gibt schnell die richtige Antwort, weil er sich die Informationen gemerkt hat. Der zweite Kandidat gibt jedoch zu, die Antwort zunächst nicht zu kennen, zeigt aber Einfallsreichtum, indem er die Schatten misst, um eine fundierte Schätzung vorzunehmen. Der zweite Kandidat beweist in diesem Fall die Fähigkeit, kreativ zu denken und sich der Situation anzupassen, um ein Problem zu lösen.

Effektive Ingenieure müssen gut darin sein, Probleme praktisch zu lösen. Oft sind die besten Lösungen einfach und elegant. Aber dafür muss man vielleicht über den Tellerrand hinausschauen. Normalerweise kann ein Problem auf mehrere Arten gelöst werden - einige, die ordentlich (aber nicht übermäßig kompliziert) sind, und andere, die unkonventionell, aber trotzdem effektiv sind.

Zur Fähigkeit, Probleme zu lösen, gehört auch die Fähigkeit, vorgeschriebene Werkzeuge und Prozesse zu nutzen. Ein effektiver Ingenieur sollte in der Lage sein, Probleme innerhalb der Grenzen der aktuellen Technologie zu lösen, aber auch über den Tellerrand hinauszuschauen, wenn dies erforderlich ist. Er sollte auch alle Aspekte eines Problems gleichzeitig berücksichtigen.

Kann die Dinge einfach halten, legt aber Wert auf Qualität.

Manche Ingenieure schreiben übermäßig komplexe Lösungen für Anwendungsfälle, die nicht unbedingt existieren. Sie wollen zwar gründlich sein, aber die geringe Wahrscheinlichkeit, dass diese Szenarien eintreten, rechtfertigt vielleicht nicht den Aufwand, den sie betreiben. Effektive Ingenieurinnen und Ingenieure sollten das Kernproblem verstehen und wissen, wie sie es vernünftig lösen und dabei die Dinge einfach halten können. Außerdem müssen sie die Kompromisse zwischen Einfachheit und Leistung kennen.

Obwohl diese Eigenschaft täuschend einfach klingt, erfordert sie ständige Wachsamkeit, da es notwendig sein kann, Kompromisse zwischen verschiedenen Qualitätsdimensionen abzuwägen (z. B. Zugänglichkeit gegenüber Leistung). Wenn konkurrierende Prioritäten im Spiel sind, sollten Ingenieure in der Lage sein, fundierte Entscheidungen zu treffen, die auf ihrem Wissen über den Produktbereich und seine Nutzer/innen basieren.

Ermutige die Ingenieure, das Kernproblem und die spezifischen Anwendungsfälle klar zu definieren, bevor sie mit der Lösungsentwicklung beginnen. So vermeiden sie Over-Engineering und liefern einfache, aber hochwertige Lösungen.

Kann mit der Zeit Vertrauen aufbauen.

Effektive Ingenieurinnen und Ingenieure sollten wissen, wie wichtig es ist, vertrauenswürdig zu sein, d.h. dass man sich darauf verlassen kann, dass sie ihre Aufgaben wie erwartet erledigen. Vertrauen kann nicht von heute auf morgen aufgebaut werden, daher zeigt der Nachweis von Vertrauenswürdigkeit über einen längeren Zeitraum auch Verlässlichkeit und Beständigkeit. Dieses Verständnis von Vertrauen führt dazu, dass Ingenieur/innen über Autonomie und soziales Kapital verfügen:

Autonomie

Autonomie basiert auf Vertrauen. Jemandem wird Autonomie gewährt, wenn man darauf vertrauen kann, dass er seine Aufgaben verlässlich und konsequent erledigt. Wie bereits erwähnt, sind Teams mit einem hohen Maß an Autonomie in der Regel engagierter und motivierter. Autonome Arbeitnehmer/innen sind zufriedene Arbeitnehmer/innen - und zufriedene Arbeitnehmer/innen sind in der Regel produktiver als ihre Kollegen/innen, die keine Wahl haben, wie sie ihre Arbeit erledigen. Aber Autonomie bedeutet nicht, dass sie ihre Ressourcen oder ihre Macht missbrauchen können. Selbstmotivierte Ingenieurinnen und Ingenieure, die eine bestimmte Situation studieren können, um zu entscheiden, wie sie am besten damit umgehen, sind effektiver autonom. Autonomie bedeutet auch nicht, dass man weniger Fragen stellt. Engagierte Personen würden sich umgehend um eine Eingabeaufforderung bemühen, um sich selbst und die anstehende Aufgabe auf effektive Weise zu lösen.

Soziales Kapital

Du hast soziales Kapital, wenn du ein Netzwerk positiver Beziehungen zu anderen Menschen hast. Diese Beziehungen beruhen auf Zusammenarbeit und Vertrauen. Effektive Softwareentwickler/innen bauen Netzwerke mit positiven Beziehungen zu anderen Menschen auf. Diese Ingenieure sind geschickt darin, ihre Fähigkeiten mit anderen innerhalb und außerhalb ihres Teams zu teilen und Zusammenarbeit zu ermöglichen.

Ein erfolgreicher Softwareentwickler weiß, dass Vertrauen im Laufe der Zeit durch gegenseitigen Respekt und offene Kommunikation mit anderen Teammitgliedern aufgebaut wird. Er kann mit der ihm zugestandenen Autonomie gut umgehen und trotzdem effektiv an Projekten mitarbeiten, die Kreativität und technisches Geschick erfordern - und vielleicht sogar ein bisschen guten alten Spaß!

Du kannst deinen bestehenden Teammitgliedern helfen, diese Fähigkeiten zu entwickeln, indem du sie ermutigst, an Initiativen teilzunehmen, die über ihre Kernaufgaben hinausgehen und nicht nur ihr Fachwissen zeigen, sondern auch Beziehungen und Vertrauen zu Teammitgliedern mit unterschiedlichem Hintergrund fördern. Bei Chrome ermutige ich meine Teammitglieder häufig, im Chrome-Entwicklerblog über die neuen Funktionen zu schreiben, die sie entwickeln, oder sich in Tech Talks mit der Entwicklergemeinschaft auszutauschen. Diese kollaborative Erfahrung baut nicht nur ihr soziales Kapital auf, sondern gibt ihnen auch ein Gefühl der Autonomie, da sie die Verantwortung für ihre Beiträge übernehmen.

Verstehe die Teamstrategie.

Effektive Ingenieurinnen und Ingenieure sollten verstehen und in der Lage sein, zu kommunizieren, wie das Team seine Ziele erreichen wird und wie ihre Handlungen den Erfolg fördern oder behindern können. Sie sollten in der Lage sein, diese Fragen zu beantworten:

  • Was versuchen wir zu erreichen?

  • Wie wollen wir dorthin kommen?

  • Welche Rolle spiele ich beim Erreichen dieser Ziele?

  • Wie wird sich mein Handeln auf andere Teams oder Einzelpersonen auswirken, damit diese ihre Ziele erreichen?

Egal, ob du ein Vorstellungsgespräch mit einem neuen Mitarbeiter führst oder ein Einzelgespräch mit einem bestehenden Teammitglied führst, solltest du ihm Fragen stellen wie: "Welchen Beitrag leisten deine Fähigkeiten zu unseren Zielen?" oder "Welche möglichen Herausforderungen siehst du?"

Stell dir vor, du leitest ein Softwareentwicklungsteam, das die Aufgabe hat, die Ladezeiten von Anwendungen zu verkürzen, um das Nutzererlebnis zu verbessern. Als Manager könntest du die Strategie in einer Teambesprechung erläutern und dabei betonen, dass schnellere Ladezeiten entscheidend sind, um Nutzer/innen zu halten und zu gewinnen. Du könntest auch die konkreten Aufgaben der Teammitglieder besprechen, z. B. die Optimierung des Codes, die Verbesserung der Serverleistung oder die Durchführung von Tests zur Verbesserung der Benutzerfreundlichkeit. Diese Einbindung hilft den Teammitgliedern, ihre täglichen Aufgaben mit dem übergeordneten Ziel der Verbesserung der Benutzerfreundlichkeit zu verbinden. Es ist wahrscheinlicher, dass sie die Strategie des Teams verstehen und das Gefühl haben, ein Teil davon zu sein, was wiederum ihre Zielstrebigkeit steigert.

Du kannst angemessen Prioritäten setzen und selbstständig handeln.

Effektive Softwareentwickler/innen können angemessene Prioritäten setzen und selbstständig arbeiten. Softwareentwickler/innen müssen oft mit mehreren Prioritäten jonglieren, z. B. mit der technischen Schuld, der Liefergeschwindigkeit und der Qualität, während sie gleichzeitig die Geschäftsziele und letztendlich den Kunden im Auge behalten. Wenn sie mit Problemen konfrontiert werden, stürzen sie sich nicht in schnelle Lösungen. Stattdessen suchen sie nach der Ursache von Problemen und schlagen Lösungen vor, die diese Prioritäten effektiv ausgleichen.

Ein/e kompetente/r Softwareentwickler/in weiß auch, wann es angebracht ist, die Verantwortung für Aufgaben und Projekte zu übernehmen, ohne von seinem/ihrem direkten Vorgesetzten oder seiner/ihrer Führungskraft gesagt zu bekommen, was zu tun ist. Sie wissen, wann es sinnvoll ist, ihre Kolleginnen und Kollegen um Hilfe zu bitten, um diese Last zu tragen - und kommunizieren bei Bedarf effektiv mit anderen Teams.

Du kannst den Teammitgliedern helfen, Prioritäten für ihre Arbeit zu setzen, indem du ihnen die strategischen Prioritäten des Unternehmens und des Projekts klar mitteilst und sie durch regelmäßige Check-Ins und Zielvereinbarungssitzungen auf dem Laufenden hältst. Sorge immer dafür, dass die Ingenieure die notwendigen Ressourcen und Anleitungen haben, um ihre Aufgaben effektiv zu erfüllen.

Kann langfristig denken.

Langfristiges Denken ist eine wichtige Eigenschaft für einen erfolgreichen Softwareentwickler. Er muss das große Ganze sehen und verstehen, wie jede Produktkomponente in das Gesamtziel des Unternehmens oder in eine Reihe von Zielen passt.

Softwareentwickler/innen, die langfristig denken können, sind besser in der Lage zu verstehen, wie neue Technologien ihre Produkte in Zukunft beeinflussen werden. Sie verstehen auch besser, welche Art von Teamdynamik und -kultur ihre Entwicklungsarbeit beeinflussen wird. Sie entwerfen und entwickeln flexible Lösungen und antizipieren die Änderungen, die in Zukunft erforderlich sein könnten.

Wenn du ein bestehendes Team verbesserst, solltest du die Handlungen von vorausschauenden Teammitgliedern positiv anerkennen und andere Mitglieder ermutigen, dem Beispiel zu folgen. Ein einfaches Beispiel sind die Konventionen für die Benennung von Variablen im Code. Die Verwendung von Variablennamen wie x und y mag zwar schneller sein, verringert aber die Wartbarkeit des Codes für jemanden, der sich den Code in sechs Monaten ansieht. Ermutige dein Team, Code zu schreiben, der auch von anderen Entwicklern verstanden werden kann.

Kann Softwareprojekte in besserem Zustand verlassen (wenn es die Zeit erlaubt).

Wenn es die Zeit erlaubt, sollten Ingenieure, die bestehenden Code oder Projekte betreuen, bereit sein, ein Projekt in einem besseren Zustand zu verlassen, als sie es vorgefunden haben. Das bedeutet, den Code zu verbessern, dafür zu sorgen, dass die Dokumentation aktuell und korrekt ist, die Umgebung aufzuräumen, damit die nächste Person sie leichter übernehmen kann, die Prozesse und die Kultur des Teams im Laufe der Zeit zu verbessern und als professioneller Entwickler zu wachsen, indem man mehr über andere Sprachen/Technologien/Frameworks lernt, die relevant sind.

Sie sollten auch bedenken, wie sich ihre Arbeit auf ihre unmittelbaren Kollegen und alle anderen in der Organisation und Gemeinschaft auswirkt. Finde Personen in deinem Team, die vorschlagen, den umgebenden Code zu bereinigen, wenn sie an einem bestehenden Modul arbeiten. Bitte sie, den von anderen Ingenieuren geschriebenen Code zu überprüfen, damit sie den anderen als Mentor dienen können. Wenn du ein neues Teammitglied einstellst, bitte sie, Beispiele zu nennen, in denen sie die Qualität eines Projekts, an dem sie gearbeitet haben, verbessert haben.

Er nimmt gerne neue Herausforderungen an.

Ein effektiver Softwareentwickler nimmt gerne neue Herausforderungen an, wenn sich die Anforderungen des Unternehmens oder des Teams ändern. Das kann bedeuten, dass er ein neues Projekt oder zusätzliche Aufgaben wie Mentoring oder Reviews innerhalb desselben Projekts übernimmt.

So wie sich die Technologien weiterentwickeln, so verändern sich auch die Anforderungen an den Job. Flexibilität und die Fähigkeit, schnell zu lernen, stellen sicher, dass die Ingenieure sich bei Bedarf anpassen und mit dem Unternehmen wachsen können.

Wenn du ein bestehendes Team verstärkst, solltest du nach Teammitgliedern Ausschau halten, die schon lange an demselben Teil des Codes arbeiten, und ihnen neue Aufgaben oder Verantwortlichkeiten zuweisen, die das Wachstum fördern. Dieser Ansatz fördert nicht nur das Wachstum und das Engagement, sondern hilft den Ingenieuren auch, ihre Angst vor Veränderungen zu überwinden, sodass sie sich neuen Herausforderungen stellen können.

Wenn du Mitglieder für ein neues Team einstellst, solltest du Personen in Betracht ziehen, die über einige der erforderlichen technischen Fähigkeiten verfügen, aber auch offen dafür sind, neue Technologien oder Bereiche zu erforschen.

Du kannst effektiv kommunizieren.

Eine effektive Kommunikation innerhalb des Teams, mit anderen Teams und mit dem Kunden ist unerlässlich. Das bedeutet, dass Ingenieure in der Lage sein müssen, technische Informationen effektiv an Kollegen und das Management weiterzugeben. Diese Qualität ist wichtig, denn eine fehlerhafte Kommunikation kann zu Fehlern oder Problemen führen, die behoben werden müssen.

Bei der Kommunikation mit Kolleginnen und Kollegen sollten Ingenieurinnen und Ingenieure eine klare und prägnante Sprache verwenden. Außerdem sollten sie genau darauf achten, was ihre Kolleg/innen sagen, damit sie die Perspektiven und Anliegen ihrer Kolleg/innen verstehen.

Eine effektive Kommunikation mit anderen Interessengruppen, wie z.B. den Vertriebs- oder Marketingabteilungen, ist ebenfalls wichtig. Ein Softwareentwickler/eine Softwareentwicklerin sollte wissen, was sein/ihr Produkt macht, wie es funktioniert und warum es den Kunden und Nutzern nützt.

Bei der Kommunikation mit den Kunden sollten die Ingenieurinnen und Ingenieure eine einfache Sprache verwenden, damit die Kunden sie gut verstehen können, ohne von Fachjargon verwirrt zu werden. Sonst verlieren die Kunden sehr schnell das Interesse!

Um die Kommunikation in einem bestehenden Team zu verbessern, solltest du die Teammitglieder ermutigen, ihre Ideen offen zu teilen, Bedenken zu äußern, Fragen zu stellen, aktiv zuzuhören, sich an konstruktiven Diskussionen zu beteiligen und unterschiedliche Perspektiven zu schätzen. Erwäge auch, Workshops für diejenigen zu organisieren, die zusätzliche Hilfe bei ihren Kommunikationsfähigkeiten benötigen.

Wenn du neue Ingenieurinnen und Ingenieure einstellst, solltest du Bewerberinnen und Bewerber auswählen, die technische Konzepte klar und prägnant formulieren können. Beurteile ihre Fähigkeit, aktiv zuzuhören und überlegt zu antworten. Bewerber/innen, die ihren Kommunikationsstil an verschiedene Zielgruppen anpassen können und ein Verständnis für kulturelle Nuancen zeigen, können sich besser in bestehende Teams einfügen.

Vielfalt und Inklusion

Wenn du ein neues Team für Softwareentwicklung aufbaust oder ein bestehendes Team erweiterst, ist es wichtig, dass du Teammitglieder mit unterschiedlichen Fähigkeiten, Hintergründen und Erfahrungen hast. Dies kann sich auf Ethnie, Geschlecht, Alter, Bildungsstand und Berufserfahrung beziehen. Wenn du zum Beispiel eine Gruppe von Ingenieuren hast, die alle aus dem Unternehmensbereich kommen, solltest du dein Team durch jemanden ergänzen, der auch Erfahrung in der Entwicklung von Verbraucheranwendungen hat.

Wenn du ein vielfältiges Team zusammenstellst, kannst du ein breiteres Spektrum an Perspektiven und Erfahrungen nutzen, was zu besseren Problemlösungen und Innovationen führen kann.

Google Translate und andere Produkte zur Verarbeitung natürlicher Sprache sind ein Beweis dafür, wie die Vielfalt in einem Softwareteam zu einem erfolgreichen Produkt führt. Im Team von Google Translate haben Informatiker und Linguisten Hand in Hand gearbeitet. Die Linguisten im Team lieferten Einblicke in die Nuancen der verschiedenen Sprachen und wie sie effektiv übersetzt werden können. Gleichzeitig waren Informatiker und Ingenieure in der Lage, die Algorithmen und Technologien zu entwickeln, die für die Übersetzungsmaschine benötigt werden.

Ein vielfältiges Team zu haben, ist nicht genug. Der Aufbau vielfältiger Teams erfordert bewusste Anstrengungen, die Überwindung von Vorurteilen und die Bewältigung kultureller Unterschiede. Es wird zwangsläufig zu Reibereien kommen, und es ist eine Herausforderung, eine nahtlose Zusammenarbeit zwischen einer Gruppe von Menschen mit unterschiedlichen Persönlichkeiten zu ermöglichen. Doch mit Geduld, Verständnis und dem Willen zur Inklusion lassen sich die anfänglichen Reibungen überwinden und ein starker Zusammenhalt aufbauen. Ich hatte das Glück, dies aus erster Hand zu erfahren.

Es wäre hilfreich, wenn du auch eine Kultur der Inklusion schaffen würdest.

Bei Google haben wir zum Beispiel ein neues Team gegründet, um ein neues Entwicklerprodukt zu entwickeln. Die Vielfalt war deutlich spürbar. Die Mitglieder stammten aus vier Kontinenten und reichten von frischgebackenen Hochschulabsolventen bis hin zu Veteranen mit mehr als einem Jahrzehnt an Erfahrung.

Die ersten Treffen glichen jedoch eher einem Monolog als einem Dialog. Die jüngeren Mitglieder, die zwar klug, aber noch unerfahren waren, zögerten, ihre Ideen einzubringen, und wurden oft von den erfahreneren Stimmen in den Schatten gestellt. Regelmäßig hörte ich Kommentare wie: "Ich bin mir nicht sicher, ob das, was ich beizutragen habe, im Vergleich zu dem, was die älteren Ingenieure zu sagen haben, von Bedeutung sein wird." Ich musste planen, um diese Herausforderungen zu meistern.

Mein erster Schritt war es, ein Umfeld zu schaffen, in dem jede Meinung gleich viel wert ist. Ich initiierte Gesprächsrunden, in denen jedes Mitglied, unabhängig von seinem Rang oder seiner Amtszeit, ungestört seine Gedanken äußern konnte. Das ermutigte nicht nur die jüngeren Mitglieder, ihre Meinung zu sagen, sondern half auch den älteren Mitgliedern, aktiv zuzuhören.

Zweitens spielte das Anerkennen und Annehmen unserer kulturellen Unterschiede eine entscheidende Rolle. Ich begann, alle zwei Wochen virtuelle Treffen zum "kulturellen Austausch" zu veranstalten. Die Teammitglieder erzählten etwas Einzigartiges über ihre Kultur - sei es eine lokale Tradition, ein Fest oder sogar eine für ihre Region typische Programmierpraxis. Das brach nicht nur das Eis, sondern schuf auch einen Teppich aus kulturellem Bewusstsein und gegenseitigem Respekt.

Drittens habe ich psychologische Sicherheit durch offene Foren gefördert. Psychologische Sicherheit sprießt nicht über Nacht. Sie ist ein Garten, der ständig gepflegt werden muss. Zu diesem Zweck habe ich ein Forum "Ideen und Bedenken" eingerichtet. Hier konnten die Teammitglieder anonym ihre Ideen oder Bedenken posten. Jede Woche sprachen wir diese in unseren Teamsitzungen an, um sicherzustellen, dass jede noch so leise Stimme gehört und berücksichtigt wurde. Diese Praxis ermutigte selbst die introvertiertesten Teammitglieder, ihre innovativen Ideen mitzuteilen, ohne Angst vor einem Urteil haben zu müssen.

Um den Erfahrungsunterschied weiter zu überbrücken, habe ich jüngere Mitglieder mit älteren Mentoren zusammengebracht. Diese Mentorenbeziehungen gingen über die reine fachliche Anleitung hinaus. Es ging auch darum, sich mit der Dynamik am Arbeitsplatz zurechtzufinden, ungeschriebene Branchennormen zu verstehen und Soft Skills zu entwickeln, die für das berufliche Fortkommen entscheidend sind.

Diese Strategien veränderten unsere Teamdynamik. Die einst zögerlichen jüngeren Mitglieder begannen, Ideen einzubringen, die unkonventionell und manchmal entscheidend für die Lösung komplexer Probleme waren. Die älteren Mitglieder wiederum fanden neue Perspektiven und erneuerten ihren Enthusiasmus beim Mentoring. Unser Projekt hielt nicht nur die Fristen ein, sondern die nachfolgenden Veröffentlichungen verliefen sogar noch reibungsloser.

Die wichtigste Lektion, die ich auf dieser Reise gelernt habe, ist, dass es bei der Führung in der Tech-Branche nicht nur darum geht, Projekte zu managen, sondern auch darum, ein Ökosystem zu schaffen, in dem unterschiedliche Talente zusammenkommen, wachsen und etwas Außergewöhnliches schaffen können. Das bedeutet, ein Umfeld zu schaffen, in dem sich alle Teammitglieder wertgeschätzt und respektiert fühlen, unabhängig von ihrer Herkunft oder Identität. Einige Strategien zur Schaffung einer Kultur der Inklusion sind:

  • Schulungen zu Vielfalt und Inklusion für alle Teammitglieder anbieten, um ihnen zu helfen, unterschiedliche Hintergründe und Praktiken zu verstehen

  • Ermutigung zu offener Kommunikation und Feedback

  • Sicherstellen, dass alle Teammitglieder die gleichen Chancen auf Wachstum und Entwicklung haben

  • Flexible Arbeitsregelungen, um unterschiedlichen Bedürfnissen und Lebensstilen gerecht zu werden

Zusammenfassend lässt sich sagen, dass ein effektives Team für Softwareentwicklung drei wichtige Dinge braucht: die richtige Anzahl von Mitarbeitern, Teammitglieder, die die richtige Einstellung haben, um sowohl allein als auch im Team effektiv zu sein, und Menschen mit unterschiedlichen Fähigkeiten und Hintergründen. Diese Faktoren zusammen helfen dir, eine Grundlage für effektive Teamarbeit und Erfolg zu schaffen .

Förderung des Teamgeistes

Wenn du dein Team zusammengestellt hast, ist der nächste Schritt zum Aufbau eines effektiven Teams die Förderung des Teamgeistes. Eine Gruppe von Menschen hat Teamgeist, wenn sie sich für das Erreichen des gemeinsamen Ziels einsetzen und sich gegenseitig unterstützen. Es geht um mehr als nur darum, miteinander auszukommen oder hilfreich zu sein. Wie bereits erwähnt, ist ein Team per Definition durch gemeinsame Aufgaben und Ziele verbunden. Die Mitglieder arbeiten zusammen und übernehmen gegenseitig Verantwortung, um Probleme zu lösen und gemeinsame Ziele zu erreichen. Bei Teamgeist arbeiten die Mitglieder harmonisch zusammen, sind aber auch bereit, sich gegenseitig bei der Erfüllung von Aufgaben zu helfen. Eine Gruppe, die harmonisch zusammenarbeitet, kann in kürzerer Zeit mehr Ergebnisse erzielen als eine, die das nicht tut.

Bei der Förderung des Teamgeistes geht es darum, die in der Project Aristotle-Studie ermittelten Schlüsselfaktoren psychologische Sicherheit und Verlässlichkeit aufzubauen.

Du kannst den Teamgeist fördern, indem du ein Umfeld für Zusammenarbeit und Kommunikation schaffst. Die Grundlage dafür ist die Definition von Rollen und Verantwortlichkeiten, die Festlegung eines gemeinsamen Ziels und die Förderung des Vertrauens zwischen den Mitgliedern.

Definiere Rollen und Verantwortlichkeiten

Die Festlegung von Rollen und Zuständigkeiten innerhalb eines Teams ist ein grundlegender Schritt zur effektiven Zusammenarbeit. Dabei geht es nicht nur um die Zuweisung von Aufgaben, sondern auch darum, dass jedes Teammitglied seine spezifischen Aufgaben versteht. Das wiederum minimiert Verwirrung, das Risiko von Überschneidungen und übermäßige Frustration.

Software-Rollen haben je nach Kontext einige sich überschneidende Zuständigkeiten. Zum Beispiel kann es eine Herausforderung sein, die Zuständigkeiten für verschiedene Arten von Dokumentation wie Anforderungsspezifikationen, Testfälle, Benutzerhandbücher, API-Dokumentation usw. festzulegen.

Mein Freund Alex wurde einmal mit der Leitung eines Projekts betraut, bei dem die Entwickler zwar effizient Code produzierten, es aber vermieden, die Entwurfsdokumente zu aktualisieren. Auch die Tester hatten oft Mühe, die Anforderungen zu entziffern, die in Zusammenarbeit zwischen den Business Analysten und den technischen Redakteuren entstanden waren. Währenddessen waren die technischen Redakteure selbst mit internen Aufgaben überfordert und hatten nicht genug Zeit für das Benutzerhandbuch. Das Projekt stand auf der Kippe, und obwohl der Code voll funktionsfähig war, waren die Benutzer unzufrieden.

Alex kannte das Problem: falsch zugeordnete Verantwortlichkeiten. Er führte die Eigenverantwortung ein. Die Entwickler, die mit klaren Erwartungen ausgestattet waren, verfassten ihre eigenen Dokumente und Unit-Testfälle. Die Business-Analysten arbeiteten mit den Produktverantwortlichen zusammen, um klare Anforderungen zu definieren. Die Prüfer, die über solide Anforderungen verfügten, konzentrierten sich auf die Erstellung klarer Testpläne und das Auffinden von Problemen. Die technischen Redakteure, die von internen Belastungen befreit waren, konzentrierten sich auf die Erstellung von benutzerfreundlichen Anleitungen.

Der Wandel war subtil, aber wirkungsvoll. Zusammenarbeit ersetzte Schuldzuweisungen. Die einst gefürchtete Testphase wurde nun als Gelegenheit zur Zusammenarbeit und zur Verbesserung des Produkts genutzt. Die Benutzerhandbücher erwiesen sich als informativ und intuitiv. Alex hatte erfolgreich gezeigt, wie wichtig Eigenverantwortung und Rollenklarheit sind.

Eine klare Rollenverteilung kann dazu beitragen, ein Gefühl von Teamgeist und Einigkeit zu fördern, wenn du die Verantwortlichkeiten mit den individuellen Stärken und Fähigkeiten abstimmst. Du musst auch die gegenseitige Abhängigkeit der Beiträge der Teammitglieder hervorheben und den kollaborativen Aspekt ihrer Arbeit betonen. Dieser Ansatz steigert nicht nur die Effizienz, sondern fördert auch eine Kultur der gegenseitigen Unterstützung und des gemeinsamen Erfolgs.

Außerdem sollte die Rollendefinition die Entwicklung von Fähigkeiten und die Anpassung an den Projektfortschritt ermöglichen. Es ist wichtig, die Beiträge jedes einzelnen Teammitglieds anzuerkennen und zu würdigen, um ihren Wert innerhalb des Teams zu stärken. Indem du die Rollen und Zuständigkeiten regelmäßig überprüfst und anpasst, kannst du sicherstellen, dass sie mit den sich entwickelnden Bedürfnissen und der individuellen Entwicklung in Einklang stehen. Auf diese Weise wird die Festlegung von Rollen und Zuständigkeiten zu einem dynamischen Prozess, der nicht nur Klarheit schafft, sondern auch den Teamgeist fördert und die Effektivität maximiert.

Ein gemeinsames Ziel etablieren

Ähnlich wie ein gemeinsames Ziel treibt auch ein gemeinsamer Zweck das Team dazu an, zusammenzuarbeiten und seine Differenzen zu überwinden. Während Ziele dabei helfen, zu vermitteln, was das Team erreichen soll, sagt der Zweck aus, warum es diese Ziele erreichen muss. Ich habe schon viele Teams in der Softwareentwicklung erlebt, die mit konkurrierenden Prioritäten zu kämpfen hatten: Architekten konzentrierten sich auf Skalierbarkeit und Leistung, Entwickler auf Fristen und Code-Effizienz, Tester auf die Identifizierung von Kanten-Problemen und Designer auf Ästhetik und Erlebnis. Obwohl jeder dieser Aspekte wichtig ist, brauchen die Teams ein gemeinsames Ziel, um sich darauf zu einigen, welche Prioritäten sie setzen wollen, um das beste Gesamtprodukt zu schaffen. Zwar ist es wichtig, sich auf all diese Aspekte zu konzentrieren, um ein gutes Produkt zu schaffen, aber es braucht ein gemeinsames Ziel, um die Prioritäten zu verstehen.

Ohne ein gemeinsames Ziel, das Ehrgeiz, Qualität, Benutzerfreundlichkeit und Design in Einklang bringt, stehen diese Teams vor Herausforderungen wie technischen Schulden, schleichendem Umfang, Benutzerfreundlichkeitsproblemen und internen Konflikten.

Eine Führungskraft, die ein gemeinsames Ziel festlegt, ist in der Lage, all die verschiedenen Energien zu kanalisieren, um eine Plattform zu schaffen, die sowohl innovativ als auch benutzerfreundlich ist und mit Qualität und Effizienz geliefert wird.

Um ein gemeinsames Ziel zu erreichen, kannst du Folgendes tun:

Kommuniziere den allgemeinen Zweck und die Ziele des Projekts

Formuliere klar und deutlich den Zweck des Projekts, die Zielgruppe und die gewünschte Wirkung. Teile User Personas, Mock-ups oder Konkurrenzanalysen, um ein greifbares Bild des "Was" und "Warum" zu schaffen. So entsteht ein Nordstern für die einzelnen Beiträge.

Ermutige die Teammitglieder, ihre Ideen und ihr Feedback zu teilen

Organisiere Brainstorming-Sitzungen, Workshops und regelmäßige Check-Ins, bei denen Entwickler, Tester, Designer und Architekten ihr Wissen und ihre Bedenken frei austauschen können. Dies fördert ein kollaboratives Umfeld und bringt verschiedene Perspektiven zum Vorschein, die die gemeinsame Vision bereichern.

Sicherstellen, dass alle Teammitglieder verstehen, wie ihre Arbeit in die Arbeit ihrer Teamkollegen und in die größeren Projektziele passt

Verknüpfe einzelne Aufgaben mit bestimmten Funktionen und User Stories und zeige auf, wie sich der Beitrag jedes Teammitglieds auf die Gesamtfunktionalität des Produkts und das Nutzererlebnis auswirkt. Das schafft ein Gefühl der gemeinsamen Verantwortung und stärkt die Mentalität des "Wir sitzen im selben Boot".

Du kannst diese Ziele durch regelmäßige Wissensaustausch-Sitzungen oder Team-Bonding-Übungen innerhalb oder außerhalb des Büros erreichen. Diese Aktivitäten bieten den Teammitgliedern die Möglichkeit, zusammenzukommen, Ideen auszutauschen und Beziehungen über ihre unmittelbaren Aufgaben hinaus zu knüpfen. Das fördert das Zugehörigkeitsgefühl und stärkt das gemeinsame Ziel, indem es alle daran erinnert, dass sie Teil einer gemeinsamen Anstrengung sind, die ein gemeinsames Ziel verfolgt. Als Bonus können diese Sitzungen auch neue Perspektiven und innovative Lösungen hervorbringen. Wenn du diese Schritte unternimmst, erhöhst du die Chancen, ein Produkt zu entwickeln, das die Bedürfnisse der Nutzer/innen erfüllt und gleichzeitig die Ziele des Teams erreicht.

Vertrauen zwischen den Teammitgliedern fördern

Ein wesentlicher Bestandteil der Förderung des Teamgeistes ist der Aufbau von Vertrauen zwischen den Teammitgliedern. Um das besser zu verstehen, stell dir vor, es gibt zwei Teams; nennen wir sie Team Open-Door und Team Silos.

Das Team Open-Door ist bekannt für seinen kooperativen Geist und seine offene Kommunikation. Geteiltes Wissen und eine Kultur, in der man um Hilfe bittet, ohne zu urteilen, führt dazu, dass Probleme in diesem Team schneller gelöst werden. Das Vertrauen in die Kolleginnen und Kollegen, das Richtige zu tun, reduziert den Stresspegel und stärkt die Moral. Offene Diskussionen führen zu unterschiedlichen Sichtweisen, was wiederum zu innovativen Ansätzen und unerwarteten Funktionen führt. Dieses Team zieht Top-Talente und Auszeichnungen von Kunden an und wird von der Geschäftsleitung mit der Durchführung wichtiger Projekte betraut.

Team-Silos hingegen bestehen aus hochqualifizierten, aber isolierten Entwicklern, die jeweils an ihren eigenen Modulen arbeiten und nur wenig miteinander kommunizieren. Fehlkommunikation und Nacharbeit aufgrund von widersprüchlichem Code und sich überschneidenden Funktionalitäten bremsen sie häufig aus. Eine "Nicht mein Problem"-Haltung verzögert die Lösung von Problemen zusätzlich. Frustration und Unmut entstehen in einer Umgebung, in der Schuldzuweisungen üblich sind. Der Mangel an Vertrauen behindert die Zusammenarbeit und führt zu unzureichenden Ergebnissen.

Insgesamt ist Vertrauen in einem Team für Softwareentwicklung nicht nur ein Wohlfühlfaktor, sondern ein wichtiger Erfolgsfaktor. Offene Kommunikation, gemeinsames Wissen und eine Kultur der Zusammenarbeit können aus einem Team von Einzelpersonen eine geschlossene Einheit machen, die hervorragende Ergebnisse erzielt. Vertrauen kann auch dazu beitragen, die Work-Life-Balance der einzelnen Teammitglieder zu verbessern. Wenn du darauf vertraust, dass andere Teammitglieder für dich einspringen, kannst du kurze Arbeitspausen einlegen und dich entspannt fühlen.

Um das Vertrauen innerhalb deines Teams zu fördern, kannst du:

  • Ermutige zu offener Kommunikation und Feedback.

  • Biete den Teammitgliedern die Möglichkeit, sich auf einer persönlichen Ebene kennenzulernen.

  • Sei transparent, was die Projektziele und den Zeitplan angeht.

  • Belohne Teamarbeit und Zusammenarbeit.

Wenn du gemeinsam mit anderen Teammitgliedern, denen du vertraust, auf ein gemeinsames Ziel hinarbeitest, trägt das viel dazu bei, das Team zusammenzuschweißen, ein Gefühl von Teamgeist zu schaffen und es zu motivieren, auf Kurs zu bleiben. Auch wenn ein solches Team wie von selbst motiviert ist, braucht es dennoch eine Führungspersönlichkeit, die hilft, Hindernisse aus dem Weg zu räumen, und die das Team anleitet und führt. Sehen wir uns an, was es braucht, um effektiv zu führen.

Effektiv führen

Um ein effektives Team aufzubauen, musst du auch eine effektive Führungskraft sein. Obwohl starke Teams auch ohne eine Führungskraft funktionieren können, haben effektive Führungskräfte Einfluss auf die Leistung und Zufriedenheit der Mitarbeiter/innen, die Entscheidungsfindung und die Zusammenarbeit und fördern ein positives Arbeitsumfeld.2

Die Project Oxygen-Studie hat gezeigt, dass die Führung eine entscheidende Rolle für die Effektivität eines Teams spielt. Du musst deine Kernaufgaben erfüllen, effektive Praktiken ermöglichen und strategische Sichtbarkeit nutzen. Was es bedeutet, eine effektive Führungskraft zu sein und Effektivität zu ermöglichen, wirst du in den nächsten Kapiteln dieses Buches erfahren, aber in diesem Abschnitt geht es um die Kernaufgaben einer Führungskraft und die Bedeutung der strategischen Sichtbarkeit.

Verantwortlichkeiten von effektiven Führungskräften

Als Führungskraft ist es deine Hauptaufgabe, dein Team zu inspirieren, zu beeinflussen und auf ein gemeinsames Ziel hinzuführen. Effektive Führungskräfte bauen erfolgreiche Teams auf, indem sie wirksame Praktiken in diese Kernaufgaben einbeziehen. Zum Beispiel:

  • Du bist für die Planung der Rollen und der Zusammensetzung des Teams verantwortlich.

  • Du hilfst dabei, Ziele und Prioritäten für die Gruppe/Teammitglieder festzulegen.

  • Du stellst sicher, dass jeder das hat, was er braucht (Werkzeuge/Ressourcen), um seine Aufgaben effektiv zu erledigen.

  • Du nutzt deine Erfahrung, um herauszufinden, wo Probleme entstehen könnten, damit sie proaktiv angegangen werden können, bevor sie zu großen Problemen führen.

  • Du schaffst klare Kommunikationswege und nutzt Instrumente und Prozesse, die eine effektive Kommunikation fördern.

  • Du kommunizierst regelmäßig über Teambesprechungen, Status-Updates und Fortschrittsberichte. Die Kommunikation sollte zeitnah, transparent und umfassend sein.

Beachte, dass diese Verantwortlichkeiten direkt die Eigenschaften unterstützen, die ein effektives Team ausmachen.

Strategische Sichtbarkeit

Bei derstrategischen Sichtbarkeit geht es darum, den internen und externen Stakeholdern die Leistungen des Teams und ihre Auswirkungen auf das Unternehmen zu vermitteln. Dabei kann es darum gehen, herauszustellen, wie die Arbeit des Teams ein wichtiges Kundenbedürfnis erfüllt, die Effizienz verbessert oder zu einer größeren Produktvision beiträgt. Indem du ihren Wert durch überzeugende Geschichten und Daten effektiv darstellst, stellst du sicher, dass das Team innerhalb des Unternehmens Anerkennung findet und für zukünftige Chancen, Ressourcen und Einflussmöglichkeiten positioniert ist.

Wie bereits erwähnt, treibt die Motivation die Leistung an. Obwohl Menschen durch Autonomie, Meisterschaft und Zielstrebigkeit motiviert werden können, werden sie auch durch Anerkennung und Bestätigung motiviert. Als Führungskraft solltest du die Bemühungen deines Teams innerhalb deines Unternehmens öffentlich unterstützen, ohne dabei deine eigene Beteiligung hervorzuheben. Eine unternehmensweite Anerkennung und ein anerkannter Erfolg steigern nicht nur die Motivation des Teams, sondern zeigen auch Talente auf und eröffnen deinen Teammitgliedern zukünftige Entwicklungsmöglichkeiten. Erinnere dich daran, dass du der beste Cheerleader deines Teams sein kannst, der es dazu inspiriert, neue Höhen zu erreichen und seine Ziele gemeinsam zu verwirklichen.

Hier ein Beispiel aus der Praxis, um die strategische Sichtbarkeit zu verdeutlichen. Ich leitete einmal ein Team von außergewöhnlich fähigen Ingenieuren. Obwohl wir immer wieder hervorragende Arbeit ablieferten, waren wir wie ein verstecktes Juwel, das oft im Schatten der glamouröseren, hochkarätigen Projekte des Unternehmens stand. Das war der Fall, obwohl wir dachten, dass unsere Beiträge zum Erfolg des Gesamtprodukts beitrugen.

Anfangs beobachtete ich bei meinen Teammitgliedern einen Anflug von Frustration. Sie arbeiteten unermüdlich und lösten oft komplexe Probleme, aber sie bekamen nicht die Anerkennung, die sie verdienten. Als Führungskraft wusste ich, dass es nicht nur wichtig war, ihre Arbeit anzuerkennen, sondern auch dafür zu sorgen, dass sie auf einer breiteren Organisationsebene gesehen und geschätzt wurde.

Ich erkannte, dass es nicht nur darauf ankam, hart zu arbeiten, sondern auch klug zu arbeiten und unsere Arbeit auf die obersten Prioritäten des Unternehmens abzustimmen. Das bedeutete nicht, dass wir unsere laufenden Projekte aufgeben mussten, sondern dass wir einen Weg finden mussten, unsere Arbeit mit den übergeordneten Zielen des Unternehmens zu verbinden.

Wir begannen damit, ein Projekt zu finden, das direkt mit einem der Hauptziele des Unternehmens für dieses Jahr verbunden war. Dieses Projekt hatte nicht nur hohe Priorität für das Unternehmen, es passte auch perfekt zu den einzigartigen Fähigkeiten und dem Fachwissen unseres Teams.

Wir stürzten uns in das Projekt und setzten unser umfassendes Wissen über Browsertechnologien und Produktentwicklungsprinzipien ein. Wir konzentrierten uns darauf, das Projekt nicht nur abzuschließen, sondern die Erwartungen zu übertreffen und innovative Funktionen hinzuzufügen, von denen wir wussten, dass sie einen großen Einfluss haben würden.

Ich ermutigte das Team, unseren Prozess und unsere Ergebnisse genau zu dokumentieren. Wir teilten regelmäßige Updates nicht nur innerhalb unseres Teams, sondern auch mit anderen Teams und Interessengruppen. Bei dieser Transparenz ging es nicht nur um Sichtbarkeit, sondern auch darum, Kanäle für Zusammenarbeit und Feedback zu öffnen.

Das Projekt war ein Erfolg und hat die Ziele des Unternehmens erheblich beeinflusst. Aber noch wichtiger ist, dass unser Team dadurch ins Rampenlicht gerückt wurde. Unsere Arbeit wurde in unternehmensweiten Meetings gewürdigt, und Teammitglieder wurden eingeladen, bei internen technischen Vorträgen und Konferenzen zu sprechen. Diese Anerkennung stärkte die Moral und förderte den Stolz in unserem Team.

Hier ist, was ich aus dieser Erfahrung über Führung gelernt habe. Als Führungskraft solltest du das Folgende tun:

An umfassenderen Zielen ausrichten

Die Wirkung deiner Arbeit vervielfacht sich, wenn sie mit den Hauptzielen deiner Organisation übereinstimmt.

Nutze die einzigartigen Stärken deines Teams

Verstehe und nutze die einzigartigen Fähigkeiten und Kenntnisse deines Teams.

Effektiv kommunizieren

Teile regelmäßig deine Fortschritte und Lernerfahrungen mit. Transparenz fördert die Anerkennung und Zusammenarbeit.

Fokus auf Wirkung, nicht nur auf harte Arbeit

Es geht nicht nur darum, hart zu arbeiten, sondern auch darum, greifbare Ergebnisse zu erzielen, die mit den Prioritäten des Unternehmens übereinstimmen.

Erfinde eine Geschichte rund um deine Arbeit

Dokumentiere deinen Weg und teile ihn mit anderen; das ist wichtig für die Sichtbarkeit und Anerkennung.

Kurz gesagt, diese Erfahrung hat mich gelehrt, dass es in der Tech-Branche nicht bedeutet, dass man nicht wertvoll ist, wenn man im Schatten steht. Manchmal bedeutet es nur, dass du einen strategischen Ansatz brauchst, um deinen Wert hervorzuheben. Indem du dich aktiv für deine Teammitglieder einsetzt, förderst du eine Kultur des Vertrauens, der Loyalität und der gegenseitigen Unterstützung, die es ihnen letztendlich ermöglicht, über sich hinauszuwachsen und zum Gesamterfolg des Teams beizutragen.

Effektivität aufrechterhalten (eine Wachstumskultur)

Der letzte Schritt zum Aufbau eines effektiven Teams ist die Aufrechterhaltung der Kultur, die du durch kontinuierliches Wachstum geschaffen hast. Die Schaffung eines gemeinsamen Ziels und eine offene Kommunikation können eine starke Teamkultur fördern, die zu einem engagierten und motivierten Team führt. Damit die Teammitglieder glauben, dass ihr Einfluss und ihre Beiträge für das Unternehmen wichtig sind, müssen die Führungskräfte den Teammitgliedern die Möglichkeit geben, ihre Fähigkeiten zu entwickeln und in ihren Rollen zu wachsen. Um die Effektivität über einen längeren Zeitraum aufrechtzuerhalten (siehe Abbildung 1-3), müssen die Faktoren Agilität, Zielstrebigkeit und Wirkung unterstützt werden, die nach Ansicht von Forschern die wichtigsten Faktoren für den Teamerfolg sind.

Abbildung 1-3. Effektivität erhalten: verbessern und wachsen

Lern- und Entwicklungsmöglichkeiten

Wachstumschancen können eine große Motivationsquelle für Teammitglieder sein, und wie bereits in diesem Kapitel erwähnt, treibt Motivation die Leistung an. Auf der anderen Seite kann ein Mangel an Lern- und Entwicklungsmöglichkeiten zu Stagnation führen. Ein Team, das nicht weiß, wie es improvisieren soll, kann in veralteten Methoden stecken bleiben. Stell dir ein Team vor, das noch nicht über den Einsatz von KI-Tools zur Verbesserung seiner Prozesse nachgedacht hat. Stagnation kann auch zu Langeweile und Frustration führen, wodurch die Produktivität sinkt und Talente verloren gehen.

Wachstum kann auch in Form von Lernmöglichkeiten erfolgen, die durch Schulungen, Mentorenschaft und Coaching geschaffen werden können.

Agilität

Wie bereits in diesem Kapitel erwähnt, hat die Forschung gezeigt, dass Agilität entscheidend für die Effektivität von Teams ist, da sie es ihnen ermöglicht, schnell und effektiv auf sich ändernde Geschäftsanforderungen, Kundenbedürfnisse und Marktdynamiken zu reagieren. Agile Teams sind anpassungsfähiger an veränderte Umstände und können ihre Entwicklungspläne bei Bedarf anpassen.

Hier sind einige Strategien, um die Beweglichkeit des Teams zu gewährleisten:

Schwerpunkt auf agile Methoden legen

Agile Methoden bieten einen Rahmen für die flexible und iterative Bereitstellung von Software. Durch die Einführung agiler Praktiken wie Scrum oder Kanban können Teams ihre Fähigkeit verbessern, sich an veränderte Anforderungen und Prioritäten anzupassen. Es ist jedoch wichtig, dass du die agilen Prozesse an die Bedürfnisse deines Teams anpasst, anstatt sie blind aus einem Lehrbuch zu übernehmen.

Förderung der funktionsübergreifenden Zusammenarbeit

Ermutige Teammitglieder, über Funktionsgrenzen hinweg zusammenzuarbeiten, z. B. Entwickler/innen mit UI/UX-Designer/innen. Dies kann helfen, Silos aufzubrechen, die gemeinsame Nutzung und Wiederverwendung zu fördern und die Zusammenarbeit und Kommunikation zu verbessern, was zu effizienteren und effektiveren Entwicklungsprozessen führt.

Kommunikation priorisieren

Effektive Kommunikation ist für agile Teams entscheidend. Sorge dafür, dass die Teammitglieder sich regelmäßig treffen, um Fortschritte, Herausforderungen und Prioritäten zu besprechen. Ermutige eine offene und ehrliche Kommunikation und biete Kanäle für Feedback.

Aufbau einer Kultur der Anpassungsfähigkeit

Fördern Sie eine Kultur, die Anpassungsfähigkeit schätzt und Veränderungen zulässt. Ermutige zum Experimentieren und zur Risikobereitschaft und belohne die Teams dafür, dass sie auf veränderte Umstände und Kundenbedürfnisse reagieren.

Implementierung von kontinuierlicher Integration und Bereitstellung

Kontinuierliche Integrations- und Bereitstellungspraktiken können Teams dabei helfen, Software schneller und zuverlässiger bereitzustellen. Durch die Automatisierung des Erstellungs-, Test- und Bereitstellungsprozesses können Teams die Zeit und den Aufwand für die Veröffentlichung neuer Funktionen und Updates reduzieren.

Durch die Umsetzung dieser Strategien können effektive Teams agiler und anpassungsfähiger werden und auf sich ändernde Geschäftsanforderungen und Kundenwünsche reagieren.

Kontinuierliche Verbesserung

Effektive Teams in der Softwareentwicklung streben nach ständiger Verbesserung. Das bedeutet, dass sie ständig nach Möglichkeiten suchen, ihre Prozesse, Werkzeuge und Fähigkeiten zu verbessern. Teams sollten ihre Leistung regelmäßig bewerten und Verbesserungsmöglichkeiten aufzeigen. Sie sollten auch das Feedback anderer Teams, Interessengruppen und Kunden einholen, um Verbesserungsmöglichkeiten zu erkennen. Ermutige die Teammitglieder, sich für eine kontinuierliche Verbesserung einzusetzen und stelle ihnen die Werkzeuge und Ressourcen zur Verfügung, die sie brauchen, um erfolgreich zu sein. Dazu können der Zugang zu neuen Technologien, Feedbackschleifen und eine Kultur des Experimentierens gehören.

Kontinuierliche Verbesserung erfordert eine Kultur des Lernens und des Wachstums. Die folgenden Tipps können dabei helfen, eine solche Kultur zu schaffen:

Kontinuierliches Lernen fördern

Ermutige deine Teammitglieder, neue Fähigkeiten und Technologien zu erlernen, und biete ihnen Möglichkeiten zur beruflichen Weiterentwicklung. So können die Teammitglieder über Branchentrends und bewährte Methoden auf dem Laufenden bleiben.

Leistung messen und überwachen

Verfolge regelmäßig die Leistungskennzahlen (KPIs), um die Teamleistung zu bewerten und Verbesserungsmöglichkeiten zu erkennen. Nutze die Daten, um Entscheidungen zu treffen, Prioritäten zu setzen und Anpassungen vorzunehmen, damit das Team seine Ziele erreichen kann.

In einer sich ständig verändernden Technologielandschaft müssen sich Softwareentwicklungsteams kontinuierlich anpassen, um den sich verändernden Nutzerbedürfnissen, Geschäftsanforderungen und Marktanforderungen gerecht zu werden. Agile Methoden können eine Kultur des kontinuierlichen Lernens und der Verbesserung innerhalb des Teams fördern und Softwareentwicklungsteams in die Lage versetzen, effizienter und effektiver zu arbeiten und den Stakeholdern einen Mehrwert zu bieten .

Fazit

Der Aufbau eines effektiven Teams für Softwareentwicklung erfordert Arbeit. Wie du in diesem Kapitel gesehen hast, können viele Faktoren den Erfolg eines Teams für Softwareentwicklung beeinflussen.

Die in diesem Kapitel gegebenen Hinweise zum Aufbau effektiver Teams orientieren sich eng an den Forschungsergebnissen zu den Schlüsselfaktoren, die die Effektivität von Teams bestimmen. Die Zusammenstellung eines starken Teams bildet die Grundlage für die richtige Mischung von Fähigkeiten und Perspektiven. Der Teamgeist fördert die psychologische Sicherheit und Verlässlichkeit, die es den Teammitgliedern ermöglichen, Risiken einzugehen und sich aufeinander zu verlassen. Eine effektive Führung gibt den Teams die Richtung und die Unterstützung, die sie brauchen, um ihre beste Arbeit zu leisten. Und die Aufrechterhaltung einer Wachstumskultur ermöglicht es den Teams, sich ständig zu verbessern und an neue Herausforderungen anzupassen.

Projekt Aristoteles und andere Forschungen zu effektiven Teams haben gezeigt, dass psychologische Sicherheit, klare Strukturen und Kommunikation, Verlässlichkeit, sinnvolle Arbeit und Agilität ein Umfeld schaffen können, das Zusammenarbeit, Innovation und Erfolg begünstigt. Diese Faktoren ziehen sich wie ein roter Faden durch das gesamte Kapitel und verbinden die Teams in ihrem Bestreben, effektiv zu sein.

Effektive Teams haben bestimmte Qualitäten oder Dynamiken, die es ihnen ermöglichen, effektiv zu sein. Ihre Leistung wird auch durch Motivation bestimmt. Wenn du ein neues, effektives Team aufbauen oder ein bestehendes Team weiterentwickeln willst, um es effektiver zu machen, musst du bestimmte Faktoren berücksichtigen. Dazu gehört, dass du dein Team mit der richtigen Anzahl von Personen mit unterschiedlichen Fähigkeiten und Hintergründen für ein Projekt zusammenstellst. Dazu gehört auch, dass jedes Teammitglied eine ingenieurwissenschaftliche Denkweise entwickelt, die eine Synergie schafft, die den Weg für Zusammenarbeit und effektive Leistung ebnet. Dies wird durch ein Gefühl des Teamgeistes noch verstärkt.

Auch wenn es offensichtlich klingt: Ein effektives Team muss von einer effektiven Führungskraft geführt werden. Bereite dein Team auf den Erfolg vor, indem du bei allem, was du tust, auf Effektivität achtest, und scheue dich nicht, die Leistungen deines Teams anzuerkennen. Anerkennung ist nicht nur für die Arbeitsmoral wichtig, sondern auch für die berufliche Entwicklung deines Teams.

Um ein effektives Team zu haben, musst du eine Wachstumskultur pflegen. So bleibt das Team beweglich, verbessert sich ständig und ist besser gerüstet, um alles zu bewältigen, was auf es zukommt.

Diese Grundlagen können uns helfen, unsere Teams so zu strukturieren, dass sie die bestmöglichen Ergebnisse erzielen. Diese Faktoren können dir helfen, ein motiviertes und produktives Team zu bilden, das beständig hochwertige Ergebnisse liefert. Mit den richtigen Leuten, der richtigen Kommunikation und Unterstützung kannst du ein Team aufbauen, das erfolgreich ist und selbst die komplexesten Projekte erfolgreich abschließt.

Das Messen und Überwachen der Effektivität während des gesamten Lebenszyklus eines Projekts ist ebenso wichtig wie die Ermöglichung der Effektivität. Um die Effektivität richtig zu messen, musst du verstehen, wie sie sich von den Konzepten der Produktivität und Effizienz unterscheidet. Im folgenden Kapitel geht es um die Unterschiede zwischen diesen Konzepten und wie sie gemessen werden.

1 Sie nannten es Projekt Aristoteles als Hommage an den griechischen Philosophen Aristoteles, der oft mit den Worten zitiert wird: "Das Ganze ist größer als die Summe seiner Teile".

2 In Kapitel 4 werde ich ausführlicher über die Auswirkungen des Verhaltens von Führungskräften sprechen.

Get Effektive Ingenieurteams leiten now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.