"Deine App wird am Dienstag fertig sein." - welcher Dienstag ?!

10 Gründe, warum Softwareentwicklungsprojekte scheitern

Wenn Sie online nach Trends in der Softwareentwicklung suchen, finden Sie eine unendliche Menge an Informationen über boomende Technologien und die Auswirkungen der Technologie auf alle Branchen bis 2020. Wir erfahren von all den erstaunlichen Veränderungen, die die neue Technologie bis zum Erbrechen mit sich bringen wird. Ich möchte hier den letzten Teil des vorherigen Satzes in Frage stellen.

"In 2020". Für diejenigen unter Ihnen, die nicht "Software-Ingenieur" sprechen, bedeutet dies 2040.

Als der einzige bei Crane.ai, der keinen Code schreibt, war ich die längste Zeit von diesem Problem geplagt. Natürlich sind auch Nicht-Codierer Teil des Problems; Ursprünglich gab es in diesem Beitrag 5 Gründe, warum Softwareentwicklungsprojekte scheitern. Ich habe die Spezifikation jedoch in der Mitte des Projekts auf Client-Basis geändert. Daher sind es jetzt etwa 10 Gründe, warum Softwareentwicklungsprojekte scheitern.

1. Schlecht definiertes (oder, so Gott will, undefiniertes!) Ergebnis

"App? Wir haben eine Brücke gebaut, geht das? “

Eines der größten Probleme bei Softwareentwicklungsprojekten ist ein schlecht definiertes Ergebnis. Ohne die richtige Definition, was das „Endprodukt“ sein soll, ist garantiert, dass ein Projekt fehlschlägt.

Dies ist so wichtig, dass möglicherweise die Richtung des Projekts selbst geändert wird (weshalb es auf meiner Liste die Nummer 1 ist!). Ich empfehle dringend, ein Datenblatt zu erstellen, um besser zu identifizieren, wie das Produkt aussehen wird, was es tun wird und wie es es tun wird. Mehr dazu unter Kommunikation und Erwartungen!

2. Das falsche Problem lösen.

„Wir haben eine neue Holzbrücke gebaut, die viel schöner aussieht als die alte. Autos? Oh nein, es kann keine Autos unterstützen. Ziemlich alles, was schwerer ist als ein Vogel, wird es zerbrechen. “

Ein weiteres häufiges Problem ist die Lösung des falschen Problems. Dies entspricht einem schlecht definierten Ergebnis, ist jedoch viel umfassender. Obwohl Sie Ihr Endprodukt richtig identifizieren und die anderen hier diskutierten Probleme lösen können, sind Sie mit dem Projekt nicht weiter gekommen, wenn Ihre Lösung das Problem nicht richtig behebt.

Eine Möglichkeit, dies zu lösen, besteht darin, schrittweise Ideen zu sammeln. Identifizieren Sie Ihr Kernproblem, welche Schritte zur Lösung dieses Problems unternommen werden könnten, und finden Sie eine mögliche Lösung. Führen Sie als Nächstes eine ständige Überprüfung des Produkts mit Ihrem Endbenutzer durch. Führen Sie eine ständige Überprüfung durch, um sicherzustellen, dass das Projekt die Anforderungen Ihres Benutzers ordnungsgemäß erfüllt und eine Lösung für Ihr Kernproblem bleibt.

3. Nicht genug Kommunikation.

"Wir haben eine halbe Brücke gebaut, sie haben einen halben Tunnel gebaut."

Auf Platz 3 zu kommen, ist das Kernproblem, das praktisch jedes Projekt, jede Branche und jede Geschäftskommunikation plagt. Kommunikation ist auf jeder Ebene eines Softwareentwicklungsprojekts von entscheidender Bedeutung.

Auf interner Ebene müssen Ihre Entwickler effektiv kommunizieren, um sicherzustellen, dass sie Tools und Pipelines erstellen, die koordiniert und ordnungsgemäß kompatibel sind. Eine gängige Lösung besteht darin, im Voraus Spezifikationen für Design, APIs und alle anderen in Ihrem Projekt erforderlichen Konstruktionsschritte zu erstellen. Dies ist von entscheidender Bedeutung, um Hunderte von Stunden Zeit zu sparen, die ansonsten für die Umgestaltung und Umstrukturierung verschwendet werden könnten.

Auf einer höheren Ebene ist es auch wichtig, mit anderen Teams richtig zu kommunizieren. Das Marketing-Team muss beispielsweise wissen, was technisch machbar ist, bevor es das Konzept verkauft.

Wenn Sie auf dieser Ebene nicht kommunizieren, kann dies zu Problemen führen, die das Projekt erschüttern. Das Produkt könnte sich stark von dem lösen, was verkauft, versprochen, gebaut und gebraucht wurde.

4. Kein Plan oder Zeitplan.

"Ja ... es wird erledigt wie ... vielleicht ein paar Wochen? Ich bin nicht sicher, was wir danach tun werden ... "

Unabhängig davon, ob Zeitpläne und Pläne eingehalten werden, ist es wichtig, einen zu haben. Es vermittelt Ihrem Projekt ein Gefühl für Struktur und gibt Ihnen eine Einschätzung, wann und wie Aufgaben erledigt werden.

Natürlich geht ein guter Plan viel weiter. Ein guter Plan oder eine gute Zeitachse kann auch als gemeinsame Grenze für große Teams dienen, sodass sie im Sprint schnell und effizient arbeiten können. Wenn eine Funktion ausfällt oder mehr Zeit benötigt, kann der Plan / die Zeitachse schnell angepasst und das Budget entsprechend angepasst werden.

5. Mangelnde Rechenschaftspflicht.

"Das Geld bleibt stehen ... da drüben, tschüss!" - Harry Truman wahrscheinlich

Wenn Scheiße auf den Ventilator trifft, muss jemand mit einem Mopp fertig sein. Wenn eine Funktion ausfällt, sollte klar sein, wer dafür verantwortlich ist und welche Maßnahmen ergriffen werden sollten, um dies in Zukunft zu verhindern.

Es klingt kindisch, aber in der Softwareentwicklungsbranche kommt es häufig vor, dass man „mit den Fingern zeigt“. Die Back-End-Ingenieure machen die Front-End-Ingenieure und das Vertriebsteam und das Marketingteam und das Rechtsbüro machen das Management verantwortlich. Dies ist der Prozess Dies ist nicht nur zeitaufwändig und für die Moral katastrophal, sondern lässt auch die Kernfrage „Was ist schief gelaufen?“ offen und unbeantwortet.

6. Bewegen Sie die Torpfosten zu oft.

"Okay, aber jetzt muss die Brücke auch als Start- und Landebahn fungieren, 10 weitere Fahrspuren haben und wie wäre es mit einem Park in der Mitte?"

Es ist wichtig, die Ziele eines Projekts im Auge zu behalten und sicherzustellen, dass sie rechtzeitig erreicht werden. Während es möglich ist, dass ein Projekt erweitert werden muss oder sich die Anforderungen geändert haben, kann eine häufige Änderung des „Endziels“ nicht nur die Moral zerstören, sondern ein Projekt komplett unmöglich machen. Oft sind Änderungen ungeplant und erfordern ein umfangreiches Refactoring. Dies führt im Laufe der Zeit zu einer großen Zeitverschwendung und schließlich zu einem gescheiterten Projekt.

Was auf den ersten Blick wie eine kleine Veränderung erscheint, könnte sich zu einem langfristigen Entwicklungsprojekt entwickeln.

7. Unzureichende Dokumentation und Nachverfolgung.

"Die Anweisungen zur Entschärfung dieser Bombe besagen, dass der rote Draht gezogen werden muss, sobald der Strom ausfällt, aber alle Drähte sind rot und der Strom sollte vor 10 Minuten abgeschaltet werden!" - James Bond, Ende seine Karriere

Es ist großartig, einer agilen Methodik zu folgen und schnell voranzukommen, aber die Dokumentation ist immer wichtig. Undokumentierter Code kann zu jahrelanger technischer Verschuldung führen und später enorme Probleme verursachen - „Was macht diese Funktion?“

Ebenso wichtig ist es, das Produkt zu dokumentieren. Jeder Schritt des Prozesses von der Idee über das Design bis zur Ausführung sollte gut dokumentiert sein, um sicherzustellen, dass das Projekt für andere leicht navigierbar ist und auf dem richtigen Weg bleibt. Eine gute Dokumentation kann die Nachverfolgung von Projekten vereinfachen - in einem agilen System können Sie eine Kanbantafel oder ähnliches ausprobieren, um den Überblick über Aufgaben zu behalten!

8. Schlecht definierte Systemanforderungen.

"WTF, meinst du, es gibt nur 5 Brote und 2 Fische für alle 5000 von uns ?!"

Die technischen Anforderungen eines Projekts können schwer einzuschätzen sein, es ist jedoch äußerst wichtig, dass Sie dies tun. Was wie ein kleines Extra aussieht, kann sich in ein Problem verwandeln, das die Zuweisung zusätzlicher Infrastruktur und die Neudefinition des gesamten Systems zur Einführung von Support einschließt.

9. Schlechte Vorbereitung.

"Wir fliegen immer noch ein halbes Schiff."

Oft ist ein Projekt aufregend und leicht zu erreichen. Voraussetzung für den Erfolg ist jedoch die ordnungsgemäße Vorbereitung. Es müssen Spezifikationen erstellt, Entwürfe entworfen, ein Zeitplan vereinbart und Ressourcen zugewiesen werden.

Eine beliebte Methode, dies auf technischer Ebene zu verwalten, ist die testgetriebene Entwicklung. Planen Sie vor dem Schreiben einer einzelnen Codezeile für ein Projekt die Architektur und die Aufgaben der einzelnen Teile. Schreiben Sie als Nächstes Tests, um zu bestätigen, dass jedes Stück tatsächlich das tut, was beabsichtigt war. Auf diese Weise verfügen Sie über ein Framework mit festgelegten Zielen und können den Fortschritt bei der Entwicklung Ihres Produkts quantifizieren.

10. Unrealistische Erwartungen.

"Okay, die App sieht gut aus - aber warum ändert sich das Farbschema nicht automatisch, um es an die Handyhülle des Benutzers anzupassen?"

Es ist wichtig, mit den Erwartungen umzugehen. Oft fragt der Kunde nach einer Funktion, die unvernünftig, unpraktisch oder unmöglich ist. Es ist üblich, die Anzahl der an einer Spezifikation vorgenommenen Änderungen zu begrenzen und einen Techniker bei den Diskussionen zu beauftragen, um festzustellen, ob die vorgeschlagene Funktion technisch durchführbar ist.

Wenn Sie diese 10 Fallstricke vermeiden, wird Ihr nächstes Softwareentwicklungsprojekt hoffentlich ein erstaunlicher Erfolg! Auf welche Probleme stoßen Sie bei Ihren Softwareprojekten?

Hallo! Ich bin Tomer, Unternehmer und Hersteller. Sie kennen mich vielleicht von Mevee, Crane, Shots, Slides und jetzt von investorintelligence.io, unter anderen Produkten, die ich auf den Markt gebracht habe! Dieser Artikel ist Teil einer umfangreicheren Reihe, die ich hauptsächlich aufgrund meiner Erfahrungen schreibe und die sich hauptsächlich aus den Meinungen von mir und meinem Team zusammensetzt.

Ich hoffe, dies hilft Ihnen dabei, die gleichen Fehler zu vermeiden, die ich gemacht habe, und denken Sie daran, den Versand fortzusetzen!

Bitte klatschen Sie, wenn Sie dies wertvoll fanden, und folgen Sie mir, um mehr darüber zu schreiben, während ich Geschichten darüber teile, wie Softwareentwicklung und Unternehmertum im wirklichen Leben aussehen.