Ich habe gerade einen Kunden, der mich auffordert, ein Einschulungssystem zu entwickeln. Dies ist das erste Mal, dass ich diese Art von Herausforderung habe. Die meisten der Software, die ich in der Vergangenheit erstellt habe, sind nicht so komplex.
Ich weiß, dass die meisten von Ihnen komplexe Software erstellt haben, ich möchte nur Ihren Rat dazu. Soll ich zuerst das Frontend oder das Backend designen?
Vielen Dank!
Hier ist eine Zusammenfassung eines Artikels, den ich vor einiger Zeit im Internet gefunden habe. Ich will nur teilen
http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157
Front-End- und Back-End-Entwickler (meine Einstellung)
Meine persönliche Einstellung
Wieder ist es eine Frage des Trainings, einige allgemeine Schlaganfall-Verallgemeinerungen:
Front-End-Entwickler
- In der Regel haben Sie keinen CS-Abschluss oder einen CS-Abschluss von einer Schule der 3. Klasse.
- Arbeiten Sie in Sprachen, die Basic ähneln (siehe PHP ist Basic)
- Visuelle Fähigkeiten beim Konvertieren von Photoshop-Dokumenten in CSS / HTML / etc.
- Hohe Toleranz für iteratives Programmieren aufgrund typfreier Sprachen
Backend-Entwickler
- Haben Sie einen CS-Abschluss oder viel Erfahrung
- Gehen Sie systematischer vor, wenn es um Problemlösungen geht
- Es macht nichts aus, Tage damit zu verbringen, das eine Objekt zu finden, das leckt
- Versuche und baue Werkzeuge, um Probleme zu lösen
Antworten:
Wenn Sie hinten anfangen und vorwärts gehen, laufen Sie Gefahr, den Kunden falsch zu verstehen. Da Sie Dinge erschaffen, die sie nicht leicht sehen und verstehen können, können sie nicht leicht prüfen, ob Sie die Anforderungen erfüllen. Dies bedeutet, dass Sie möglicherweise viel Arbeit verschwenden.
Wenn Sie von vorne beginnen und nach hinten gehen, laufen Sie Gefahr, dass der Kunde denkt, dass es fast geschafft ist, wenn Sie nur ein einfaches Formular auf dem Bildschirm zeichnen. Dann fragen sie sich vielleicht, warum es so lange dauert, da Sie es meistens in ein paar Tagen fertig hatten. Sie laufen auch Gefahr, sich selbst in eine Ecke zu malen, wenn Sie feststellen, dass Sie einige komplizierte Arbeiten ausführen müssen, um die Vorderseite mit der Rückseite zu verbinden, wenn ein geeigneteres Frontend einfacher gewesen wäre.
IMO, Sie sollten zuerst daran arbeiten. Schreiben Sie das vordere und das hintere Ende für jede Funktion im System zusammen. Dies gibt dem Kunden eine bessere Sichtbarkeit des Fortschritts und die Möglichkeit, "Nein, das habe ich nicht gemeint" zu sagen, ohne Sie zu sehr zu belasten.
Wenn es sich jedoch um ein sehr umfangreiches Projekt handelt, bei dem Sie die Serverhardware oder die Funktionen einer Software berücksichtigen müssen, auf die Sie sich verlassen (z. B. welche Datenbank Sie verwenden), sollten Sie sich zuerst über diesen Teil Gedanken machen.
quelle
Software hat viele Dimensionen, daher ist ein zu stark vereinfachtes Front-vs-Back eine schlechte Frage und es ist sehr, sehr schwierig, eine vernünftige und nützliche Antwort darauf zu finden.
Eine Ansicht ist die statische Struktur der Daten. In dieser Ansicht gibt es mindestens drei Dimensionen: Architekturebenen ("Front-to-Back"), Anwendungsfälle und Akteure sowie Kosten oder Risiken der Implementierung.
Eine Ansicht ist die dynamische Struktur der Verarbeitung. Auch für diese Ansicht gibt es mindestens drei Dimensionen.
Eine dritte Sichtweise sind die Architekturkomponenten, die auf natürliche Weise in Schichten unterteilt sind, Anwendungsfälle unterstützen und Kosten und Risiken aufweisen.
Ich könnte weitermachen, aber der Punkt ist dies.
Ist ungefähr die am wenigsten nützliche Möglichkeit, das Problem zu betrachten. Die eigentlichen Entwickler - und Ihre Meinung dazu - sind hier sehr, sehr wenig von Bedeutung. Was zählt, ist
Anwendungsfälle und Schauspieler
Logisches Datenmodell zur Unterstützung dieser Anwendungsfälle
Prozess, der als Teil des Anwendungsfalls ausgeführt wird
Komponenten, mit denen Sie die logischen und verarbeitenden Elemente des Anwendungsfalls erstellen.
Aus diesem Grund geben die meisten Leute an, dass Sie Ihr System nach User Story oder Anwendungsfall aufteilen müssen.
Machen Sie keine umfassenden Verallgemeinerungen über Menschen, die sich weiterentwickeln werden.
quelle
Weder. Was muss Ihre App können? Stellen Sie sicher, dass das heiße Ventil heißes Wasser liefert, das kalte Ventil kaltes Wasser liefert, dass das Wasser an erster Stelle fließt, dass Sie die Rohre nach Bedarf verlängern können, und sorgen Sie sich dann darum, dass alle Räume des Hauses tatsächlich mit Wasser versorgt werden sieht eigentlich genau so aus.
Das vordere Ende ist nur eine Maske mit einigen Schaltern und Hebeln. Das Back-End ist nur eine Sache, die Anfragen zum Abrufen und Verarbeiten von Daten empfängt. Erreichen Sie einen Punkt, an dem Sie beide in einer beliebigen Kombination schnell implementieren können.
Aber was auch immer Sie tun, lassen Sie nicht zu, dass das Design des einen das Design des anderen bestimmt. So liegt der Wahnsinn.
Stellen Sie die Tools bereit, mit denen Ihre Entwickler alles bauen können, was sie für Ihre Kunden benötigen, unabhängig davon, wie oft sie es sich anders überlegen. Dann baue es nach Vorgabe und starte es neu, bis die kleinen Flüche endlich glücklich sind.
Auch der Vergleich von Front-End-Entwicklern mit Back-End-Entwicklern im Jahr 2008 ist in den Webjahren lange her. Aus Spaß möchte ich ein paar Dinge zu dieser alten Kastanie korrigieren / hinzufügen, da wir sie in der Frage verlinkt haben, aber auch (hoffentlich) ein paar Tipps einbetten:
Front-End-Entwickler
In der Regel haben Sie keinen CS-Abschluss oder einen CS-Abschluss von einer Schule der 3. Klasse.
Handzeichen. Wie vielen Personen mit CS-Abschluss wurden Best Practices am Frontend beigebracht? Oder wie man kein Chaos mit JavaScript anrichtet? Oder wie man mit CSS-Problemen von IE6-IE9 umgeht? Die Schulbuchbranche, die im akademischen Bereich tätig ist, ist zu faul und aufgebläht, um mit ständig wechselnden Technologien fertig zu werden, sodass sie an den Hochschulen nur sehr wenig „ernsthafte“ Aufmerksamkeit erhält. Dies war hervorragend für Spätzünder wie mich.
Arbeiten Sie in Sprachen, die Basic ähneln (siehe PHP ist Basic)
Weil PHP clientseitige Technologie ist? Oder weil JavaScript, das in erster Linie von Scheme inspiriert wurde, mehr mit Basic zu tun hat als Visual Basic, das jetzt im Front-End keine Rolle mehr spielt und für .NET-Back-End-Webanwendungen nie wirklich verfügbar war, aber immer noch verfügbar ist? Der Blog vergleicht autodidaktische Open-Source-Webentwickler mit CS-Webentwicklern, die an dieser Stelle, wie ich denke, beliebte Technologien für Unternehmen einsetzen. Ich bin auf beiden Seiten dieses Kampfes zu gleichen Teilen auf unerträgliche und kompetente Menschen gestoßen, aber er ist immer noch so weit wie möglich.
Visuelle Fähigkeiten beim Konvertieren von Photoshop-Dokumenten in CSS / HTML / etc.
Mehr Liebe zum Detail als "visuelle Fähigkeiten", die ein bisschen breit sind. Nicht jeder von uns hat irgendwelche ästhetischen Designfähigkeiten. Aber ja, die meisten von uns müssen dieses Zeug auf der Junior-Ebene lernen, und es ist ziemlich wichtig, eine gute Benutzeroberfläche zu schreiben, die keine JS-Hämmer verwendet, wenn CSS-Skalpelle funktionieren.
Hohe Toleranz für iteratives Programmieren aufgrund typfreier Sprachen
Aus diesem Grund möchten Sie die Stücke, die ich zuvor erwähnt habe, zuerst platzieren. Wir geben die gedrückten Knöpfe weiter, Sie produzieren / holen die Ware ab. Wir verpacken und liefern sie. Es gibt keinen Grund dafür, dass diese Dinge in irgendeiner Weise eng miteinander verbunden sind. Tatsächlich sollte strenges Tippen einen iterativen Prozess nicht stören, wenn Sie nicht an OOP saugen, was die meisten Leute, die eine Sprache hochmütig finden möchten, die technisch keinen Unterricht hat, in der Tat normalerweise tun. Aber selbst wenn sie stinken, braucht das Front-End nur einen vorhersehbaren Zugangspunkt und Sie können alles tun, was Sie wollen, solange Sie nicht dumm sind, dynamisch JavaScript zu schreiben, das nicht JSON oder Binden Sie erfolgreiches Back-End-Verhalten eng an die HTML-Struktur, die "nur so" ist. * Husten * Java-Entwickler * / Husten *
quelle
Darauf gibt es keine eindeutige Antwort. Beide Ansätze können in bestimmten Situationen gut (und schlecht) sein.
Ich empfehle Ihnen, den TDD-Ansatz in Betracht zu ziehen, bei dem man sich von (Akzeptanz- und Einheits-) Tests leiten lässt.
Stellen Sie zunächst ein Grundgerüst des Systems zusammen: die Basisinfrastruktur mit der absoluten Mindestfunktionalität. Dies soll nur zeigen, dass Ihr Konzept funktioniert und die verschiedenen Komponenten zusammenarbeiten können. Dies beinhaltet auch eine Bare-Bones-Benutzeroberfläche (falls zutreffend), die gerade ausreicht, um tatsächlich etwas Minimales zu tun und / oder zu zeigen.
Anschließend konkretisieren Sie die Details Feature für Feature : Schreiben Sie einen Akzeptanztest für ein bestimmtes Feature / Szenario, lassen Sie ihn fehlschlagen, und schreiben Sie dann Code, um ihn zu erfüllen. Dadurch arbeiten Sie von außen nach innen : Das System empfängt eine Eingabemeldung. Sie müssen diese Meldung also verarbeiten / konvertieren, etwas damit tun und die Ergebnisse dann an die Benutzeroberfläche weitergeben. Unterwegs entdecken Sie die Domänenkonzepte und stellen sie mit neuen Klassen dar, von der Benutzeroberfläche bis zur Domänenschicht und zurück.
Für diesen Ansatz wird empfohlen, objektorientierte Software zu entwickeln, die von Tests geleitet wird .
quelle
API zuerst
Ingenieure beider Teams sollten an der API zwischen dem Front-End und dem Back-End zusammenarbeiten. Dann können beide Teams mit der entworfenen API arbeiten. Dies hat den Vorteil, dass auch ein anderes Front-End-Team mit der Arbeit beginnen kann (möglicherweise mobil, nach dem Web-Client), und den offensichtlichen Vorteil, dass Teams parallel arbeiten können.
Kombiniere mit einem iterativen Ansatz und sollte so aussehen:
quelle
Beginnen Sie mit dem Frontend, aber zuerst, warum können sie keine Anwendung finden, die bereits existiert? Dies würde weitere Einblicke in dieses Projekt geben. Haben sie spezielle Anforderungen oder glauben sie, dass Sie billiger bauen können?
Verschaffen Sie sich einen umfassenden Überblick über die Sicherheitserwartungen und die gesetzlichen Anforderungen. Ich bin mir nicht sicher, um welche Art von Schule es sich handelt, aber die Informationen der Schüler erfordern normalerweise ein gewisses Maß an Vertraulichkeit.
Wenn die potenziellen Studenten die Daten auf einer Website eingeben, wird das grafische Design ein größeres Problem sein.
Zeichnen Sie auf der Grundlage ihrer Anforderungen Modelle für das Front-End. Wenn Sie der Meinung sind, dass die GUI nicht direkt ist, müssen Sie möglicherweise etwas Funktionales erstellen, damit sie es in Aktion sehen können. Sie sehen die Registrierung möglicherweise als eine Art "Assistent", der je nach Dateneingabe in verschiedene Richtungen verzweigt.
Dann können Sie damit beginnen, Informationen dauerhaft in die Datenbank zu übertragen.
quelle
Ja, ich habe festgestellt, dass das OP vor einiger Zeit gefragt hat. Beginnen Sie am hinteren Ende, aber VERSPERREN Sie das vordere Ende, damit der Benutzer sehen kann, was Sie sich vorstellen. Das vordere Ende, für alles, was es wert ist, ist nur die Glocken und Trillerpfeifen. Das Back-End ist, wo das Geld ist, und wenn Sie das gerade haben, ist die FE nur die Soße über dem Fleisch.
quelle
Erweitere meinen Kommentar:
Sammeln Sie zuerst Anforderungen und setzen Sie sie dann in Use Cases & Design um.
Zuerst folgt eine detaillierte Datenbankdefinition. Es ist mir egal, ob der Kunde es nicht vollständig auslotet, ich zwinge ihn, sich hinzusetzen und es anzuschauen - und sich abzumelden (möglicherweise zwinge ich ihn dann zu erkennen, dass einer ihrer technisch versierteren Jungs dies tun sollte ), bevor Sie fortfahren.
Wie kann man mit FE anfangen, ohne BE? FE für was ??? Definieren Sie Ihre Datenbank !! Das manipuliert die FE.
Ok, es wird Probleme und spätere Optimierungen geben, und ich tun damit einverstanden , dass es gut ist , so schnell wie möglich eine einfache, Probe, GUI vor dem Klienten zu erhalten, da diese bestimmte Spitze des Eisbergs ist , was die meisten die meisten verstehen.
Ich 1) betone jedoch, dass dies nur ein grobes Mock-up für Schweinswale ist, und 2) mache es absichtlich hässlich, aber funktional , so dass diejenigen, die es nicht verstehen, mir sagen können, dass ich das Eingabefeld genau 400px machen soll der Hintergrund hellblau.
Ich bin der Meinung, dass die meisten Antworten hier (und ich habe sie befolgt) sich zu sehr auf den Kunden konzentrieren, aber aus rein s / w-Sicht behaupte ich, dass man eine FE nicht entwerfen kann, um ein BE zu manipulieren, ohne vorher Entwerfen, dass BE.
quelle