Ich mache sowohl UI (Desktop, nicht Web) als auch interne Eingeweide.
Die Menge, die ich mag oder nicht mag, hängt davon ab, wie viel ich mit so etwas wie einer domänenspezifischen Sprache (DSL) erledigen kann.
In der UI-Domäne ist das, was ich den Benutzern präsentiere, und die Komplexität der Informationen, die ich von ihnen erhalte, so, dass ich verrückt werden würde, wenn ich typische Tools wie Formulardesigner, viele Event-Handler und MVC verwenden müsste , all das "State of the Art" Zeug. Zum Glück habe ich vor Jahrzehnten herausgefunden, was ich für einen besseren Weg halte, nämlich ein DSL dafür zu machen und darin zu arbeiten. Momentan nenne ich es Dynamische Dialoge und es basiert auf einer Kontrollstruktur, die ich Differential Execution nenne . Die gute Nachricht ist, dass der Quellcode für eine bestimmte Funktionalität ungefähr eine Größenordnung kleiner ist, sodass ich viel mehr Funktionen in die Benutzeroberfläche integrieren kann. Die schlechte Nachricht ist, dass ich, so sehr ich versucht habe, es zu lehren, nicht viel Glück hatte, die Technologie zu übertragen.
In der Nicht-UI-Domäne habe ich eine Lehre aus einer Reihe von Produkten gezogen, die als über die Befehlszeile verwendbare DSLs begannen, auf die später eine UI übertragen wurde. Dies gibt dem erfahrenen Benutzer eine Möglichkeit, die Benutzeroberfläche zu umgehen, und dem Gelegenheitsbenutzer etwas, das er ungezwungen verwenden kann. (Beispiele: R, SPlus, Matlab, SAS, WinBugs.) Unser Produkt verfügt daher über eine Befehlszeilensprache für Experten. Ich liebe es, solche Dinge mit einem Parser, einem Codegenerator, einem Precompiler und einer Laufzeitmodellierungs-Engine zu entwickeln. Der Aufwand dafür ist mindestens eine Potenz von 10 weniger als der Aufwand für die Benutzeroberfläche.
Ein Grund für die große Anstrengung der Benutzeroberfläche ist, dass es immer noch viel "Kleber" gibt, der mit DSL nicht möglich ist - Verwalten von Datengittern, Sortieren von Daten aller Art, all das Zeug, das in den gähnenden "Riss" gerät zwischen reiner Benutzeroberfläche und zugrunde liegender Sprache.
Ihre Frage lautete also "Warum hassen einige Programmierer den UI-Teil der Entwicklung?". Ich hasse es nur wegen dieses "Klebers", für den ich kein DSL habe.