Einführung
In moderner Software Prinzipien hören wir oft das Wort einfach, keep it simple stupid (KISS) zum Beispiel, aber was bedeutet "einfach" wirklich bedeutet? Ich habe beschlossen, dieses Thema zu recherchieren und veranstaltete eine Diskussion, um herauszufinden, was die Branche unter einer einfachen Lösung versteht ist im heutigen Klima. Aus meiner eigenen Erfahrung, Forschung , und Diskussionen habe ich eine Arbeitsdefinition für "einfach" gefunden, die in ein Akronym verpackt wurde, denn wir alle wissen, dass die Softwarebranche ein gutes Akronym liebt.
EINFACH
S - Geradlinig
I - Iterativ
M - Verwaltbar
P - Einziger Zweck
L - Lesbar
E - Erweiterbar
Unkompliziert
Tie einfachere es zu erklären ist, desto einfacher ist es zu zu verstehen. Jede Unklarheit in den Anforderungen führt zu Unklarheiten bei der Implementierung. Lösungen sind immer eine Reise von Punkt a zu Punkt b. Denken Sie an die moderne Softwareentwicklung, bei der es meist darum geht, Daten zu empfangen, sie umzuwandeln und sie an den nächsten Teil des Systems zu senden. Je schwieriger die Reise zu erklären ist, desto schwieriger wird es sein, den Überblick zu behalten. Die Definition einer prägnanten, direkten und begrenzten Lösung innerhalb der richtigen Grenzen wird zu einer besseren Implementierung führen.
Iterativ
Sobald Sie eine klare Beschreibung des Problems und der Lösung haben, seek das Minimum lebensfähiges Produkt (MVP). Wenn Sie die Einstiegshürde senken, können Sie schneller Werte schaffen. Wie oft erleben wir, dass großartige Ideen mit echtem Geschäftswert durch einen zu großen Umfang verwässert werden? Was als einfache Idee beginnt, wird schnell eine unerreichbares utopisches Durcheinander einer großen Illusion. Iterativ bezieht sich auch auf die Art und Weise, wie Sie etwas tun. Lösungsdesign ist mehr als nur das Schreiben von Software. Wenn Sie auf eine Art und Weise arbeiten, die Sie konsequent wiederholen können, schaffen Sie Vertrauen in den Prozess und tragen dazu bei, dass er innerhalb der Organisation transparent bleibt.
Überschaubar
Bei der Entwicklung einer Lösung gilt: Je transparenter sie innerhalb Ihres Unternehmens ist, desto einfacher ist sie zu verwalten. Eine einfach verwaltete Lösung umfasst mehr als nur Code oder Infrastruktur. Wie sich im Laufe der Jahre gezeigt hat , Menschen, Transparenz und technologische Entscheidungen werden zugunsten dessen, was gerade im Trend liegt oder einfach ist, vernachlässigt. Ein großartiges Beispiel dafür ist die übermäßige Verwendung der Mikro-Service-Architektur. Wenn man über Mikrodienste nachdenkt, ist es leicht, darüber nachzudenken, dass kleinere Teile weniger kompliziert sind - genau diesen Punkt habe ich oben erwähnt - oder dass die Parallelisierung von Arbeitsabläufen die Leistung steigern würde, aber was ist mit der Verwaltung dieser kleineren Dienste? Wenn Sie ein Team mit nur wenigen Mitarbeitern haben, ist es dann sinnvoll, eine große Anzahl von Diensten zu haben? Meiner Erfahrung nach ist das nicht der Fall. Ich sehe, dass viele Teams Schwierigkeiten haben, Werte zu schaffen, weil sie an die Wartung gebunden sind. Ich selbst bin in genau diese Falle getappt, als ich eine Microservice-Architektur entwickelt habe.
Einfacher Zweck
Lösungen müssen einen Zweck haben, um ein Problem zu lösen. Meiner Erfahrung nach beginnt die Entwicklung einer neuen Funktion oder eines neuen Systems in der Regel mit einer großen Idee, die keine Grenzen hat und nicht klar ist. Oft wird in solchen Situationen eine großartige Idee präsentiert , und nach ein paar Sitzungen haben wir den ursprünglichen Zweck der Idee verloren und haben nun mehrere verschiedene Zwecke. Ideen erzeugen andere Ideen, was gesund ist und erwartet wird, und es ist nichts Falsches daran, wenn neue Ideen aus anderen entstehen. Problematisch wird es dann, wenn Sie mehrere Ideen im gleichen Lösungsraum aufgreifen. In diesem Fall sollten Sie lieber mehr als eine Lösung haben und jede davon auf ihren ursprünglichen Zweck beschränken. Wenn Sie diesen Punkt erreichen, wird die Lösung klar und einfach zu handhaben.
Lesbar
Lesbarkeit ist subjektiv, insbesondere in der Softwarebranche. Unterschiedliche Programmier-, Fach- und Geschäftssprachen erhöhen unsere kognitive Komplexität. Eine einfache Lösung sollte im Kontext der Domäne leicht zu lesen und zu verstehen sein. Das Ziel von Domain Driven Development (DDD) ist es, eine allgegenwärtige Sprache für einen Bereich zu schaffen. Ich schlage vor, noch weiter zu gehen und dies auch auf das Lösungsdesign auszuweiten. Wenn Sie die Lösung auf hohem Niveau beschreiben, sollte jeder verstehen können, was sie bedeutet. Bei der Wahl der Programmiersprache oder Technologie, die für die Lösung verwendet werden soll, kann man sich leicht dazu verleiten lassen, die neuesten Trends zu verwenden. Neue Tools bieten zwar vielleicht insgesamt gute Lösungen, wenn Ihr Unternehmen diese Programmiersprache nicht verwendet oder nicht über die Mittel verfügt, sich in die neue Technologie einzuarbeiten, führt dies zu einem höheren Grad an Komplexität. Bei der Entwicklung der Software selbst , Die Verwendung von bekannten Mustern erhöht die Lesbarkeit des Codes und verringert somit die kognitive Belastung, die erforderlich ist, um über die Funktionalität nachzudenken.
Erweiterbar
Es gibt viele Denkansätze darüber, in welchem Zustand wir eine Lösung belassen sollten, um sie als vollständig zu betrachten. Erweiterbar zu sein bedeutet nicht, dass sie im erweiterten Zustand sein sollte, sondern eher, dass man sie für Erweiterungen offen halten sollte. Wenn es einen klaren Weg gibt, eine Lösung in der Zukunft zu erweitern, dann kann man auf einfache Weise über die Evolution nachdenken. Nicht alle Weiterentwicklungen sind von Anfang an offensichtlich. Anstatt sie um der Weiterentwicklungen willen zu erweitern, sollten wir uns bemühen, die Tür zu einem Evolutionspfad nie zu schließen. Das bedeutet nicht, dass sich ein Inventardienst zu einem Anmeldedienst entwickeln sollte. Es bedeutet lediglich, dass sich die Inventarisierung im Kontext der Domäne im Laufe der Zeit ändern könnte und wir die natürliche Entwicklung dieser Domäne nicht behindern wollen. Erweiterbar statt erweiterbar, weil wir nie wissen, wie sich die Geschäftsanforderungen im Laufe der Zeit entwickeln.
Nachforschungen
Vor kurzem habe ich eine Sitzung bei Xebia Wissensaustausch und Ich habe einer Gruppe von 24 Personen aus unserer Branche diese Frage gestellt. Ich habe sie in 6er-Gruppen aufgeteilt und dabei das Format der befreienden Strukturen verwendet. Dabei stellte ich fest, dass die folgenden Wörter verwendet wurden, um zu beschreiben, was einfach für sie im Zusammenhang mit dem Lösungsdesignraum bedeutet.
Gruppe 1
- Effektiv/Effizient
- Geringe Regeln/kognitive Belastung
- Kontextuell
Gruppe 2
- Verständlich
- Intuitiv
- Kompakt
Gruppe 3
- Keine ungenutzte Funktionalität
- Geringe Interaktion
- Kohäsiv
Gruppe 4
- Folgt dem Muster
- Klein
- Erklärbar
Gruppe 5
- Einfach ≠ leicht
- Anpassungsfähig
- Atomic
Gruppe 6
- Unübersichtlich
- Strukturiert
- Unkompliziert
Diese Sitzung erwies sich als eine wirklich interessante Diskussion, da der allgemeine Konsens sehr nahe an meinen eigenen Vorstellungen lag und jeder eine Definition hatte, die er verstand und verwendete. Die wichtigste Erkenntnis für die Gruppe war, dass einfach ≠ leicht ist. Zweitens war die größte Diskrepanz zwischen meinen eigenen Ideen und denen der Gruppe, dass sie keine iterative Idee hatten, das Problem in kleinere, wiederholbare Teile zu zerlegen.
Fazit
Ich kann schlussfolgern, dass, obwohl wir alle unterschiedliche Worte benutzen, um "einfach" zu beschreiben "einfach", haben wir alle eine sehr ähnliche Vorstellung davon, was es bedeutet. Es fehlt jedoch an einer klaren Definition. Die obige Definition ist ein Tropfen auf den heißen Stein, der den Fokus darauf lenkt, was wir wirklich als einfach betrachten wollen, wie sich das auf unsere Branche auswirkt und wie wir alle danach streben sollten, einfache Lösungen zu schaffen. Die Das Hauptproblem bei der Verwendung von Sprache zur Beschreibung von Sprache ist, dass wir jedes Wort herausgreifen und in seine Bedeutung eintauchen können, denn Sprache ist subjektiv. Anstatt also zu viel über jedes einzelne Wort nachzudenken, dient das Akronym, das ich bereitgestellt habe, als Referenzpunkt. Jedes Wort basiert auf auf Erfahrungen, die ich in der Lösungslandschaft gemacht habe und denke, dass viele andere diese Erfahrungen teilen. Ich glaube, dass wir auf dieser Grundlage bessere Lösungen für die Zukunft finden werden.
Diese Idee entstand aus einer Untersuchung und einer Diskussion. Ich möchte daher jeden, der dies liest, ermutigen, einen Kommentar zu hinterlassen. Ich würde gerne hören, was Sie denken "einfach" bedeutet?
Verfasst von

Jethro Sloan
Unsere Ideen
Weitere Blogs
Contact
Let’s discuss how we can support your journey.




