07.02.2012
Softwareentwicklung

Meine Beratungsleistung:

Meine Beratungsleistung im Bereich Softwareentwicklung umfasst die Wahrnehmung folgender Projektrollen:

  • Softwareentwickler
  • Datenbankdesigner
  • Systemarchitekt
  • Testmanager
  • Coach

Die Unterstützung kann sowohl punktuell als auch über alle Projektphasen erfolgen.

Zu bisher genutzten Tools und eingesetzten Technologien verweise ich auf die Seite Kenntnisse.

 

Mein Verständnis von Softwareentwicklung:

Softwareentwicklung ist meinem Verständnis nach weitaus mehr als die Umsetzung fertiger Konzepte unter Verwendung zeitgemäßer Technologien in Programmcode. Der Erfolg von Softwareentwicklungsprojekten hängt in hohem Maße von den kommunikativen Fähigkeiten aller Beteiligten ab. Es sind vielfältige Interessen zu beachten und gegebenenfalls auch unpopuläre Entscheidungen gegenüber den am Projekt beteiligten Parteien zu vertreten.

Für den Betrieb, die Wartung und Pflege und auch für nachfolgende Projekte ist zudem die Dokumentation von zentraler Bedeutung. Neben den technischen und sozialen Kompetenzen der Projektbeteiligten ist auch die Bereitschaft die Dokumentation stets zeitnah zu aktualisieren ein kritischer Erfolgsfaktor.

Auf die genannten Punkte und meine diesbezüglichen Erfahrungen gehe ich im Folgenden etwas detaillierter ein.

Technologien und Programmiersprachen

Der Erfolg von Softwareentwicklungsprojekten wird nach meiner Erfahrung nur zu einem geringen Teil von den eingesetzten Technologien und Programmiersprachen beeinflusst. Bei jeder Entscheidung für oder gegen eine Technologie oder Programmiersprache ist abzuwägen, wie die Interessen aller am Projekt beteiligten Parteien gewahrt werden können.

In der Regel sind folgende Interessengruppen zu berücksichtigen:

  • Viele Softwareentwickler möchten - verständlicher Weise - gerne immer die neuesten Technologien einsetzen, die neuesten Features der neuesten Versionen der Programmiersprachen und aktuelle Versionen der verfügbaren Bibliotheken nutzen. Gerade die Welt der modernen objektorientierten Programmiersprachen wie Java oder das .Net-Framework ist charakterisiert durch sehr kurze Innovationszyklen der Entwicklungsumgebungen und Bibliotheken und erfreut sich - sicherlich auch aus diesem Grund - bei Softwareentwicklern großer Beliebtheit
  • Dem entgegen steht das Interesse der Betriebs-Abteilungen, die nach Abschluss der Entwicklungsprojekte die Software übernehmen und sicher und stabil betreiben müssen. Hier liegt das Interesse weniger darin, spannende und neue Technologien einzusetzen, sondern vielmehr darin, die Anzahl der unterschiedlichen Technologien überschaubar und damit kostengünstig und wartbar zu halten. Vor diesem Hintergrund haben auch bei Softwareentwicklern unpopuläre Sprachen wie Cobol oder PL/1 ihre Berechtigung
  • Die dritte Partei in diesem Spannungsfeld der Interessen sind die Auftraggeber eines Projekts. Hier steht in der Regel das Interesse im Vordergrund, die Entwicklungs-, Betriebs- und Wartungskosten gering zu halten

Vor dem Hintergrund dieser teilweise konträren Interessen hat es sich als zielführend herausgestellt, den Entscheidungsprozess über eingesetzte Technologien von einer neutralen Partei moderieren zu lassen. Auf diese Weise können Entscheidungen getroffen werden, bei denen sich alle beteiligten Parteien berücksichtigt wissen.

Kommunikation, Konzepte und Vorgehensmodelle

Softwareentwicklung ist meinem Verständnis nach - wenn man sie richtig betreibt - eine Beratungsleistung und eine Kommunikationsdisziplin. Die klassischen Vorgehensmodelle wie Wasserfallmodell oder V-Modell erfordern - entgegen weit verbreiteter Meinung - ausgeprägte kommunikative Fähigkeiten, wenn man vermeiden möchte, dass unnötige Verzögerungen und damit verbundene Zusatzkosten entstehen. Die agilen Methoden ersetzen große Teile der schriftlichen Konzepte durch kontinuierliche Kommunikation.

Meinem Verständnis von Softwareentwicklung nach müssen sich die Auftraggeber verstanden fühlen. Daneben ist es unabdingbar, dass auch die Fachbereiche, welche die detaillierten Anforderungen definieren und später die erstellte Lösung einsetzen werden, intensiv mit in den Entwicklungsprozess eingebunden werden. Dieses erreiche ich auf folgende Art:

  • Ich verstehe mich als Berater und Partner der Auftraggeber und Fachbereiche
  • Ich spreche die Sprache meiner Auftraggeber und deren Kunden, der Fachbereiche
  • Ich füge mich in die Strukturen und Prozesse meiner Kunden ein
  • Ich kenne und beherrsche die für meine Aufgabenstellungen richtigen Vorgehensweisen und Technologien

Dokumentation

Dokumentation ist ein von vielen Entwicklern wenig geliebter Teil der Softwareentwicklung, der häufig nur als unvermeidbares Übel gesehen wird. Dementsprechend knapp fällt die Dokumentation in der Regel aus.  Nach dem Motto "nach mir die Sintflut" hinterlassen gerade externe Softwareentwickler häufig unzureichende bis gar keine Dokumentation.

Zudem habe ich die Erfahrung gemacht, dass die Dokumentation notwendigen Sparmaßnahmen häufig als erstes zum Opfer fällt. Nach Projektabschluss fehlt darüber hinaus häufig Zeit oder Budget, um die Dokumentation nachzupflegen. Dieses hat zur Folge, dass die nächsten Änderungen oder Erweiterungen der Software aufwändig und teuer werden können, weil keine zum System passende Dokumentation existiert und damit die verlässliche Basis fehlt, auf der Algorithmen, Prozesse oder einfach nur Änderungs-Anforderungen beschrieben und umgesetzt werden können.

Aus diesen Gründen vertrete ich die Meinung, dass die Dokumentation in Projekten unverzichtbar ist. Ihr sollte ein vergleichbarer Stellenwert, wie der Softwareentwicklung selbst eingeräumt werden.