Seit etwa 10 Jahren verdiene ich meine Brötchen mit Softwareentwicklung. In meinem ersten Projekt habe ich VB-Dialoge gebaut, die die Daten die man dort eingab in SQL-Statements einwickelte und in die Datenbank steckte. Dann bin ich nach Amerika gegangen und habe das selbe dort gemacht. Dann habe ich Java gelernt und habe das selbe in Java gemacht. Dann wurden Webanwendungen hip und ich habe es mit Webanwendungen gemacht. Momentan mache ich das gleiche mal zur Abwechslung wieder mit Swing. Und es hat sich nichts geändert.

Ok, ok. Es hat sich ne Menge geändert. Die Generierung von SQL Statements übernimmt Hibernate für mich. Dafür ist die Konstruktion einer brauchbaren GUI in Java immer noch eine Quälerei verglichen mit VB, zumindest wenn es um 08/15 Anwendungen geht. Und natürlich hat jedes Projekt seine besonderen Herrausforderungen. Was aber einfach fürchterlich nervig ist: Ich muss mich immer noch von Hand darum kümmern, das gewisse Standards eingehalten beziehungsweise umgesetzt werden.

Von Hand muss ich dafür sorgen, dass die Buttons nach einem einheitlichen Prinzip angeordnet werden.

Von Hand muss ich dafür sorgen, dass die Tab-Reihenfolge Sinn macht.

Von Hand muss ich dafür sorgen, dass Texte übersetzt werden.

Von Hand muss ich dafür sorgen, dass Label und entsprechende Steuerelemente vernünftig zueinander angeordnet sind.

Von Hand muss ich dafür sorgen, dass Enums in Comboboxen zur Auswahl angeboten werden und Strings in Textfeldern eingegeben werden können und nicht umgekehrt.

Von Hand muss ich dafür sorgen, dass Fehler sinnvoll abgefangen werden und die Anwendung nicht töten.

Der Datenbankseitige Teil von CRUD wird zwar von Hibernate übernommen, aber die Anbindung an die GUI geschieht noch immer imperativ und manuell, anstatt deklarativ und automatisch.

All dies könnte auf Basis von normalen Javaklassen und ein paar Annotations generiert werden. Für Standardanwendungsfälle gäbe es dann nicht mehr zu tun, als ein POJO Klassenmodell zu bauen und die Properties mit einigen Annotations zu versehen, um die Detaillinformationen zu liefern, die nicht direkt aus dem Code ableitbar sind, wie z.B. ob eine Referenz sinnvoller Weise per Combobox zu editieren ist, oder ob ein separater Suchdialog mehr Sinn macht, da aus tausenden von Alternativen gewählt werden muss.

Für vieles von den oben genannten Aufgaben gibt es Frameworks und Libraries die die Arbeit für mich übernehmen oder sie zumindest erleichtern, aber erstens gibt es keinen de Facto Standard für die einzelnen Aufgaben und schon gar kein Applikationsframework für all diese Problem, welches es mir erlaubt diese Dinge einfach und deklarativ zu beschreiben. Softwareentwicklung ist, als wären wir Tischlermeister, die wunderbare Möbel auf Kundenwunsch bauen. Wer sich einmal Möbel beim Tischler hat bauen lassen, weiß das diese wunderschön und funktional sein können, aber mit Sicherheit auch ziemlich teuer sind. Und wer versucht hat, einen nicht trivialen Schrank aus Holzplatten selbst zu bauen, weiß das ein IKEA Schrank eine herrlich praktische Sache ist.

Wir brauchen IKEA Schränke für die Softwareentwicklung. Was wir von den Gurus der Wiederverwendung bekommen sind Akkuschrauber, Leim und Sperrholzplatten. Natürlich kann man damit mehr verschiedene Schränke bauen als mit einer Kiste Billy. Aber verdammt viele Kunden brauchen nicht mehr als die Wahlmöglichkeit wo sie die Regalböden einhängen können. Und wenn dann wirklich eine Steckdose droht hinter dem Regal zu verschwinden, kann man immer noch mit der Stichsäge ein Loch in die Rückwand machen.

Also mein Wunsch für die nächsten Jahre: Mehr Frameworks, die weniger Flexibilität bieten, und mehr Dinge auf sinnvolle Weise festlegen ohne den Anwender sprich Entwickler groß mit Optionen zu belästigen. So wie man zwei Dutzend Billyregale an einem Tag aufbauen kann, sollte es mit solchen Framework möglich sein eine Anwendung mit 20 Masken/Tabellen an einem Tag zu bauen. Dafür müssen die Frameworkbauer ihren Beruf allerdings ein wenig anders interpretieren. Viele sehen als das wichtige in einem Rahmenwerk die Freiräume zwischen den Streben an, in denen sich der Künstler - Entschuldigung der Softwareentwickler - sich verwirklichen kann. Ich denke viel wichtiger sind die Streben, die ein Stabiles Gerüst bieten und die Form fast vollständig definieren.

Aber eins sollte auch klar sein. An dem Tag, an dem ich ein solches Framework habe, werde ich zur Stichsäge greifen :)