Joel Spolsky: Abstraktionsstufe für Entwickler

Bild

11. April 2006

Ein junger Mann kommt in die Stadt. Er sieht gut aus und hat etwas Geld in der Tasche. Es fällt ihm leicht, eine gemeinsame Sprache mit Frauen zu finden.

Er spricht wenig über seine Vergangenheit, aber es ist offensichtlich, dass er viel Zeit in einer seelenlosen großen Firma verbracht hat.

Er ist sicherlich freundlich und kontaktfreudig, ruhig und selbstbewusst, nicht arrogant. Daher kann es für Programmierer leicht sein, ein wenig Arbeit vom Schwarzen Brett im örtlichen Café zu nehmen. Aber schnell das Interesse an Versicherungsdatenbankprojekten, Webseiten für Hausfrauen und Finanzabwicklungsmaschinen verlieren.

Ein Jahr später rechnete er damit, dass er genug Geld angesammelt hatte, um seine bescheidenen Ausgaben für das Jahr zu bezahlen. Deshalb stellt er nach Rücksprache mit seinem treuen deutschen Schäferhund den Computer in einen sonnenverwöhnten Raum, eine Mietwohnung, und installiert sorgfältig ausgewählte Werkzeuge für die Arbeit.

Und er setzt sich, um Code zu schreiben.

Und welcher Code ist das? Tadellos, künstlerisch, elegant, keine Fehler. Die Benutzeroberfläche ahmt den Denkprozess einer Person so gut nach, dass die Personen, denen sie den Code im Cafe für Programmierer zeigt, die Benutzeroberfläche kaum bemerken. Das ist ein brillanter Job.

Inspiriert von den Rückmeldungen seiner Kollegen beginnt er, Geschäfte zu machen und bereitet sich darauf vor, Bestellungen entgegenzunehmen. Seine Bescheidenheit schließt jegliche Ansprüche aus, und nach einem Monat sieht die Situation auf seinem Bankkonto nicht mehr so ​​ermutigend aus. Bisher wurden nur drei Bestellungen angenommen: eine von der Mutter, eine von dem anonymen Wohltäter im Cafe of Programmers und eine von ihm zum Testen des Handelssystems eingereichte.

Im zweiten Monat kommen keine Bestellungen mehr an.

Es überrascht und verärgert ihn. In einem großen Unternehmen wurden regelmäßig neue Produkte entwickelt, und selbst wenn sie unhöflich und unauffällig waren, wurden sie dennoch in angemessenen Mengen verkauft. Ein Produkt, an dem er dort arbeitete, war ein großer Erfolg.

Nach einigen Monaten sieht seine finanzielle Situation etwas wackelig aus. Der Hund sieht ihn traurig an. Er versteht nicht ganz, was passiert ist, sieht aber, dass sein Gesicht schlechter aussieht als sonst und er anscheinend nicht in der Lage ist, Kraft zu gewinnen, um mit Freunden auszugehen, einkaufen zu gehen, um Vorräte aufzufüllen oder sogar zu schwimmen.

Eines Morgens weigerte sich ein lokaler Verkäufer, seine Schulden zu verlängern, und sein Bankier hatte lange nicht mehr abgenommen.

Eine große Firma ist nicht rachsüchtig. Sie erkennen einen talentierten Mitarbeiter und stellen ihn gerne mit einem höheren Gehalt wieder ein. Er sieht bald besser aus, er hat neue Kleider und er hat sein altes Selbstbewusstsein wiedererlangt. Aber etwas fehlt. Ein Funke in seinen Augen. Die Hoffnung, dass er der Meister seines Schicksals werden könnte, war verschwunden.

Warum war er nicht erfolgreich? Er weiß es sicher. "Marketing", sagt er. Wie viele junge technische Experten neigt er dazu, Dinge zu sagen wie: "Microsoft hat Produkte schlechter, aber besseres Marketing."

Der Begriff "Marketing", der von einem Softwareentwickler ausgesprochen wird, bedeutet einfach all diese geschäftlichen Probleme: alles, was sie beim Erstellen und Verkaufen von Software wirklich nicht verstehen.

In der Tat ist dies nicht genau das, was Marketing bedeutet. Microsoft hat ziemlich schreckliches Marketing. Können Sie sich vorstellen, dass nach dieser Dinosaurierwerbung jemand wirklich Microsoft Office kaufen möchte?

Software ist ein Gespräch zwischen einem Softwareentwickler und einem Benutzer. Damit dieses Gespräch stattfinden kann, ist jedoch viel Arbeit erforderlich, die über die Softwareentwicklung hinausgeht. Dies erfordert nicht nur Marketing, sondern auch Vertrieb, Öffentlichkeitsarbeit, Büro, Netzwerk, Infrastruktur, Klimaanlage im Büro, Kundendienst, Buchhaltung und eine Reihe anderer Supportaufgaben.

Aber was machen Softwareentwickler? Sie entwerfen und schreiben Code, verspotten Bildschirme, debuggen, integrieren und testen Dinge im Quellcodeverwaltungs-Repository.

Die Ebene, auf der ein Programmierer arbeitet (z. B. Emacs), ist zu abstrakt, um ein Unternehmen zu unterstützen. Entwickler, die auf Abstraktionsebene arbeiten, benötigen eine Implementierungsebene - eine Organisation, die ihren Code in Produkte umwandelt. Dolly Parton, die auf der Ebene „Singing a Good Song“ arbeitet, benötigt außerdem eine riesige Implementierungsebene, um Konzertsäle aufzunehmen und zu buchen, Tickets zu nehmen und Audiogeräte zu installieren sowie Aufnahmen zu bewerben und Gebühren zu erheben.

Jedes erfolgreiche Softwareunternehmen besteht aus einer dünnen Schicht von Softwareentwicklern, die über eine große abstrakte Verwaltungsstruktur verteilt sind.

Abstraktion besteht nur, um die Illusion zu erzeugen, dass die täglichen Aktivitäten eines Programmierers (Entwerfen und Schreiben von Code, Überprüfen von Code, Debuggen usw.) alles sind, was erforderlich ist, um Softwareprodukte zu erstellen und auf den Markt zu bringen. Das bringt mich zum wichtigsten Punkt dieses Aufsatzes:
Ihr erster Schritt als Manager des Softwareentwicklungsteams besteht darin, eine abstrakte Entwicklungsschicht aufzubauen.

Die meisten neuen Software-Manager überspringen diesen Punkt. Sie denken weiterhin über das traditionelle Managementmodell für Befehl und Eroberung nach, das sie in Hollywood-Filmen gelernt haben.

Laut Command-and-Conquer (Generalstab) finden Führungskräfte heraus, wohin das Geschäft führen wird, und erteilen ihren Leutnants die entsprechenden Anweisungen, um das Geschäft in diese Richtung zu bewegen. Ihre Leutnants wiederum teilen die Aufgaben in kleinere Teile und geben Befehle für ihre Umsetzung. Dies wird im Organigramm fortgesetzt, bis am Ende jemand unten einige Arbeiten ausführt. In diesem Modell ist der Programmierer ein Zahn im Auto: der Fahrer, der einen Teil der Bestellungen des Handbuchs ausführt.

Einige Unternehmen gehen diesen Weg tatsächlich. Sie können immer herausfinden, wann Sie mit einem solchen Geschäft zu tun haben, weil die Person, mit der Sie sprechen, etwas Bedeutungsloses tut und dies weiß, er kann sich sogar darum kümmern, aber sie kann nichts dagegen tun. Dies ist eine Fluggesellschaft, die für immer eine Million Meilen eines Kunden verliert, weil sie sich weigert, sein unwiderrufliches Ticket zu ändern, weil er aus familiären Gründen nicht wegfliegen konnte. Dies ist ein Internetprovider, dessen Service immer schlechter funktioniert. Wenn Sie Ihr Konto kündigen, werden Ihnen weiterhin Rechnungen in Rechnung gestellt. Wenn Sie anrufen, um sich zu beschweren, müssen Sie eine bezahlte Nummer anrufen und eine Stunde warten. Dann weigern sie sich immer noch, Sie zurückzugeben Geld, bis Sie einen Blog darüber starten, wie viel sie saugen. Dies ist ein Detroit-Autohersteller, der lange vergessen hat,Wie man Autos kreiert, die die Leute vielleicht kaufen möchten, und stattdessen von einer Marktstrategie zu einer Werbestrategie wechselt, als ob der einzige Grund, warum wir ihre beschissenen Autos nicht kaufen, darin besteht, dass der Rabatt nicht groß genug ist.

Genug,

vergiss es. Ein hierarchisches Befehls- und Kontrollsystem wurde getestet und funktionierte in den 1920er Jahren einige Zeit im Wettbewerb mit Schubkarren, ist aber für das 21. Jahrhundert nicht gut genug. Softwarehersteller müssen ein anderes Modell verwenden.

In einem Softwareunternehmen sollte die erste Priorität des Managements darin bestehen, diese Abstraktion für Programmierer zu erstellen.

Wenn sich ein Programmierer irgendwo Sorgen um einen kaputten Stuhl macht oder auf eine Antwort von Dell wartet, um einen neuen Computer zu bestellen, ist die Abstraktion durchgesickert.

Stellen Sie sich die abstrakte Schicht Ihrer Entwicklung als eine große, schöne Yacht mit wahnsinnig starken Motoren vor. Es wird einwandfrei gepflegt. Gourmetgerichte werden immer wie ein Uhrwerk serviert. Dienstmädchen arbeiten zweimal täglich in Kabinen. Navigationskarten sind immer aktuell. GPS und Radar funktionieren immer, und wenn sie kaputt gehen, befindet sich unter Deck ein Ersatz. Wenn Sie auf der Brücke stehen, haben Sie Programmierer, die wirklich nur an Geschwindigkeit, Richtung und was zum Mittagessen passieren wird: Thunfisch oder Lachs? In der Zwischenzeit drehte sich ein großes Team von Fachleuten in einer gestärkten weißen Uniform auf Zehenspitzen unter Deck, hielt alles in Ordnung, füllte Gasflaschen, kratzte Muscheln und glättete Servietten auf dem Tisch. Die Support-Mitarbeiter wissen, was zu tun ist, aber sie nehmen ihre Signale von ihrem gesalzenen alten Mann entgegen.der leicht in bestimmte Richtungen nickt, um die gesamte Symphonie zu koordinieren, damit Programmierer alles abstrahieren können, was die Yacht betrifft, außer Geschwindigkeit, Richtung und was sie zum Mittagessen wollen.

Das Management eines Softwareunternehmens ist in erster Linie für die Erstellung von Abstraktionen für Programmierer verantwortlich. Wir bauen eine Yacht, wir bedienen eine Yacht, wir sind eine Yacht, aber wir betreiben keine Yacht. Alles, was wir tun, ist, Programmierern Abstraktion zu bieten, damit sie exzellenten Code erstellen können und dieser Code in die Hände von Kunden fällt, die davon profitieren.

Programmierer benötigen ein Subversion-Repository. Wenn Sie ein Subversion-Repository erhalten, benötigen Sie ein Netzwerk und einen Server, die gekauft, installiert, reserviert und unterbrechungsfrei mit Strom versorgt werden müssen. Der Server erzeugt viel Wärme und muss sich in einem Raum mit zusätzlicher Klimaanlage befinden. Die Klimaanlage muss Zugang nach außen haben Gebäude, dh die Installation einer 80-Pfund-Lüftereinheit an der Wand außerhalb des Gebäudes, was die Eigentümer des Gebäudes nervös macht. Daher müssen sie ihren Bauherrn dazu bringen, zu vereinbaren, wo die Klimaanlage installiert werden soll (Lösung): (an der Außenwand, hier, um 18 Uhr Boden, an der unbequemsten Stelle), und die Eigentümer rufen ihren Anwalt an, weil wir unterschreiben müssen, um dies tun zu dürfen, und dann erscheinen die Jungs von der Klimaanlage mit Takelage.Das ist nicht bequem, was den Vorarbeiter nervös macht und es ihnen nicht erlaubt, mit einem Mattel-Gürtel aus 1/2 "rosa Kunststoff aus dem Fenster im 18. Stock zu kommen. Ich schwöre bei Gott, es könnte ein Barbie-Disco-Gürtel sein, und jemand sollte den Bauarbeiter erneut anrufen Agent und finden Sie heraus, was zum Teufel sie nach 12 Wochen im Bauprojekt plötzlich realisierten, dass sie eine weitere Vertragsänderung für diese verdammte Klimaanlage benötigen würden, die sie vor Weihnachten kannten, und sie vermuteten nur, dass Ihre Programmierer mindestens eine Minute nachdenken darüber ist das dann schon zu viel.Warum zum Teufel haben sie nach 12 Wochen im Bauprojekt plötzlich gemerkt, dass sie eine weitere Vertragsänderung für diese verdammte Klimaanlage benötigen würden, von der sie vor Weihnachten wussten, und sie haben nur vermutet, dass Ihre Programmierer mindestens eine Minute damit verbringen, darüber nachzudenken das ist schon zu viel.Was zum Teufel haben sie nach 12 Wochen im Bauprojekt plötzlich gemerkt, dass sie eine weitere Vertragsänderung für diese verdammte Klimaanlage benötigen würden, von der sie vor Weihnachten wussten, und sie haben nur vermutet, dass Ihre Programmierer mindestens eine Minute damit verbringen, darüber nachzudenken das ist schon zu viel.

Für Softwareentwickler in Ihrem Team sollte dies alles abstrahiert werden, z. B. die Eingabe von svn commit in der Befehlszeile.

Deshalb sollten Sie müssen haben Management.

Dies ist für die Dinge, die kein Unternehmen vermeiden kann, aber wenn Sie Programmierer haben, die sich darüber Sorgen machen, ist das Management gescheitert, genauso wie eine 100-Fuß-Yacht scheitert, wenn der Millionärsbesitzer in den Maschinenraum muss und den Motor reparieren.

Ihr typisches Unternehmen wurde von ehemaligen Software-Verkäufern gegründet, bei denen alles Umsatz ist, und wir alle existieren, um den Umsatz zu steigern. Diese Unternehmen können keine eigene Kontrolle übernehmen, da sie Softwareversion 1.0 (auf die eine oder andere Weise) erstellen und dann das Interesse an der Entwicklung neuer Software vollständig verlieren. Ihr Entwicklungsteam hungert oder existiert nicht, weil es niemandem in den Sinn gekommen ist, Version 2.0 zu erstellen ... alles, was das Management tun kann, ist den Umsatz zu steigern.

Auf der anderen Seite haben Sie Unternehmen, die von ehemaligen Programmierern gegründet wurden. Diese Unternehmen sind schwerer zu finden, da sie sich in den meisten Fällen leise verhalten, irgendwo im Keller Code schreiben, den niemand jemals findet, und daher unmittelbar nach dem Great Ruby Rewrite leise in Vergessenheit geraten.

Beide Beispiele können leicht von einem Unternehmen zerstört werden, das von Programmierern verwaltet und organisiert wird, um Programmierer auf den Fahrersitz zu setzen, das jedoch eine hervorragende Abstraktion aufweist und die ganze harte Arbeit der Umwandlung von Code in Produkte erledigt.

Der Programmierer ist am produktivsten mit einem ruhigen persönlichen Konto, einem ausgezeichneten Computer, einer unbegrenzten Anzahl von Getränken, einer Umgebungstemperatur von 20 bis 23 Grad Celsius, keiner Blendung auf dem Bildschirm, einem Stuhl, der so bequem ist, dass Sie ihn nicht fühlen, einem Administrator, der Post- und Bestellhandbücher mitbringt und Bücher von einem Systemadministrator, der das Internet so zugänglich wie Sauerstoff macht, einem Tester, der Fehler findet, die er einfach nicht sehen kann, einem Grafikdesigner, der seine Bildschirme schön macht, einem Team von Vermarktern, damit die Massen ihre Produkte erhalten möchten, einem Team von Verkäufern um sicherzustellen, dass die Massen diese Produkte erhalten können, technischer Support, der Kunden hilft, das Produkt zum Laufen zu bringen, und Programmierern hilft, zu verstehen, welche Probleme technische Supportanrufe verursachen,und ungefähr ein Dutzend anderer Support- und Verwaltungsfunktionen, die in einem typischen Unternehmen ungefähr 80% des Gehalts ausmachen. Es ist kein Zufall, dass die römische Armee ein Verhältnis von vier Dienern pro Soldat hatte. Dies war keine Dekadenz. Moderne Armeen arbeiten wahrscheinlich im Verhältnis 7: 1. (Dies hat mir Pradeep Singh heute beigebracht: Wenn nur 20% Ihrer Mitarbeiter Programmierer sind, können Sie 50% an Gehältern sparen, indem Sie sie nach Indien auslagern. Wie viel Wettbewerbsvorteil erhalten Sie tatsächlich durch diese 10% Einsparungen? )(Dies hat mir Pradeep Singh heute beigebracht: Wenn nur 20% Ihrer Mitarbeiter Programmierer sind, können Sie 50% an Gehältern sparen, indem Sie sie nach Indien auslagern. Wie viel Wettbewerbsvorteil erhalten Sie tatsächlich durch diese 10% Einsparungen? )(Dies hat mir Pradeep Singh heute beigebracht: Wenn nur 20% Ihrer Mitarbeiter Programmierer sind, können Sie 50% an Gehältern sparen, indem Sie sie nach Indien auslagern. Wie viel Wettbewerbsvorteil erhalten Sie tatsächlich durch diese 10% Einsparungen? )

Die Hauptverantwortung des Managements besteht darin, die Illusion zu erzeugen, dass ein Unternehmen, das sich mit Software befasst, durch das Schreiben von Code gegründet werden kann, denn genau das tun Programmierer. Und obwohl es großartig wäre, Programmierer zu haben, die sich auch mit Verkauf, Grafikdesign, Systemadministration und Kochen auskennen, ist dies unrealistisch. Wie wenn man einem Schwein das Singen beibringt, nimmt es sich Zeit und nervt das Schwein.

Microsoft leistet bei der Erstellung dieser Abstraktion so gute Arbeit, dass es für Microsoft-Absolventen bekanntermaßen schwierig ist, Unternehmen zu erstellen. Sie können einfach nicht glauben, wie viel ohne ihr Wissen vergangen ist, und sie haben keine Ahnung, wie sie es nachbauen können.

Niemand erwartet, dass Dolly Parton weiß, wie man ein Mikrofon anschließt. Hinter ihr verbirgt sich ein unglaubliches Netzwerk von Managern, Musikern, Aufnahmetechnikern, Plattenfirmen, Gastkünstlern, Friseuren und Publizisten, die eine Abstraktion schaffen, die, wenn sie singt, alles ist, was Millionen von Menschen brauchen, um ihr Lied zu hören . Alle Support-Mitarbeiter und das Management, die Dolly Partons Arbeit ermöglichen, können ihre Arbeit bestmöglich erledigen und bieten die perfekteste Abstraktion: die perfekteste Illusion, die Dolly für uns singt. Das ist ihr Lied. Wenn Sie es auf Ihrem iPod hören, gibt es eine riesige Infrastruktur, die dies ermöglicht, aber das Beste, was die Infrastruktur tun kann, ist, vollständig zu verschwinden. Stellen Sie die Abstraktion bereit, die Dolly Parton für uns persönlich verwendet.




Bild
Erfahren Sie in SkillFactory-Onlinekursen, wie Sie einen begehrten Beruf von Grund auf neu erlernen oder Ihre Fähigkeiten und Ihr Gehalt verbessern können:




All Articles