Imaginäre Probleme - der Grund für schlechte Software

Die Tatsache, dass es interessant ist, sie zu lösen, bedeutet nicht, dass jemand sie braucht




„Eine Gruppe von Menschen macht ein Brainstorming auf einem Laptop und einem Blatt Papier“, Foto von Stefan Stefanchik von Unspalsh

Es gibt viele Faktoren, die zur Entwicklung schlechter Software führen: Auswahl der Tools, Teamkommunikation, persönliches Desinteresse der Entwickler am Erfolg, Testmethoden. Es scheint mir, dass all dies die Hauptursache hat: Dies sind imaginäre Probleme.

Übermäßig komplexe oder nicht funktionierende Software wurde nicht als solche konzipiert. Es ist einfach für etwas anderes gedacht und nicht für eine echte Aufgabe.

Angenommen, Sie veröffentlichen Podcasts und benötigen eine Website, auf der Sie verwandte Produkte verkaufen, mit Werbung Geld verdienen und vor allem Podcasts, Videos und Blogs veröffentlichen können.

Die Anforderungen für diese kleine Webanwendung sehen möglicherweise folgendermaßen aus:

  • Schneller Download für Nordamerika mit Live-Podcast-Übertragung
  • Keine Ausfälle in den ersten 15 Minuten für 99,99% der Benutzer, vorzugsweise ein völliger Mangel an Ausfällen
  • Gute Integration mit Google AdWords und möglicherweise anderen Anzeigensystemen von Drittanbietern, wenn Sie Zeit haben
  • Dynamische Links zu den neuesten Produkten im Store und, wenn möglich, Empfehlungen an Benutzer basierend auf den angezeigten Seiten.
  • Integration mit Facebook Live Player. Wenn Sie ohne Facebook problemlos eine alternative Streaming-Lösung erstellen können, ist dies sogar noch besser

Sie geben diese Spezifikationen an das Auftragnehmerteam weiter und sprechen ein wenig mit ihnen. Alles scheint auf der gleichen Wellenlänge zu sein. Aber wenn sie in zwei Monaten einen Prototyp zeigen, ist Ihr Gesicht mit Blut gefüllt. Sie haben 15.000 US-Dollar für ein Stück Müll ausgegeben - und möchten Ihr Geld zurückbekommen.

Beim ersten Öffnen friert die Anwendung ein. Sie fragen, wie Sie die Art der Banner auswählen sollen - und sie zeigen Ihnen eine hässliche, unverständliche Benutzeroberfläche. Die Hälfte der Links zu den Waren im Laden ist defekt oder es gibt keine Bilder, und die Live-Übertragung über Facebook bleibt zurück!

Aber das Entwicklungsteam versteht Ihren Ärger nicht. Tatsächlich haben sie es aus ihrer Sicht geschafft, höllisch schwierige Arbeit zu leisten.

Sie haben ihre Seele in die Erstellung der Anwendung gesteckt, sie hat erstaunliche Eigenschaften:

  • Das fortschrittlichste Empfehlungssystem
  • Echtzeit-Textentschlüsselungsalgorithmus für alle Audiostreams
  • Die Startseite wird weltweit schneller als 200 ms geladen
  • Das Streaming-Protokoll und der Client werden fast von Grund auf neu erstellt, es sei denn, Sie möchten sich auf Facebook Live verlassen
  • Es wurde ein Service entwickelt, mit dem sich mehr als 20 Werbebörsen problemlos integrieren lassen

Das Problem ist, dass Sie ein Basisprodukt mit mehreren zusätzlichen Funktionen angefordert haben, sofern diese recht einfach zu implementieren sind. Und das Entwicklungsteam hat das anders verstanden. Sie hörten einige aufregende Aufgaben zu erledigen ... und viele langweilige Grundfunktionen, die nicht viel Aufmerksamkeit und strenge Tests wert sind.

Schlimmer noch, Sie haben nicht direkt mit den Entwicklern kommuniziert - Sie haben über ein beschädigtes Telefon gesprochen. Sie haben mit einem Verkäufer gesprochen, der Besprechungen mit einigen Managern auf mittlerer Ebene abgehalten hat. Sie schrieben einige Geschäftsspezifikationen für den Projektmanager, der die technischen Spezifikationen schrieb - und gaben sie dem Teamleiter oder dem Architekten, und er und sein Team begannen mit der Entwicklung des Produkts. Jede Verbindung führte zu Verzerrungen auf dem Weg.


Imaginäre Probleme sind oft interessanter zu lösen als echte. Menschen mit einem Übermaß an Intelligenz spielen Wettbewerbsspiele, erfinden und lösen mathematische Probleme und schreiben Bücher, um abstrakte Fragen zur menschlichen Natur zu beantworten - und das alles kostenlos, nur zum Spaß. Ein mittelmäßiger Programmierer berechnet Ihnen jedoch wahrscheinlich eine hohe Gebühr für die Erstellung einer einfachen Android-Anwendung. Dies liegt nicht daran, dass mittelmäßige Programmierer schwerer zu finden sind als Genies, sondern daran, dass die ersten Aktivitäten interessant und die letzteren ziemlich langweilig sind.

Die meisten Programmierer wollen bezahlt werden und gleichzeitig Spaß haben. Natürlich ist die Definition von „interessant“ für jeden unterschiedlich, aber für viele Ingenieure kommt es darauf an, interessante und komplexe Probleme im Bereich der Lösbarkeit zu lösen.

Geben Sie einem intelligenten Menschen zu viele langweilige Aufgaben, die nicht automatisiert werden können, und Sie werden ihn am Ende verrückt machen. Das menschliche Gehirn ist jedoch nach Milliarden von Jahren der Evolution sehr erfinderisch geworden, um die Vernunft aufrechtzuerhalten. So wie Opfer von Kinderentzug oder Kindesmissbrauch in Science-Fiction-Büchern Erlösung finden, suchen Opfer von Unternehmensprogrammen und Freiberufler Erlösung bei der Lösung imaginärer Probleme.



Die Anzahl der imaginären Probleme, die ein Softwareentwickler für sich selbst erstellen kann, hängt von seiner Vorstellungskraft und der Komplexität der realen Probleme ab, die gelöst werden müssen.

Es ist zu beachten, dass dieses Problem nicht nur für Entwickler gilt. Management-, Vertriebs-, Personal-, Support-, Rechts- und sogar Buchhaltungsabteilungen - alle haben ihre eigenen einzigartigen Möglichkeiten, um imaginäre Probleme zu schaffen. Einige versuchen, in den Entscheidungsprozess einzusteigen, wenn ihre Anwesenheit bei der Besprechung lediglich eine Formalität ist oder überhaupt nicht erforderlich ist. Andere überschätzen das kleinere Problem, das mit ihrer Rolle verbunden ist, oder beschäftigen weit mehr Mitarbeiter als nötig, um ihre Bedeutung zu demonstrieren.

Wenn Probleme zu dumm sind, werden kluge Leute einen Weg finden, die Situation zu korrigieren.


Imaginäre Probleme kommen aber nicht nur von gelangweilten Entwicklern. Sie resultieren auch aus langen Kommunikationsketten.

Als ich gerade anfing, als Freiberufler nach Kunden zu suchen, konnte ich es mir nicht leisten, nach meinem Ermessen Kommunikation aufzubauen. Also musste ich mich mit langen Mail-Threads mit Hunderten von Briefen befassen, in denen kleinere Details des internen MVP besprochen wurden. Die Leute während der Woche haben jede Anforderung im Projekt geändert. Ich hatte Kunden, die solche Fragen stellten: "Wird es mit dem ICO kompatibel sein?" oder "Kann ich hier etwas KI hinzufügen?"

Natürlich haben die meisten Kunden genug Erfahrung, aber selbst ihnen fehlt oft das Wissen, um einige Anforderungen zu formulieren oder zu konstruieren. Dies ist normal, da es Teil meiner Arbeit als „Computertechniker“ ist, den Menschen zu helfen, zu verstehen, was sie tun und was sie nicht benötigen, basierend auf ihrer spezifischen Situation. Es ist jedoch viel schwieriger festzustellen, wann sich zwischen Ihnen und dem Kunden mehrere Dichtungen befinden.

Die Anforderungen ändern sich, weil jemand entweder die Absicht missverstanden oder versucht hat, mit der oben genannten Langeweile umzugehen


Die meisten Unternehmen möchten einen Verkäufer gründen, der potenzielle Kunden belästigt, handelt und das Produkt allgemein beschreibt. Es gibt auch Spezialisten mit fortgeschrittenen Kommunikationsfähigkeiten , die mit dem Kunden detailliertere Spezifikationen und Anforderungen besprechen können: Dies ist normalerweise derselbe Verkäufer, nur wenig mit einer anderen Berufsbezeichnung. Und es gibt ein internes Unternehmenssystem, verschiedene Führungsebenen und möglicherweise eine gewisse Hierarchie im technischen Team.

Wenn die Anforderungsliste eines Kunden so viele Personen durchläuft, selbst wenn diese Personen die besten Absichten haben, geht dabei unweigerlich etwas verloren. Manchmal geschieht dies, weil die ursprüngliche Anforderung keinen Sinn ergab oder geändert werden muss. Vielleicht sagte der Verkäufer zu dem Kunden: "In nur 39.999 werden wir es auf der Blockchain von oben tun." Er stimmte zu, aber alle anderen müssen raten, was es bedeutet, in der Blockchain zu arbeiten.

Meistens ändern sich die Anforderungen entweder, weil jemand die Absicht missverstanden hat oder versucht hat, mit der oben genannten Langeweile umzugehen, um seine Arbeit oder die Arbeit seines Teams interessanter und beeindruckender zu machen.

Dahinter gehen die anfänglichen Anforderungen verloren - die wirklichen Probleme, die gelöst werden müssen. Sie werden durch imaginäre Probleme und Lücken ersetzt, und Sie haben viele Leute, die bereit und willens sind, diese Lücken mit ihren imaginären Problemen zu füllen, weil die wirklichen Probleme, die sie lösen müssen, langweilig sind und das Füllen der Lücken ihnen Befriedigung gibt.

Übermäßige Komplexität und natürliche Selektion


Oft gibt es einen dunkleren Grund für das Auftreten imaginärer Probleme: Solche Probleme helfen einem Team oder Unternehmen zu wachsen, sie können sogar ein wesentlicher Bestandteil seiner Arbeit werden.

"Menschen, die herausgenommen, ausgewählt und ermutigt werden, nach komplexen Lösungen zu suchen, haben keinen Anreiz, vereinfachte Lösungen einzuführen."
- Nassim Nicholas Taleb


Haben Sie von diesen drei Programmierern gehört, die eine wirklich einfache Lösung für sicheres Webbanking gefunden haben? Sie entwickelten fehlerfreie Bankensoftware von Grund auf unter Verwendung funktionaler Entwurfsmethoden und sicherer Sprachen und begannen dann, große Banken auf ihre erstaunliche Infrastruktur zu übertragen.

Sie haben vielleicht noch nichts von ihnen gehört, weil sie nicht existieren. Es gibt jedoch viele Teams von Tausenden von Entwicklern, die nicht in der Lage sind, einfache Konzepte wie „Rollback auf die alte Version“ zu erlernen , und die ständig damit beschäftigt sind, Bankensoftware zu erstellen.

Das Speichern und Übertragen von Nummern ist kein besonders schwieriges Problem. Eine weitere Angelegenheit ist die Indizierung des gesamten Internetinhalts und die Anzeige des entsprechenden Ergebnisses für eine Abfrage in natürlicher Sprache in Sekundenbruchteilen. Aber nur wenige kluge Kerle haben es geschafft, dieses Problem zu lösen .

Das chronische Problem des Online-Bankings besteht darin, dass sich das Bankenökosystem in seiner eigenen Hierarchie der Geldaneignung wirklich hervorgetan hat. Ihre Führer sind korrupte Blutegel , die am Körper der Gesellschaft haften, aber die Führer der Organisation spiegeln nur den Zustand des gesamten Systems wider.

Ich sage nicht, dass die meisten normalen Bankangestellten bösartige und schädliche Persönlichkeiten sind. Überhaupt nicht. In der Regel sind dies freundliche Männer, die Geld für Essen, Wohnen und Bildung für ihre Familien verdienen. Ihr Hauptanreiz besteht jedoch nicht darin, Bankensoftware zu reparieren, sondern Arbeit zu sparen. Der Verlust eines Arbeitsplatzes in der modernen Wirtschaft ist für manche Menschen ein ernstes Problem, und in der Bankenbranche ist ein nachlässiges Wort oder eine übermäßige Initiative eine einfache Möglichkeit, vor einem Disziplinarkomitee zu erscheinen.

Bankensysteme bleiben also gleich - nicht weil sie effektiv sind, sondern wegen der Trägheit. Diese Trägheit manifestiert sich in der Lösung imaginärer Probleme, um die Lösung realer Probleme zu vermeiden, deren Lösung, wie bereits erwähnt, die Arbeit anderer Menschen bedroht. Die Lösung dieser wirklichen Probleme kann zur Entlassung oder bei einigen besonders unangenehmen „Institutionen“ wie Goldman Sachs zu mehreren Briefen führen, die das Leben des ehemaligen Mitarbeiters ruinieren und mit einem seltsamen Selbstmord enden.

"Es ist schwer, jemanden dazu zu bringen, etwas zu verstehen, wenn sein Gehalt davon abhängt, was er nicht versteht!"
- Upton Sinclair


Normale Unternehmen ignorieren die Tatsache, dass das Top-Management 90% seiner Zeit damit verbringt, sich mit Kunden zu treffen, einschließlich Reisen zu tropischen Inseln und Millionen von Budgets für Gemeinkosten. Das Top-Management wiederum blendet die Korruption in den Reihen aus.

Während mittelständische Manager ihre Wall Street-Fantasien im Wolfsstil fördern, ignoriert die Geschäftsleitung das Verhalten dieser Manager, die exzentrische Büros kaufen, drei Sekretäre und ein Dutzend Praktikanten einstellen.

Da sich normale Manager nicht über ihre diktatorischen Fantasien und ihren Durst nach Macht beschweren, blenden Manager auf mittlerer Ebene die Tatsache aus, dass sie, anstatt Kosten zu senken, Zeit mit der Präsentation von PowerPoint „Verbesserung unserer agilen agilen Methodik“ verbringen.

Da Teamleiter nicht darauf achten, dass ihre Vorgesetzten nicht einmal wissen, wie man Excel verwendet, und ein paar Mal pro Woche ins Büro gehen, machen normale Manager ein Auge zu, wenn Teamleiter und Architekten über „die nächste Generation der Interaktion zwischen unseren Systemen über JRPC und Microservices mit Hibernate und sprechen Frühling “, wenn diese verdammten MySQL-Abfragen länger als einen Tag ausgeführt werden.

Da Entwickler anscheinend nicht bemerken, dass ihre Teamleiter keinen anderen Code als Diagramme schreiben, beschweren sich die Teamleiter nicht über ihre Entwickler, die, anstatt die Bremsen der obigen Anforderung zu erklären, die Benutzeroberfläche zum zehnten Mal in einem Jahr mithilfe des neuen JavaScript-Frameworks neu erstellen.

Dies ist ein Teufelskreis zur Lösung imaginärer Probleme: Vom CEO, der nicht versteht, dass der Diebstahl von weiteren 30 Millionen ihm keine elterliche Liebe schenkt, bis zum Auszubildenden, der nicht versteht, dass sich die neue Schaltfläche „Senden“ auf Angular-Material-Bootstrap 19.13.5 nicht ändert dass Passwörter im Klartext gespeichert werden (und zum Überprüfen von Cookies verwendet werden).

Aber jeder muss weiterhin imaginäre Probleme lösen, denn wenn er damit aufhört, wird er sich auf echte Probleme konzentrieren - und er wird verstehen, dass das gesamte System kaputt ist. Sie können verstehen, dass Debra in der Ecke des Büros seit zehn Jahren die Diagramme zur Verfügbarkeit von Serverclustern betrachtet, obwohl das Unternehmen vor fünf Jahren zu AWS gewechselt ist. Sie können verstehen, dass 99% ihrer Aufgaben nur benötigt werden, um die Arbeit eines anderen zu retten. Und dieses Bewusstsein ist schwer zu akzeptieren, ich wage zu sagen, es ist für die Mehrheit sogar unmöglich. Daher finden die meisten einen Weg, sich anzupassen.

Source: https://habr.com/ru/post/de422679/


All Articles