Unser eingespieltes Team realisiert seit 2011 anspruchsvolle Software-Projekte. Dabei haben wir schon selbst viele Fehler gemacht (und dabei das eine oder andere gelernt 😅 ) und sehen aber auch am Markt das eine oder andere das nicht richtig läuft. Manchmal hat man das Gefühl als ob es ein Naturgesetz ist, dass Software-Projekte nicht in der erhofften Qualität und im vereinbarten Budget geliefert werden.

Aus unserer Sicht können die häufigsten Fehler die in Software-Entwicklungs-Projekten passieren in die folgenden Themengebiete kategorisiert werden.

  • Schlechte Kommunikation
  • Unklare Prozesse
  • Zu optimistischer Zeitplan
  • Keine Unit Tests
  • Kein eingespieltes Team

Schlechte Kommunikation

In der täglichen Projekt-Kommunikation kommt es immer wieder zu Missverständnissen. In der Kommunikation bei Software-Projekten kommt erschwerend dazu, dass oft über relativ komplexe Sachverhalte diskutiert wird und die Diskussionsteilnehmer:innen unterschiedliche Erfahrungen und Anforderungen mitbringen. Oft sehen wir, dass Teams sich schwer tun Informationen zu teilen und daran scheitern, dass alle Team-Mitglieder auf dem gleichen Informations-Stand sind. Dadurch kommt es zu Missverständnissen und Projektmitgliedern die nicht alle in die gleiche Richtung laufen.

Unklare Prozesse

Oft fehlt es bei Software-Projekten an gut durchdachten und etablierten Prozessen. Prozesse in der Software-Entwicklung zu definieren und zu leben ist immens wichtig. Folgend ein kleiner Auszug an Bereichen die gut durchdachte Prozesse und unterstützende Tools benötigen. Jeder dieser Bereiche benötigt gut durchdachte, dokumentierte und vor allem gelebte Prozesse. Wir sehen, dass es oft keine gut funktionierenden Prozesse gibt und betrachten dies als Grundübel von schlecht laufenden Software-Projekten:

  • Projekt Management
  • Stakeholder Management
  • Requirements Management
  • Change Request Management
  • Software-Entwicklung
  • Continuous Integration und Deployment
  • Quality Assurance

Zu optimistischer Zeitplan

Oft wird von hohen Management Ebenen ein unrealistischer Zeitplan vorgegeben und ein gewisser Druck ausgeübt um diesen zu erfüllen. Das geht manchmal gut, oft sind unrealistische Zeitpläne jedoch der Beginn einer fatalen Entwicklung.

Um Zeit zu sparen gibt es in der Software-Entwicklung, wie in jedem Handwerk, gewisse Abkürzungen die man nehmen kann. Ein Auszug solcher Abkürzungen mit keinem Anspruch auf Vollständigkeit:

  • Es werden keine Software-Test geschrieben
  • Das Team nimmt sich keine Zeit um gegenseitig Code zu reviewen
  • Es wird weniger getestet
  • Es bleibt wenig Zeit um auf die Erweiterbarkeit und Zukunftssicherheit des Software-Codes zu achten

Keine Unit Tests

Unit Tests ist Software welche die geschriebene Software auf Korrektheit prüft. Aus unserer Sicht ist es unmöglich hoch qualitative Software zu entwickeln, die ohne Unit Tests auskommt. Unit Tests stellen sicher, dass die wichtigsten Funktionen der Software funktionieren wie spezifiziert. Ohne Unit Tests weiß man nach einer Änderung nie ganz genau ob die Änderung nicht doch eine andere Funktion beeinträchtigt hat. Ganz besonders auswirken tun sich fehlende Software Unit Tests auf die Zukunftssicherheit eines Projekts. Ganz besonders das Onboarding von neuen Software-Entwicklern oder das Neu-Schreiben von Teilbereichen wird immens erschwert.

Kein eingespieltes Team

Prozesse leben von eingespielten Teams, ganz besonders auch in der Software-Entwicklung. Es macht einfach einen riesigen Unterschied wenn ich bereits zum dritten Mal ein Projekt mit der gleichen Person ausführe und weiß wie die Person "tickt" und sie im Idealfall auch noch persönlich schätze. Oft wird in Software-Projekte auf ein mehr oder weniger zufällig zusammengewürfeltes Team zurückgegriffen und gehofft 🤞🏻, dass sich das Team schon einspielen wird.

Abschließend möchte ich noch kurz darauf eingehen, was wir bei Codista tun damit Projekte in der vereinbarten Zeit, in der gewünschten Qualität und im definierten Budget geliefert werden:

Effiziente Projekt-Kommunikation

Klare Prozesse und Tools

  • Wir leben etablierte Projekt-Management Prozesse
  • Wir haben Projekt Vorlagen die alle Aufgaben eines Software-Projektes standardisieren
  • Wir nutzen Jira für das Issue und Requirements Management
  • Wir nutzen GitLab für einen standardisierten Aufgaben, Issues, Entwicklungs- und Continuous Deployment / Integration Prozess

Gemeinsam definierte Zeitpläne

  • Wir zeigen auf wenn Zeitpläne nicht realistisch sind
  • Wir einigen uns mit unseren Kund:innen auf realistische Zeitpläne und realistische Budgets

Hohe Test Coverage

  • Wir sind stolz darauf, dass wir eine Kultur etabliert haben in welcher Unit Tests Teil unserer täglichen Arbeit sind
  • Das heißt wir schreiben immens viele Unit Tests und erreichen dadurch eine hohe Qualität
  • Eine Unit Test Coverage von über 60% ist unser Ziel

Eingespieltes Team

  • Wir sind stolz darauf, dass wir einen geringen Mitarbeiter:innen-Wechsel haben und unseren Kund:innen dadurch ein sehr eingespieltes Team zur Verfügung stellen können

Falls Sie auf der Suche sind nach einer zuverlässigen Software-Entwicklungs-Agentur, können Sie uns gerne unter hello@codista.com kontaktieren.

Andere Beiträge

  • Für eine offene Informationskultur in Unternehmen

    Ein Unternehmen kann nur dann effizient arbeiten, wenn die Mitarbeiter:innen Zugang zu den richtigen Informationen haben. Dieser Artikel erklärt, wie eine offene Informationskultur dazu beitragen kann, Transparenz, Vertrauen und Zusammenarbeit in einem Unternehmen zu schaffen.

  • Remote Work Challenges: The Missing Context

    Remote teams don't always share a common context when working together - that can cause problems. This is the story of why we built Tack, a Slack app that enables everyone to see what their teammates are up to right now.