Ein Geist geht um. So oder so ähnlich könnte man, wenn man
betrachtet, was sich momentan in der Softwareentwicklung fast still schweigend
bewegt.
Ich versuche Software möglichst modularisiert und entkoppelt
zu entwickeln. Die Vorteile liegen für mich auf der Hand.
Gerade die Idee von Ralf Westphal (s. seinen BLog Software als System) wie man Softwareentwickeln sollte, zeigt Vorteile
auf .
Wenn Teile einer Software (egal ob man sie nun Service ,Komponente,
Klasse oder sonst wie bezeichnet) so modular und entkoppelt sind, dass man sie
austauschen kann ist diese Software deutlich besser Testbar und ermöglicht es
andere Komponenten gedanklich ausblenden zu können.
Die Idee der Softwarezelle ist neiner Meinung
nach ein sehr guter Ausgangspunkt um einen verbesserten Softwareprozess zu
entwickeln.
Dieses System beschreibt einen sehr organisierten und geplanten
Softwareentwicklungszyklus welcher sich den Vorgehensweisen denen in der
Industrie annähert.
Und genau das ist etwas wonach ich schon seit einiger Zeit
strebe aber immer wieder feststelle, dass in bei vielen noch kein
adäquates Bild von Softwareentwicklung besteht.
Die leider nur zu oft an den Tag gelegene Haltung zur Softwareentwicklung ist,
dass man ja nur „CodeZeilen“ schreibt. Text also. Die Eigentliche Schwierigkeit
der Softwareentwicklung wird selbst heute noch leider nur all zu oft in dem
Schreiben der Syntax, also im Schreiben des Textes, fast dem sequentiellen Drücken
der Tasten gesehen.
Wozu also der unnötige Aufwand?
Das finde ich immer recht verwunderlich, denn wer würde behaupten,
dass das Problem bei dem Bau einer Kathedrale das Anrühren des Betons wäre?
Oder das bei dem Gemälde in der Sixtinischen Kapelle die größte Leistung des
Künstler darin liegen würde dass er in der Lage ist einen Pinsel zu verwenden?
Es ist viel mehr das Zusammenwirken vieler Faktoren, das Gesamtbild und die Zusammenhänge darin,
die die Schwierigkeit einer Software ausmachen.
Doch warum wird Gegenteiliges bei der Softwareentwicklung
erwartet? Es ist meine Überzeugung, dass hinter jeder Haltung eine Motivation
steckt und dass Prinzipiell jeder Mitarbeiter einer Firma dazu beitragen möchte, dass die Firma Erfolg
hat.
Wieso also gibt es hier so grundsätzlich verschiedene Überzeugungen (Zumeist zwiscehn Stakeholder und Softwareentwickler) wie Software entwickelt werden sollte?
Der Grund hierfür liegt meiner Meinung nach darin, dass
große Teile des Personals in der IT Branche hineingewachsen sind. Sehr viele
Projektleiter waren mal selbst Softwareentwickler. Was dazu führt, dass sie
sich ja „eigentlich auskennen“ selbst “Männer/ Frauen vom Fach sind“.
Dies wiegt Führungspersonen verständlicherweise leicht in einem trügerischen
Sicherheitsgefühl. Denn bei den meisten sind die letzten produktiven Codezeilen
doch schon eine Weile her. Auch verbringen sie in der Regel keine 8-16 Std am Tag mit Softwareentwicklung. Können
Sie somit auf dem gleichen Stand sein wie der Softwareentwickler ?
Ich behaupte: Nein !
Wenn man sich nun anschaut wie die Anforderungen an Software
im Allgemeinen vor 10 oder 20 Jahren aussahen, hat das mit heutiger
Softwareentwicklung nichts mehr zu tun.
Aus simplen EAV Consolen Anwendungen wurden Datenbank Windows
Anwendungen, aus diesen wiederum Verteile
Applikationen welche Webservice anbinden und am besten im Internat auf
Desktops, PocketPcs und in Outlook laufen sollen. Und dementsprechend
beeinflussen die Anforderungen auch die Art wie Software entwickelt wird. Oder
würden Sie ein Bau eines Hochhaus genauso angehen wie Sie ein Iglu bauen
würden?
Sehr oft existiert auch ein Art „pseudo Wissen“, das daraus
resultiert dass Motivierte Projektleiter versuchen noch Schritt zu halten und
somit versuchen sich nebenbei Wissen
anzueignen.
Es ist für mich aber ganz wichtig, dass nicht falsch zu
verstehen, denn ein Kundenbetreuer muss meiner Meinung nach auch nicht wirklich
wissen was SOA bedeutet, oder was nun WCF besser macht als „reine“ Webservices.
Denn es gehört doch gar nicht zu seinem Aufgabenbereich. Es wäre in meinen
Augen sogar sehr ineffizient wenn nun alle Chefs, Kundenbetreuer etc. anfängen
würden zu erlenen wie man verteilte Applikationen entwickelt und jeden Tag Zeit
in das erlernen neuer Techniken oder Softwareprodukten stecken würden. Denn der
Bereich der Softwareentwickler ist so groß, dass sich schon die „VollzeitSoftwareentwickler“
spezialisieren müssen und das Leiten einer Firma ist auch nicht gerade Trivial.
Wieso entsteht nun aber überhaupt die Situation, dass die
großen und kleinen „Chefs“ anfangen sich halbwisse anzueignen und wieso passt
die Art Softwareentwicklung nicht mehr zu der Art wie man Software vor 20
Jahren entwickelt hat?
Im Endeffekt würde ich sagen „Features“. Kunden erwarten
mehr. Windows bietet immer mehr Funktionalität und auch wenn viele bei Vista die
Nase rümpfen: „Den Glass Effekt oder die Zoomable GUI oder die Ribbons in
unserer Anwendung zu bekommen wäre schon der Hammer…“.
Durch steigende Informationsmengen steigt auch der Wert der
Informationen und damit auch die Notwendigkeit diese Effizient und Zeitnah
auswerten zu können. Wir sind es gewohnt fast 24h am Tag online gehen zu können
und diese Erwartungshaltung gilt auch auf für die Software die wir erstellen.
Haben wir ein nun ein Tool mit den wichtigsten Informationen, die wir uns
vorstellen können aber dieses Tool sagt „starten Sie mich bitte nur zwischen 9
und 17 uhr“ würden uns doch ein
komisches Gefühl überkommen.
Diese gesteigerten Erwartungshaltungen führen auch zu neuen
Anforderungen in der Software . Auf einmal soll eine alte Win32 Exe auch übers
Internet laufen ? Webservice, Webseite ?
, Vielleicht noch in Outlook integriert, damit man dort direkt seine Aufgaben
bearbeiten kann und achja alles soll am besten gestern Fertig sein… Bei einer
nicht geplanten und 5 oder 10 Jahren alten Anwendung vermutlich nicht mehr
effizient machbar.
Die Entwicklung in der Softwareentwicklung geht eindeutig in
die Richtung
-
Mehr Anforderungen
-
Größere Anwendungen => Komplexere Software
-
Häufig variierende Anforderungen => Flexibler
-
Größere Informationsmengen schneller und
intelligenter abfragen
Auf dem VS2008 Release Event wurde es in der Keynote gesagt
„…Softwareentwicklung verändert sich notwendigerweise …„genau JETZT“.
Bei dieser Weiterentwicklung fehlen aber alle die nicht mehr
aktiv bei der Softwareentwicklung sind, woraus ein implizit unterschiedliches
Verständnis von Software existiert.
Doch was hat dies zur Folge?
Ich sage folgende Punkte sind
Basisanforderungen, die man an eine Softwareentwicklung stellen sollte:
1.
Vertrauen.
Denn nur dann kann man effizient arbeiten. Wenn der Consultant der Kontakt zum Kunden hat, zu 100% seinen
Mitarbeiter Vertrauen kann, dass diese Wissen wen man wofür fragen muss, welche
Technologien es zu evaluieren gibt, dann kann sich der Leiter auf seine Arbeit
konzentrieren und man kann sich auf eine definierte Schnittstelle einigen die
dafür sorgt dass aus Kundenwünschen, Anwendungen entstehen.
2. Planung geplante Software kann die
Flexibilität steigern und auch die Komplexität für andere Entwicklern deutlich verringern.
3. Architekt Gerade bei größeren
Anwendungen halte ich es inzwischen für notwendig, dass es eine Zentrale Stelle
für Planungen in der Softwarearchitektur gibt. Die Person an dieser Stelle
sollte bei jeder neuen Anforderung der primäre Ansprechpartner sein. Der
Architekt kann dann entsprechend des Themen Bereiches die betroffenen
Entwickler hinzu ziehen,
4. Spezialisierung Chefs und Kunden Betreuer
sollten sich auf ihr jeweiliges Gebiet spezialisieren und von einander profitieren.
Eine Mischung ist für beide Position Ineffizent. Es muss lediglich ein
gemeinsamer Kommuninkationsweg gefunden werden
5. Konstruktive Kritik Jedes Teil des
Teams sollte offensiv und konstruktiv Kritik suchen und geben um so
Schwachstellen in der Planung und Umsetzung von Softwareprojekten zu finden.
In diesem Sinn geht eine Veränderung fast Geisterhaft um.
Die Änderung von intuitiver Softwareentwicklung zu einer geplanten. Doch gerade
die Entscheidungsträger die solche Strukturen formen müssen sind in den meisten
Fällen nicht auf dem technischen und „erahnen“ höchstens die Vorteile.
Es gab nie (und wird es wohl auch nie
geben) eine Schlagzeile die sagt: „Ab
morgen geplante Software!“
Kein Wachrütteln, kein Alarmton, Kein Kampfschrei,…. deswegen
wird wohl in den meisten Fällen der Leidensdruck entscheidend sein ab wann nun
Software geplant und nach Standards entwickelt wird.
Schlimmer noch es gibt nicht einmal „Die Lösung“ wie man Software
entwicklen sollte wodurch nicht nur jeder selbst in der Verantwortung zu lernen
ist sondern selbst auch in der Verantwortung ist herauszufinden ob es etwas zu
lernen gibt.