Die Verwendung von UML ist wie das Betrachten Ihrer Füße beim Gehen. Es macht bewusst und explizit etwas, was Sie normalerweise unbewusst tun können. Anfänger müssen sorgfältig überlegen, was sie tun, aber ein professioneller Programmierer weiß bereits, was sie tun. Meistens ist das Schreiben des Codes selbst schneller und effektiver als das Schreiben über den Code, da ihre Programmierintuition auf die Aufgabe abgestimmt ist.
Es geht aber nicht nur darum, was Sie tun. Was ist mit dem neuen Mitarbeiter, der in sechs Monaten kommt und den Code auf den neuesten Stand bringen muss? Wie sieht es in fünf Jahren aus, wenn alle, die derzeit an dem Projekt arbeiten, verschwunden sind?
Es ist unglaublich hilfreich, für jeden, der sich später dem Projekt anschließt, einige grundlegende, aktuelle Dokumentationen zur Verfügung zu haben. Ich befürworte keine vollständigen UML-Diagramme mit Methodennamen und -parametern (viel zu schwierig zu pflegen), aber ich denke, dass ein grundlegendes Diagramm der Komponenten im System mit ihren Beziehungen und ihrem grundlegenden Verhalten von unschätzbarem Wert ist. Sofern sich das Design des Systems nicht drastisch ändert, sollten sich diese Informationen nicht wesentlich ändern, selbst wenn die Implementierung optimiert wird.
Ich habe festgestellt, dass der Schlüssel zur Dokumentation die Moderation ist. Niemand wird 50 Seiten ausgewachsener UML-Diagramme mit Konstruktionsdokumentation lesen, ohne ein paar Seiten einzuschlafen. Andererseits würden die meisten Leute gerne 5-10 Seiten einfacher Klassendiagramme mit einigen grundlegenden Beschreibungen erhalten, wie die System wird zusammengestellt.
Der andere Fall, in dem ich UML als nützlich empfunden habe, ist, wenn ein leitender Entwickler für das Entwerfen einer Komponente verantwortlich ist und das Design dann einem Junior-Entwickler zur Implementierung übergibt.