Viele Programmierer, die ich getroffen habe, sagen immer: "Er ist kein UI-Typ." Tatsache ist, dass die Entwicklung heutzutage, egal ob Web, Windows, Linux, OSX oder jede andere Art von Entwicklung, Software mit einer gut aussehenden Benutzeroberfläche umfasst. Warum scheinen so viele Entwickler die UI-Arbeit nicht zu mögen?
user-interface
zero95teen
quelle
quelle
Antworten:
Ich bin auch keine UI-Person. Nun, ich mache UI in meinen eigenen Projekten, aber bei der Arbeit habe ich nichts damit zu tun - meine Arbeit liegt im Bauch der App, nicht im Frontend.
Darüber hinaus denke ich, dass es mehr Langeweile als Hass ist. Das Entwerfen der Benutzeroberfläche ist der schwierige und herausfordernde Teil. Die Umsetzung ist meist Grunzarbeit. Es gibt nur sehr wenige Herausforderungen oder Neuerungen bei der Implementierung einer Benutzeroberfläche, und es gibt nur so viele Male, in denen man ein Kontrollkästchen auf dem Bildschirm platzieren kann, bevor man sich etwas überlegt. Dabei geht es nicht einmal darum, Stunden damit zu verbringen, Pixel "nur so" auszurichten.
quelle
Das Erstellen einer guten Benutzeroberfläche erfordert viele andere Fähigkeiten als das Schreiben von Backend-Code.
Back-End-Anforderungen können normalerweise wie eine Blackbox angegeben werden, x geht ein und es wird erwartet, dass y herauskommt. Damit es funktioniert, müssen Sie die Logik implementieren, und Sie können programmgesteuert testen, ob es funktioniert oder nicht.
Um eine gute Benutzeroberfläche zu erstellen, müssen Sie Benutzerfreundlichkeit, visuelles Design, Layout und Dinge wie Farbschemata berücksichtigen. Ein bisschen künstlerische Kreativität ist hier ein Bonus, und viele Programmierer haben nicht das Gefühl, dass sie dies haben. Für ein logisches Gehirn mag die Lösung eines UI-Problems subjektiv erscheinen, da es keine richtige Antwort gibt oder es keinen einfachen Weg gibt, um zu bestätigen, dass es „richtig“ gemacht wurde.
Ich denke, viele Programmierer, die nicht viel Erfahrung mit der Benutzeroberfläche haben oder nicht viel darüber recherchiert haben, wissen nicht, dass es Regeln und wissenschaftliche Erkenntnisse gibt, die sowohl aus Sicht der Benutzerfreundlichkeit als auch des Designs (z. B. Farbe) für ein gutes Benutzeroberflächendesign sprechen Theorie).
Natürlich haben einige Programmierer kein Problem mit diesem Aspekt, aber sie hassen es, weil viele Benutzeroberflächen nur langweilig im Code sind. Sie können aus vielen sich wiederholenden Arbeiten bestehen, wie Seiten mit Formularen für Verwaltungsseiten, auf denen sie nur funktionsfähig sein müssen und es keine Designherausforderung gibt.
quelle
Menschen haben einfach unterschiedliche Interessen. Einige Programmierer interessieren sich mehr für Datenstrukturen und Algorithmen, andere für Architektur, andere für Benutzerfreundlichkeit und UI-Design - oder eine Kombination dieser und anderer Nischen. Sie erfordern jeweils unterschiedliche Fähigkeiten und unterschiedliche Denkweisen in Bezug auf ein Problem. Wenn Sie die einfachen Funktionen der Programmierung mögen, interessiert es Sie vielleicht nicht so sehr, wie der Benutzer denkt, oder umgekehrt.
Persönlich falle ich in das letztere Lager - ich würde viel lieber eine Benutzeroberfläche als einen komplexen Algorithmus entwerfen. Genau das finde ich interessant.
quelle
Ob ein bestimmtes UI-Design gut oder schlecht ist , ist ziemlich subjektiv , was ich für Programmierer im Allgemeinen unattraktiv finde. Ein paar Jahrzehnte des Bemühens, gute UI-Techniken zu quantifizieren und zu qualifizieren, haben dazu beigetragen, einige allgemeine Regeln zu erstellen, die angewendet werden können. Meistens ist jedoch eine Menge A / B-Tests und andere Benutzerbeobachtungen erforderlich, um wirklich festzustellen, ob eine UI von Nutzen ist Techniken.
Obwohl die Programmierung sicherlich subjektiv ist, können Sie in der Regel auf eine Art objektiver Gründe hinweisen, warum eine Auswahl besser ist als eine andere: Ausführungsgeschwindigkeit, Speicherbedarf, Flexibilität zur Erfüllung zukünftiger Anforderungen, Verfahren, die sich nachweislich als effektiver erwiesen haben Die Verteidigung einer bestimmten UI-Wahl - und damit auch die Entscheidung selbst - wird häufig zu "Ich mag es" degradiert, was eine ganz andere Art von Argument ist.
quelle
Ich persönlich mag keine UI-Entwicklung, weil ich nicht gut darin bin. Es gibt ein RIESIGES Element der Benutzerpsychologie, das ich einfach nicht gut verstehe. Ich denke, mein größtes Problem ist, dass ich mich nicht in die Lage des Benutzers versetzen kann. Ich weiß nicht, wie man intuitive Layouts erstellt, weil ich nicht weiß, was für den Benutzer intuitiv ist, und auch nicht, wie man Dinge hübsch aussehen lässt.
Ich glaube nicht, dass einige Programmierer es hassen, Benutzeroberflächen so zu entwerfen, wie sie es hassen, Dinge zu tun, in denen sie nicht gut sind. Es kommt einfach vor, dass es viele Entwickler gibt, die nicht gut in der UI-Entwicklung sind.
quelle
Das Problem mit dem UI-Design ist, dass jeder eine Meinung hat ... und es gibt keine richtige oder falsche Antwort. Entwickler hingegen lieben Schwarzweiß und Logik. In Unternehmen jeder Größe wird jeder zustimmen
1+1=2
, aber fragen Sie, welche Schrift das Lesen am einfachsten macht(Comic Sans Obviously)
... machen Sie sich bereit für die Flut. Zehntausend verschiedene Antworten und jeder hat Recht, weil jeder anders ist.quelle
Als Entwickler, der Spaß an der Arbeit an der Benutzeroberfläche hat (insbesondere, weil ich meinen Teil des Webdesigns getan habe), schätze ich es, wenn jemand, der nicht über die erforderlichen Fähigkeiten verfügt, davon Abstand nimmt.
Das Entwickeln erfordert die Fähigkeit, eine Menge Daten im Kopf zu behalten und mit einer Menge gleichzeitig umzugehen. UI-Design erfordert die Fähigkeit, es so minimal wie möglich zu reduzieren, ohne seine Integrität zu beeinträchtigen. Ich liebe die Herausforderung dabei. und ich zucke zusammen, wenn ich sehe, dass jemand eine Benutzeroberfläche erstellt, bei der es sich um nicht verwaltbare Wall-O-Daten auf dem Bildschirm handelt. (Ich bin auch ein absoluter Freak, wenn es um Layout, Farbtheorie usw. geht.)
Auf der anderen Seite hasse ich Low-Level-Sachen. Ich werde niemals Code für Treiber, Kernel oder ähnliches anfassen: shudder: Das überlasse ich den "Nicht-UI-Leuten", und ich bin froh, dass es jemand anderem Spaß macht, oder es würde niemals gelingen.
quelle
Ich denke, es kommt darauf an, dass die meisten Programmierer den linken Teil ihres Gehirns benutzen.
Eine gute Quelle für die weitere Lektüre dieses Themas.
quelle
Die Entwicklung der Benutzeroberfläche wird komplex, weil Sie zu viel Input von den falschen Leuten erhalten. Sie alle sind Experten für Grafikdesign. Sie sind nicht zu finden, wenn Sie die Formel für etwas wissen wollen.
Sie wissen nicht, was sie wollen, wissen es aber, wenn sie es sehen, haben keinen Geschmack, und diejenigen mit Entscheidungsbefugnis werden die Anwendung sowieso nicht verwenden, sind sich aber sicher, dass sie grün sein sollte. Sie befolgen Richtlinien für eine gute Benutzeroberfläche, wie das Begrenzen der Anzahl der Felder in einem Formular, und Sie werden aufgefordert, 50 weitere Felder hinzuzufügen, da sie alle "benötigen" und es zu aufwändig ist, sie auf separaten Registerkarten zu haben. Sie wissen, das gleiche wie Excel. Bauern!
Sie können das nicht erfinden. Ich saß in einer Besprechung, in der die beiden besten Mitarbeiter der Buchhaltungsabteilung (ca. 500.000 / Jahr Gehalt) einer großen Anwaltskanzlei eine halbe Stunde lang über ein Etikett auf einer von den Anwälten verwendeten Abrechnungswebseite stritten. Dies sollte den Anwälten das Verständnis erleichtern. Warum nicht einfach die Anwälte fragen? Zu einfach. Die IT-Abteilung erhält also 50 Telefonanrufe von Anwälten, die wissen möchten, wie hoch der verbleibende Nettorechnungsbetrag bei der WTF ist und warum er auf ihrem Zeiteingabeformular steht.
quelle
Manche Leute mögen Brokkoli, andere nicht. Wir müssen es vielleicht essen, aber wir müssen es nicht mögen und wir werden es nicht genießen, wenn wir es essen. Darüber hinaus werden wir es vermeiden, so viel wie möglich essen zu müssen.
Es gibt eine Menge anderer Dinge zu codieren als nur die Benutzeroberfläche. Webdienste, Windows-Dienste, eingebettet (nicht viel von einer Benutzeroberfläche auf einer Mikrowelle), um nur einige Beispiele zu nennen.
quelle
Dies kann in einigen Fällen daran liegen, dass Tools, die ausdrücklich dafür vorgesehen sind, Ihnen das Zeichnen der Benutzeroberfläche zu erleichtern, tote Babyaffen durch einen Strohhalm saugen.
quelle
Es gibt bestimmte Dinge in der UI-Entwicklung, die schwierig zu korrigieren sind.
Layout ist einer von ihnen. Ich baue seit über 15 Jahren Benutzeroberflächen und habe noch keine vernünftige Lösung für das Layout-Management.
Ein weiteres Problem ist das Ereignis-Routing - selbst bei MVP-Architekturen und von Frameworks vorgeschriebenen Elementen würde ich argumentieren, dass bei den meisten komplexen Benutzeroberflächen Probleme mit dem Ereignis-Routing auftreten.
quelle
Ich weiß, dass ich UI-Entwickler früher hasste, weil ich es sehr mühsam und langsam fand, insbesondere Layout-Code zu schreiben, um Dinge in einer Form oder einem Fenster zu positionieren. Mit UI-Designer-Tools wie dem Forms Designer in Visual Studio macht es mir fast Spaß . Andere Gründe, es zu hassen, die ich von anderen gehört habe, waren "es ist dumm", "es ändert sich immer zu sehr", "es ist nicht anspruchsvoll genug", "es ist mühsam / langweilig".
quelle
Warum entwerfen nicht alle Schachspieler gerne Schachbretter und die Figuren, mit denen sie spielen?
Es ist nicht seltsam, dass manche Leute das nicht mögen ... es ist seltsam, dass Sie erwarten, dass wir das sollten.
quelle
Ich arbeite gerne an der Benutzeroberfläche. Das stimmte nicht immer für mich, aber meine Freude an der Arbeit mit der Benutzeroberfläche hat zugenommen, da ich es in den letzten Jahren besser gemacht habe. Ich weiß, dass einige Entwickler nicht in der Nähe eines Stylesheets oder einer Farbpalette arbeiten dürfen. Es ist definitiv ein anderes Können und nicht jeder hat es.
quelle
Ich hasse UI-Arbeit nicht so sehr wie einige UI-Frameworks. ZB habe ich .NET für> 10 Jahre programmiert. Die Frameworks zum Erstellen von Webanwendungen sind hervorragend (ASP.NET WebForms und ASP.NET MVC). Aber die Frameworks für das Schreiben von Desktop-Anwendungen, nun, ich mag sie nicht (WinForms und WPF).
In dieser Hinsicht ist das Schreiben von GUI-Anwendungen eher ein Aspekt der Verwendung von Frameworks, die ich nicht mag.
Es gibt noch einen anderen Aspekt. Ich arbeite oft mit Anwendungen im "Enterprise" -Stil, dh Anwendungen, bei denen eine Desktop-Anwendung Daten von einem Server empfangen muss. In diesem Fall gibt es so viele Konvertierungsebenen für Daten von einem Format in ein anderes, dass es wirklich langweilig wird.
Beispielsweise erhält die Anwendung Informationen über eine Reihe von DTO-Objekten. Die Anwendung erstellt dann eine eigene Modelldarstellung der Daten (wobei nicht dieselben Domänenklassen wiederverwendet werden, die auf dem Server erstellt wurden). Die Modellklassen werden von einem Ansichtsmodell (in einem WPF MVVM-Muster) verwendet, das die Eigenschaften des Modells verfügbar macht.
Das ist eine Menge Male, dass die gleichen Daten von verschiedenen Klassen dargestellt werden. Und das wird langweilig. Dies ist jedoch ein spezifisches Problem für diese Art von Desktopanwendung.
Es gibt auch interessante Herausforderungen bei dieser Art von Anwendung, z. B. wie wir Änderungen von einem Client erhalten, um sie sofort auf einem anderen Client zu aktualisieren.
quelle
Ich bin aus folgenden Gründen kein großer Fan von UI-Entwicklung:
Als Entwickler haben Sie weniger Gestaltungsfreiheit: Der Kunde kann zu jeder kleinen Facette der Benutzeroberfläche, auf die Sie reagieren müssen, Ansichten und Meinungen abrufen. Sie erhalten Anfragen wie: Ändern Sie die Farbe; Bewegen Sie den Knopf dorthin. Macht nichts, verschiebe es zurück. Der Back-End-Code ist selten so sichtbar.
Die Benutzeroberfläche ist unordentlicher, während das Back-End eher "platonisch" ist. Ich habe zwar hässliche Verwirrungen mit Back-End-Code gesehen, aber ich denke, es ist üblicher, dass er sauber ist (aus Sicht des Codes) als UI-Code. Eine Benutzeroberfläche kann sehr aufgeräumt und gut für den Benutzer gestaltet sein. Da ich jedoch Entwickler bin und mehr Zeit mit dem Code verbringe als mit dessen Verwendung, mag ich es, Code zu bereinigen.
Ich bin der Meinung, dass die Benutzeroberfläche eher ein "Klempner" als ein Back-End ist, dh, es gibt weniger Möglichkeiten für clevere Algorithmen, um Ihr Gehirn wirklich an seine Grenzen zu treiben.
quelle
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.
quelle
Ehrlich gesagt finde ich, dass es ein bisschen PITA ist, das beste GUI-Toolkit zu finden und dann tatsächlich die Vor- und Nachteile davon zu lernen. Ganz zu schweigen davon, dass man im College nicht viel UI-Zeug lernt und ich ein Neuling bin ..
quelle
Abgesehen von dem, was bereits gesagt wurde (es ist mühsam, langweilig und frustrierend, es zu programmieren, und das Design wird normalerweise von jemandem ausgeführt, der keine Ahnung hat, welche Probleme seine Ideen für diejenigen verursachen, die versuchen, sie umzusetzen), ist es ein wichtiger Faktor, dass Sie müssen mit Leuten zusammenarbeiten, deren Ideen sich ständig ändern sollten, weit mehr als für das Backend. Infolgedessen schießen Sie noch mehr gegen eine sich bewegende Spezifikation, und diese Leute neigen dazu, auch Nitpicker zu sein. Ich habe Benutzeroberflächen buchstäblich nicht testen lassen, weil eine Komponente 1 Pixel von dem Ort entfernt war, an dem die Person, die sie getestet hat, dachte, es hätte sein sollen. Hat es funktioniert? Ja. Sah es gut aus? Ja. Aber er fing an, Pixel zu zählen, und irgendetwas war ein einziges Pixel vom Rest entfernt, also schickte er es zur Überarbeitung zurück.
quelle
Noch ein paar Punkte:
1) Das Design der Benutzeroberfläche kann schwieriger zu testen sein. Sie können sicher sein, dass Sie überprüfen können, ob diese Schaltfläche das tut, was sie sollte. Es ist jedoch schwieriger zu testen, ob die Verwendung einfach ist. Wie wäre es mit dem Testen, ob es für jemanden mit einer Behinderung verwendbar ist?
2) Viele Programmierer sind nicht darin geschult und wissen nicht viel darüber.
quelle
Tatsache ist, dass viele UI-Tools / Framework / API schlecht, komplex und weit davon entfernt sind, intuitiv zu sein. Ich habe mit Win32 API in C / C ++, mit javax.swing, CSS usw. entwickelt.
quelle
Als CS-Student lernen Sie Datenstruktur, Datenbank, C ++ ... mit Ausnahme der Benutzeroberfläche. Sie werden es also nicht von Anfang an gut können . Wenn du nicht gut darin bist, wirst du es hassen.
quelle
Nachdem ich an beiden Seiten der Medaille gearbeitet hatte, dh dem UI-Design und dem Backend-Code, stellte ich fest, dass beide Seiten der Medaille im Grunde dasselbe sind.
Anforderungen, die sich von Ihren täglichen Anforderungen unterscheiden, treten nicht immer auf. In Zeiten, in denen sich alle Dienste um CRUD drehen, wird es langweilig.
Wie auch immer, die Codierung des Frontends ermöglicht eine bessere Interaktion und eine verrückte Dynamik, die im Grunde genommen eine unerfahrene Hand in das Frontend-Design steckt. Ich persönlich habe die harte Tour im Frontend gelernt und kann mit Sicherheit sagen, dass das Entwerfen des Frontends weitaus interessanter und herausfordernder ist.
quelle