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.

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 in den letzten Jahren die beliebsteste Sprache bei Programmierern - laut Stackoverflow. Selbst Mircrosoft ist an der Sprache interessiert. 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. Die Performance von Rust ist verlgeichbar mit C++ und noch deutlich besser als bei Go. Aussergewöhnlich gut ist auch die Dokumentation in Rust. Allderings ist das Kompilieren in Rust nicht sonderlich schnell.

Go

Wenn Google eine Sprache so sehr fördert, wie es bei Go der Fall ist, dann sollte man sich die Sprache anschauen. Go hat keine Generics, aber das soll sich bald ändern. 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 sehr 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.