Werkzeuge

Sprachen

Java

Java war in den letzten 20 Jahren sehr erfolgreich. Es ist eine recht einfache Sprache und für sehr viele Aufgaben gut geeignet. Seit meinem Studium habe ich mich immer wieder intensiv mit Java beschäftigt. Die Lizenzpolitik von Orcacle in den letzen Jahren sorgt bei mir allerdings für Kopfschütteln. Wenn man in die Cloud möchte, sollte die Lizenzfrage sehr früh geklärt werden. Es gibt auch gute freie Alternativen.

Scala

Scala läuft in den meisten Fällen auf einer Java Virtual Machine (und eher selten auf Javascript). Warum also Scala und nicht direkt Java? Zum Beispiel, weil der Code sehr viel kompakter ist, weil es eine deutlich stärkere Collections API hat, weil es mit Akka sehr gut für parallel laufenden Code gewappnet ist, weil man funktional und/oder objektorientiert arbeiten kann, ... .
Scala war in den letzten 10 Jahren in vielen Bereichen ein Vorreiter für Java.

Rust

... ist seit 2016 die beliebsteste Sprache bei Programmierern - laut Stackoverflow. Auch Mircrosoft ist an der Sprache interessiert und schreibt Teile des Windowskerns um auf Rust(!). Im Linuxkern hat Rust inzwischen als zweite Sprache neben C Einzug gehalten - C++ blieb dies verwehrt. Das Alleinstellungsmerkmal schlechthin ist wohl das Speichermanagement, dass ohne Garbage Collection auskommt und ein neues Konzept für die Freigabe von Speicher einführt. Hierbei sind Speicherüberläufe oder versehentliche fehlerhafte Zugriffe auf den Speicher nicht mehr möglich. Diese Art von Fehlern machen laut Microsoft 70% der Sicherheitslücken in Windows aus. Die Performance von Rust ist verlgeichbar mit C++ und noch deutlich besser als bei Go und erst recht als bei Java. Aussergewöhnlich gut ist auch die Dokumentation in Rust und hervorzuheben ist auch der freundliche Umgang in der Community. Rust bietet keine Vererbung, sondern arbeitet mit Traits, was meinen Leitsatz 'Single Point of Maintenance' sehr fördert. Mit Traits kann man nicht nur den selbstgeschriebenen Code erweitern, sondern ohne jegliche Klimzüge auch die Standardkomponten der Sprache selbst. In Deutschland ist der Einsatz von Rust noch selten - in den USA aber nicht. Dort wird Rust inzwischen an vielen Unsiversitäten gelehrt. Auf das Potential von Rust deutet nicht zuletzt auch die Liste der Mitglieder der Rust Foundation hin, sie liest sich wie das Who 's Who der IT: AWS, Google, Huawei, Meta, Microsoft ... .

Go

Wenn Google eine Sprache so sehr fördert, wie es bei Go der Fall ist, dann sollte man sich die Sprache anschauen. Die Fehlerbehandlung sowie die vielen return Statements in einer Funktion sind für Java/Scala Entwickler ebenso ungewohnt wie die Umsetzung von Interfaces. Allerdings finde ich die impliziten Interfaces sehr gelungen. Der Compiler ist wirklich sehr schnell - er hat gleichwohl auch ungleich weniger zu tun, als z.B. der Scala Compiler. Der Startzeiten für Programme und Performance sind ebenfalls gut. Einerseits ist dies in Zeiten von Cloud und insbesondere Serverless ein großer Vorteil gegenüber Sprachen, die wie z.B. Java oder Scala auf einer Virtuellen Maschine laufen. Andererseits lädt dies zu Test Driven Development ein.

Tools zur Visualisierung

Die Kommunikation zwischen Fachbereichen und der IT ist - schwierig. Das Vokabular ist hüben wie drüben ein anderes, die Sicht auf die Dinge erfolgt von anderen Standpunkten aus, die Ziele sind unterschiedlich, ... . Um ein Problem zu lösen, ist es sehr hilfreich, ein gemeinsames Verständnis für die Motivation des Auftraggebers zu entwickeln.
Ein Bild sagt mehr als tausend Worte, dem entsprechend ist Visualisierung eine gute Möglichkeit, die Kommunikation zu vereinfachen und zu verbessern. Die folgenden Tools können hierbei helfen.

Archimate

"Archimate is an open and independent enterprise architecture modeling language to support the description, analysis and visualization of architecture within and across business domains[1] in an unambiguous way." (Wikipedia)

Das klingt auf den ersten Blick vielleicht etwas übertrieben. Ist es aber nach meiner Meinung nicht. Der Grundgedanke ist, sich auf wenige, standardisierte Sichten zu beschränken und die Kommunikation für alle Beteiligten zu vereinheitlichen.

Draw IO

Das Tool für alle Arten von Visualisierung. Ob Charts oder Ablaufpläne oder eine Skizze der eigenen Wohnung - für fast alles gibt es Vorlagen. Und sollte es wirklich mal keine Vorlage geben, kann man selbst eine anlegen.

PlantUML

Insbesondere unter Entwicklern ist das Tool hilfreich - sein textbasierter Aufbau und gerade die limitierten Möglichkeiten sorgen für schnellen Fortschritt. Weniger ist manchmal mehr.

Markdown & TXT

Ich habe oft miterlebt, dass proprietäre Formate an unterschiedlichsten Stellen eingesetzt wurden. Dies führte teilweise zu einem Vendorlock - einer Abhängigkeit zu einem Hersteller. Wo immer es möglich ist, bevorzuge ich daher den Einsatz von unabhängigen Formaten wie Markdown und einfachen Textdateien.

Dass diese einfachen Formate zu herausragender User Experience führen kann, zeigt z.B. das Tool Obsidian eindrucksvoll. Auch diese Webseite wurde übrigens aus Markdown generiert ;-).