Es gibt eine allgemeine Vorstellung bei vielen Business - Anwender und Kunden , dass , wenn es aussieht komplett, es ist fast abgeschlossen. Wie Sie wahrscheinlich wissen, ist dies weit von der Wahrheit entfernt. Man kann es schön aussehen lassen, aber ohne Backend und einige Benutzer denken, dass es 80% der Arbeit ist, es schön aussehen zu lassen, nicht 20% ( oder die anderen 80% ).
Unzählige Entwickler können Horrorgeschichten darüber erzählen - ein Modell der Seiten in Microsoft Word mithilfe von Screenshots eines anderen Tools erstellen und der Kunde sagt: "Also, Sie haben es fast geschafft?"
Sie müssen das Tempo so einstellen, dass alle Teile fertig sind, wenn sie fertig sind. Der Versuch, zuerst das gesamte Backend und dann das gesamte Frontend zu bearbeiten, führt dazu, dass der Endbenutzer denkt, dass Sie nichts tun und fragt, warum Sie bezahlt werden, wenn es nichts zu zeigen gibt. Auf der anderen Seite steht das Front-End an erster Stelle, und der Endbenutzer nimmt wackelige Änderungen vor und verbraucht die ganze Zeit.
Der schlimmste Fall bei einem 'einen zuerst und dem anderen' ist, wenn Sie zu dem anderen Teil gelangen, stellen Sie fest, dass es überhaupt nicht zum Design passt.
Bauen Sie also beide. Zeigen Sie den Fortschritt im Front-End und lassen Sie das Back-End mit dem arbeiten, was Sie erstellen. In vielen Fällen ist es eine gute Idee, inkrementelle Builds bereitzustellen und sicherzustellen, dass Sie das machen, was der Client will (dies wird zu Agile). Zu lange Wartezeiten ohne "sichtbare Fortschritte" können die Kundenbeziehung beeinträchtigen (dies gilt für die beiden Fälle "Alles scheint früh erledigt zu sein" und "Nichts wird bis zum Ende erledigt" die Unit-Tests oder Datenbereinigung als Fortschritt).
Joel schrieb darüber in The Iceberg Secret, Revealed :
Wichtige Folgerung Zwei. Wenn Sie einem Nicht-Programmierer einen Bildschirm zeigen, dessen Benutzeroberfläche zu 100% schön ist, wird er denken, dass das Programm fast fertig ist.
Leute, die keine Programmierer sind, schauen nur auf den Bildschirm und sehen einige Pixel. Und wenn die Pixel so aussehen, als ob sie ein Programm bilden, das etwas bewirkt, denken sie: "Oh Gott, wie viel schwieriger könnte es sein, es tatsächlich zum Laufen zu bringen?"
Das große Risiko besteht darin, dass jeder denkt, dass Sie fast fertig sind, wenn Sie zuerst die Benutzeroberfläche verspotten, wahrscheinlich, damit Sie einige Gespräche mit dem Kunden führen können. Und wenn Sie dann das nächste Jahr damit verbringen, sozusagen "unter der Decke" zu arbeiten, wird niemand wirklich sehen, was Sie tun, und sie werden denken, dass es nichts ist.
Dies wird erneut im Blog-Beitrag wiederholt. Lassen Sie die Demo nicht fertig aussehen , da sie dieses hilfreiche Diagramm enthält:
Beachten Sie hier, dass die beiden Optionen im Allgemeinen das "erledigen Sie die Benutzeroberfläche" (und dann ist zu erwarten, dass Sie bald fertig sind) und das "erledigen Sie das Backend" (und der Kunde ist dann besorgt, dass Sie die Frist verpassen) widerspiegeln.
Das Aussehen von "erledigt" sollte mit dem Aussehen von "erledigt" übereinstimmen.
Jeder Softwareentwickler hat dies in seiner Karriere viele Male erlebt. Aber Desktop-Publishing-Tools bereiten den technischen Redakteuren die gleichen Kopfschmerzen. Wenn Sie jemandem einen groben Entwurf zeigen, der perfekt geschrieben und formatiert ist, wird er als erledigter angesehen, als Sie möchten. Wir brauchen eine Übereinstimmung zwischen dem, wo wir sind und dem, was andere für uns halten.
In diesem Artikel wird auch ein wichtiger Punkt zur Art des Feedbacks angesprochen, das Sie mit den verschiedenen Ebenen der Helligkeit der Benutzeroberfläche erhalten. Wenn Sie etwas haben, das vollständig aussieht, erhalten Sie mit größerer Wahrscheinlichkeit Feedback zu "Könnten Sie die Schriftart ändern?" Als zu "Dieses Layout funktioniert nicht - es gibt zu viele Registerkarten."
Für diejenigen, die in der Java-Swing-Welt damit kämpfen, gibt es ein Look-and-Feel namens Napkin , das es so macht, dass die Benutzeroberfläche nicht vollständig aussieht (selbst wenn es so ist).
Der Schlüssel hier ist, es so zu machen, dass es nicht fertig aussieht . Das vollständige Erscheinungsbild der Benutzeroberfläche ist für viele Geschäftsbenutzer ein Signal dafür, dass die Anwendung vollständig ist (auch wenn es sich nur um ein paar statische Seiten handelt, hinter denen sich keine Logik befindet oder die in einem Interface Builder integriert sind).
Weiterführende Literatur (und Links aus dem Artikel):
Es kommt darauf an: Sie benötigen eine enge Rückkopplungsschleife für Ihre wichtigste Funktionalität
Wenn der Kern dessen, was Sie tun, der riskante und beängstigende Teil, ein interner Motor ist, dann bringen Sie den Kern dazu, dass er beispielsweise in der Konsole oder durch Komponententests funktioniert. Ein Protokollparser benötigt beispielsweise keine Benutzeroberfläche, um zu wissen, ob er ordnungsgemäß funktioniert.
Wenn Ihre coole Sache Interaktivität beinhaltet - Interaktivität, die Sie ständig beheben, wegwerfen und neu entdecken müssen -, dann ist ein UI-First-Ansatz von entscheidender Bedeutung. Ich möchte beispielsweise eine App erstellen, mit der Benutzer mit einer Datenvisualisierung interagieren können. Das Wichtigste, was ich herausfinden muss, ist, ob die Visualisierung aussagekräftig ist. Daher werde ich wahrscheinlich ein halbes Dutzend Ansätze wegwerfen, bevor ich mich auf einen einlasse. Ich mache das alles, bevor ich einen Einzeltest schreibe.
Dazwischen befindet sich ein verschwommener grauer Bereich, in dem Sie entscheiden können, wie Sie am besten mit Ihrem Code interagieren und ihn validieren (automatisierte Tests? Benutzeroberfläche für Experimente?). Ich persönlich habe beide Extreme und alles dazwischen getan, und die Entscheidung, an welcher Stelle ich mich in diesem Spektrum befinde, ist eine der schwierigsten Entscheidungen, die ich treffen muss, und hängt zu 100% von der Art der Dinge ab, die ich baue.
quelle
In einer agilen Umgebung kann es zu Diskussionen über "Laufskelette" oder "dünne vertikale Scheiben" kommen. Die Idee ist, dass Sie die Software Stück für Stück auf eine funktionierende Art und Weise aufbauen, da es für den Benutzer wichtig ist, dass Software funktioniert.
In der von Ihnen erwähnten Beispielanwendung würden Sie mit dem Fenster und möglicherweise einer Registerkarte beginnen und dafür sorgen, dass alles in gewisser Weise von vorne nach hinten funktioniert. Dann würden Sie im Laufe der Zeit von Fall zu Fall Funktionen und daher Registerkarten hinzufügen, damit jedes Feature beim Erstellen funktioniert. Dies ist ein Teil dessen, was Ihnen häufige Kundendemonstrationen bieten: Sie haben die Möglichkeit, etwas Neues zu zeigen und sofort Feedback dazu zu erhalten.
Kurz gesagt, ja, UI-Arbeit ist ein absoluter Bestandteil einer funktionalen Arbeitseinheit, wenn Sie über eine UI verfügen.
Beginnen Sie mit etwas Kleinem, das funktioniert, und iterieren Sie seine Funktionalität, um eine vollständige Software bereitzustellen.
quelle
Ich würde empfehlen, eine Mischung aus Funktionalität und Benutzeroberfläche zu erstellen (und so schnell wie möglich Feedback zu erhalten oder Erfahrungen zu sammeln).
Übrigens, ist es nicht die Art und Weise, wie die meisten großen GUI-Software entwickelt wird? Schauen Sie sich zum Beispiel den Firefox- Browser an: Von einer Version zur nächsten haben sich Funktionalität und Benutzeroberfläche weiterentwickelt.
quelle
In großen (PHP-webbasierten) Anwendungen, an denen ich arbeite, versuche ich zuerst, die Klassen und Methoden einzurichten, die Dummy-Werte zurückgeben . Hiermit wird ein Pseudovertrag erstellt, mit dem die anderen Entwickler die Benutzeroberfläche implementieren können.
Ein sekundärer Vorteil dieser Methode ist, dass wir den Vertrag / die Schnittstelle optimieren können, wenn sich die UI-Anforderungen ändern (und sie ändern sich immer), noch bevor der gesamte Code geschrieben und ausgeliefert wurde.
quelle
Ich tendiere dazu, mit einer beschissenen Benutzeroberfläche zu beginnen : Etwas, das nur die variablen Daten auf dem Bildschirm ausgibt. Keine Schriften, keine Ausrichtung, lange Zeit nichts Grafisches. Nur "Welcome user x" und Buttons mit dem Namen "load pic" usw. Das Gute daran ist, dass Sie herausfinden, ob im Backend etwas kaputt ist.
Mit fortschreitender Entwicklung müssen möglicherweise mehr oder weniger Dinge erledigt werden. Aber irgendwann werden Sie feststellen, dass das Backend fast fertig ist. Jetzt haben Sie eine Benutzeroberfläche, die alle benötigten Anhänge enthält, und Sie können viel Zeit mit den grafischen Arbeiten verbringen.
Achtung, es ist nicht narrensicher. Sie benötigen ein wenig Voraussicht, um bestimmte Probleme zu erkennen. Möglicherweise müssen Sie nach UI-Komponenten suchen, um die Daten sinnvoll anzuzeigen.
quelle
Wenn Sie ein gutes Meilenstein- und Problemverfolgungssystem verwenden, können Sie einige dieser Probleme vermeiden, da das Management auf einen Blick erkennen kann, wie produktiv Sie sind. Sie werden sehen können, dass Sie das Backend zu 80% abgeschlossen haben und dass die Benutzeroberfläche der nächste Meilenstein ist. Sie können sehen, dass Sie eine Reihe von UI- und Backend-Aufgaben haben, die für einen bestimmten Feature-Meilenstein abgeschlossen werden müssen. Aber alles beginnt mit den Anforderungen des Projekts, und die Antwort von Doug T wirft einige gute Punkte in Bezug auf diesen Aspekt des Entwurfs eines Systems auf.
quelle
Denken Sie an die Sicht Ihrer Benutzer / Kunden. Ein Softwaresystem ist eine Sammlung von Funktionen, die den Benutzern / Kunden einen Mehrwert bieten. Natürlich hat jede dieser Funktionen eine Benutzeroberfläche, ein Backend und einige andere Dinge.
Bauen Sie Ihr System immer Feature für Feature auf und teilen Sie es in sehr kleine Features auf. Auf diese Weise sind Sie immer in der Nähe, um Ihren Kunden etwas mehr zu bieten. Denken Sie daran, dass es bei der Softwareentwicklung nicht darum geht, die Version 1.0 zu erstellen, sondern um die Version 1.0.1 bis 1.0.2 und so weiter ...
quelle
Es hängt davon ab, ob. Wie genau sind Ihre Anforderungen definiert? Wie stark ist die Benutzeroberfläche von dem System betroffen?
Nach meiner Erfahrung wissen die meisten Kunden erst, was sie wollen, wenn sie etwas vor sich sehen. Daher stelle ich normalerweise einige Wire-Frames mit wichtigen UI-Aspekten bereit oder stelle den Großteil der UI bereit (funktioniert nicht). Auf diese Weise kann der Kunde seine Meinung zu Features / Funktionen ohne allzu großen Einfluss ändern, da sich das Datenbankdesign und die Codestruktur noch in der Entwurfsphase befinden - es ist einfach, das Design zu ändern. Es ist um Größenordnungen einfacher / schneller, das Design früher im Projekt als später zu ändern.
Agile heißt, Sie sollten auch zuerst an den schwierigsten und wichtigsten Dingen arbeiten. Scheitern Sie schnell . Sobald der Kunde die Benutzeroberfläche gesehen hat, konzentriere ich mich darauf, kleine Komponenten zu erstellen, die voll funktionsfähig sind. Dabei geht es darum, die wichtigsten und am schwierigsten zu implementierenden Komponenten zuerst zu besprechen, damit Sie so schnell wie möglich wissen, ob Sie auf Hürden stoßen.
Dann haben Sie Ihre Sprints und stehen in ständiger Kommunikation mit dem Kunden, um sowohl die Benutzeroberfläche als auch die funktionalen Aspekte zu verbessern.
quelle