Das Buch "Unser Code. Handwerk, Beruf, Kunst "

Bild Programmierer zu sein kann interessant sein und Spaß machen, aber Softwareentwickler zu sein ist die Hölle. Computer sind logisch, Menschen nicht. Leider zahlen sie in der modernen Softwareindustrie nicht für die Programmierung. Sie zahlen für die Softwareentwicklung, und dies bedeutet, dass sie Aufgaben in einem Team erledigen müssen - zusammen mit anderen Menschen. Befehle bestehen aus eigensinnigen Personen, nicht aus Java-Klassen und -Methoden.

Der Erfolg eines Softwareprojekts hängt von intelligenten Ingenieuren ab, die oft faul, ignorant, egoistisch, gereizt und einfach miserabel sind. Der Erfolg hängt von Menschen ab, die oft nicht wissen, wie man kommuniziert, Wissen teilt, führt und gehorcht und Anweisungen befolgt. Es hängt von unserer Fähigkeit ab, Teams zu bilden und an ihren Aktivitäten teilzunehmen. Und auch von unseren sozialen Fähigkeiten - manchmal in viel größerem Maße als von technischen Fähigkeiten.

Drama Ich stimme zu. Dieses Drama gilt für jeden unserer Brüder im Beruf. Wenn Sie also in einem solchen Beruf überleben möchten, lesen Sie dieses Buch. Egor Bugaenko .

Die Softwareentwicklung umfasst heute mehr als das Schreiben von Code. Hier geht es nicht um Algorithmen, Formeln, Bytes, Dateien oder Protokolle. Und nicht über Anweisungen, Bediener, Komponententests, Benutzeroberflächen oder Bereitstellungsszenarien. Und nicht einmal über Leistung, Skalierbarkeit, Fehlertoleranz oder Zuverlässigkeit. Alle diese Komponenten sind wichtig, aber sie machen einen Programmierer nicht effektiver als einen anderen, oder ein Entwicklerteam ist erfolgreicher als die Konkurrenz. Eine entscheidende Rolle in der modernen Welt der Software und Hardware spielt etwas anderes: Dies sind keine Computer, sondern Menschen.

Der Erfolg eines Softwareprojekts hängt von Menschen ab, die oft faul, unwissend, egoistisch, verärgert und einfach unglücklich sind. Es hängt von Menschen ab, die oft nicht wissen, wie man kommuniziert, Wissen teilt, verwaltet und gehorcht und Anweisungen befolgt. Es hängt von unserer Fähigkeit ab, Teams zu bilden und an ihren Aktivitäten teilzunehmen. Und auch von unseren sozialen Fähigkeiten - manchmal in viel größerem Maße als von technischen Fähigkeiten.

In diesem Buch treffen Sie eine kleine Gruppe von Programmierern, Architekten und Führungskräften, die für die Erstellung von Software bezahlt werden. Auf den nächsten mehr als zweihundert Seiten werden sie Probleme lösen, Konfliktsituationen umgehen und die Merkmale der Teamarbeit diskutieren. Ich hoffe, dass ihre Dialoge und Monologe Ihnen helfen werden, die Bedeutung des sozialen Aspekts der Softwareentwicklung zu verstehen und dadurch ein noch besserer Entwickler oder Marktführer zu werden.

Kapitel 1
Adrian


Programmierer zu sein kann interessant sein und Spaß machen, aber Softwareentwickler zu sein ist die Hölle. Computer sind logisch, Menschen nicht. Leider zahlen sie in der modernen Softwareindustrie nicht für die Programmierung. Sie zahlen für die Softwareentwicklung, und dies bedeutet, dass sie Aufgaben in einem Team erledigen müssen - zusammen mit anderen Menschen. Befehle bestehen aus irrationalen Personen, nicht aus Java-Klassen und -Methoden. Ich werde einen Job in einem dieser Teams bekommen und darin überleben. Ich kann in Java schreiben, aber das reicht nicht für den Erfolg. Dort werden weitere Fähigkeiten benötigt. Und einige davon habe ich noch nicht entwickelt.

Bergleute und Bergleute


Ich sagte der Sekretärin:

- Ich habe ein Treffen mit Chris, er wartet auf mich.

Eines Tages werde ich meine Sekretärin, mein Büro, meine Programmierer, mein Startup mit Investoren und die große Mission haben, der wir folgen werden. Und ich werde berühmt und erfolgreich sein. In der Zwischenzeit muss ich nicht für Wohnraum bezahlen. Es scheint, dass diese Leute reich genug sind, um sich in den nächsten Monaten mit mir zu befassen, und es scheint, dass ihnen mein Lebenslauf gefallen hat. Jetzt muss ich sie davon überzeugen, dass ich davon träume, für immer bei ihnen zu bleiben.

Da jede Softwarearchitektur ein Produkt der Aktivitäten von Menschen ist, ist es zur Verbesserung eines Produkts zunächst erforderlich, Menschen zu verbessern.

"Eigentlich ist das sie", antwortete die Sekretärin trocken.

Chris erschien eine Minute später. Wir gehen in den Besprechungsraum, sie bietet Kaffee an, aber ich bitte um ein Glas Wasser. Sie geht raus und ich hole automatisch mein Handy raus und überprüfe Facebook. Chris kommt mit einem Glas Wasser zurück und wird von einem Typen in einem dunklen T-Shirt mit dem GitHub-Logo begleitet. Sie sagt, sie freut sich sehr, Sie kennenzulernen und geht. Dude heißt Adrian, er ist Entwickler. Wir beginnen ein Gespräch. Mit seinen Fragen vermittelt er den Eindruck einer sehr erfahrenen Person. Ich fühle mich sehr wohl - es ist offensichtlich, dass ich ihm technologisch überlegen bin, daher gibt es eindeutig keinen Grund zur Sorge.

„Wir brauchen jemanden, der unsere Architektur repariert“, fasst Adrian nach einer halben Stunde zusammen.

"Vielmehr brauchen Sie jemanden, der Sie korrigiert, bevor Sie etwas mit Architektur anfangen können", dachte ich, sagte aber laut:

- Ich helfe Ihnen gerne weiter. Es scheint mir, dass Ihr Projekt sowohl technologisch als auch aus Sicht der Geschäftsprozesse interessant ist. Ich mag es nicht wirklich, an langweiligen Projekten zu arbeiten, egal wie viel sie dafür bezahlen. Ich bin lieber leidenschaftlich in meinem Geschäft, deshalb möchte ich etwas Interessantes und Modernes tun.

Adrian lächelt melancholisch. Vielleicht hat er das von jeder zweiten Person gehört, die in diesem Raum sitzt ...

Er stellt mir eine schwierige Frage:

"Wann bist du bereit zu beginnen?" Wie viel Zeit benötigen Sie, um Ihre laufenden Projekte abzuschließen? Wir suchen eine Vollzeitkraft.

Er scheint sehr stolz auf das Gesagte zu sein. Anscheinend denken sie, dass ein Vollzeitjob ein absolutes Gut für mich sein wird. Mir war bereits klar, dass ich von neun bis fünf in diesem Büro sitzen und mein Gehalt ausarbeiten musste. Ich habe zwar kein eigenes Startup, aber anscheinend wird es so sein. Diese Woche ist dies das dritte Unternehmen, in dem ich interviewt werde. Die beiden vorherigen haben mir noch nicht geantwortet, obwohl ich anscheinend für sie geeignet war. Dieser Typ sieht viel verzweifelter aus. Ich vermute, dass die Server fast jede zweite Nacht abstürzen, und dies wird zu meinem Problem, sobald ich den Vertrag unterschreibe. Ich muss vorsichtig sein.

"Vielleicht reicht eine Woche, um alle Arbeiten abzuschließen."

Ich sage, was ich zu sagen habe, obwohl ich jetzt kein Projekt, keinen Job, kein Einkommen habe. Ich kann ihm nicht die Wahrheit sagen - Sie müssen die Spielregeln befolgen. Ich muss beliebt und sehr beschäftigt aussehen. Aber scheint das Versprechen, alle Dinge in einer Woche zu erledigen, logisch? An was für einem Projekt arbeite ich gerade, da ich es in nur einer Woche fertigstellen könnte? Natürlich verstehen wir beide, dass dies eine Lüge ist ... aber wir verstehen auch, dass wir nichts dagegen tun können.

Eine Person, die verspricht, einem Unternehmen die Treue zu halten, hört sofort auf, einem anderen Unternehmen die Treue zu halten.

- Wie lange arbeiten Sie schon in dieser Firma? Ich bitte ihn, das Thema zu wechseln.

"Zwei Jahre", antwortet Adrian.

- Haben Sie die meisten Projekte des Unternehmens erstellt?

- Ja, ich bin der erste Entwickler hier. Vor zwei Jahren traf ich Tony, unseren Mitbegründer und technischen Direktor. Sie werden ihn beim nächsten Interview sehen.

Ich sehe, wie respektvoll Adrian von ihm spricht. Tony zahlt ihm Geld.

- Ich werde mich freuen, ihn zu treffen! Ich antwortete und wir beendeten das Gespräch.

Chris schrieb mir drei Stunden später. Tony will mich morgen früh sehen. Sie sagt, Adrian habe positiv von mir gesprochen. Anscheinend sind sie interessiert. Die beiden vorherigen Unternehmen schweigen immer noch, sodass ich für Tony arbeiten kann. Obwohl ich nicht einmal weiß, wie viel sie bereit sind zu zahlen, heißt es in der Ankündigung, dass die Bezahlung "anständig" ist.
Ich möchte mir nicht einmal vorstellen, für jemand anderen zu arbeiten. Ich kann mich in ihrem Büro sehr wohl fühlen, so tun, als wäre ich interessant, lache über Tonys Witze und frage Adrian, wie es seinen Kindern geht. Aber ich möchte keinen Code für sie schreiben oder, schlimmer noch, für ihre technischen Fehler verantwortlich sein. Und das werden sie versuchen: so viele Dinge wie möglich auf meine Schultern zu legen.

Ich bin überhaupt keine faule Person. Ich liebe es, Code zu schreiben, aber ich mache es so, dass die andere Person Millionär wird - nein, danke. Mein Leben ist mehr wert als das Gehalt, das sie anbieten können.

"Wie viel kann ein Arbeitgeber bezahlen?" - Die richtige Frage, die sich ein Spezialist stellen sollte.

Ehrlich gesagt denke ich, dass genau diese Einstellung von mir die eigentliche Ursache für die Probleme war, auf die ich in meiner vorherigen Arbeit (und in mehreren Arbeiten zuvor) gestoßen war. Alle wollten, dass ich ein guter Mitarbeiter bin, und ich wollte tun, was ich will: meine eigenen Ideen übersetzen, indem ich Code in Java schreibe. Ich wurde bereits vier Mal gefeuert, bin aber erst 29 Jahre alt. Bisher keine sehr beeindruckende Karriere. Was mache ich falsch?

Ich habe oft von verschiedenen Leuten gehört: Wenn der Arbeitgeber Sie interviewt, müssen Sie ihn auch interviewen. Dieser Ansatz scheint mir richtig zu sein, aber nicht, weil Sie bei der Auswahl eines Unternehmens, zu dem wir gehören möchten, wählerisch sein müssen - sie sind in der Anfangsphase alle gleich, nur unterschiedliche Namen, Märkte und Budgets. Wir müssen sie „unsererseits interviewen“, um zu zeigen, dass wir besonders an ihnen interessiert sind. Das ist wie ein Mädchen kennenzulernen2: Sie müssen Fragen stellen und so tun, als wären Sie an ihrer Seele interessiert und nicht nur an ihrem Körper.

Jedes neue Unternehmen, Team oder Projekt ist zunächst ein Rätsel. Es spielt keine Rolle, wie viele Fragen Sie zu ihren DevOps-Prozessen, Managementprinzipien und statischen Analysen stellen, denn jede Antwort kann eine Lüge sein, ihre Erfindung oder alles funktioniert möglicherweise überhaupt nicht so, wie sie es sich vorstellen. Ich höre nie zu, was sie bei den ersten Interviews sagen. Folgendes beachte ich: 1) das Geld, das sie bereit sind, mir zu zahlen; 2) die Größe des Teams; 3) die Position, die mir angeboten wird.

Die Frage des Geldes ist offensichtlich: Je höher das Gehalt, desto besser. Nicht nur, weil ich gierig bin und Mercedes-Benz gegenüber Chevrolet bevorzugen würde, sondern auch, weil eine gute Finanzierung bedeutet, dass das Projekt wertvoll und interessant ist. Betrachten Sie dies aus Marktsicht: Wenn sie mehr bezahlen können als andere, haben sie Geld von irgendwoher.

Das Gehalt ist der wichtigste explizite Indikator für die Bedeutung Ihres Beitrags zum Markt.

Vielleicht haben sie es geschafft, große Investoren anzuziehen (was bedeutet, dass sie an ihre Ideen glaubten); Vielleicht verdienen sie bereits ein anständiges Einkommen (daraus folgt, dass der Verbraucher sie mehr schätzt als ihre Konkurrenten). Oder vielleicht hat der Gründer ein paar Millionen geerbt und sie in ein verrücktes Startup investiert (was bedeutet, dass diese Dollars nicht in Vegas verschwendet werden, sondern den Markt durch das Geschäft aufwärmen, zu dem ich eingeladen bin).

In jedem Fall ist Geld ein Indikator für die Bedeutung dieses bestimmten Geschäfts auf dem Markt. Je mehr Geld, desto größer die Marktnachfrage nach diesem Projekt. Wenn das Projekt, an dem Sie arbeiten, kein Geld mehr hat, ist es Zeit, zu einem anderen, für den Markt wichtigeren Projekt überzugehen. Dieser Ansatz mag illoyal erscheinen, aber es ist immer noch wahr, wenn Sie sich um Ihre Kunden kümmern und nicht um die Chefs, die alle paar Wochen ihre Gehälter kürzen.

Die Wahl eines Projekts, das weniger bezahlt und „interessanter“ aussieht, ist sowohl unfair als auch unlogisch. Es liegt nicht an den Programmierern zu entscheiden, wie interessant und wertvoll dies ist. Solche Entscheidungen sollten vom Markt getroffen werden, der von solventen Kunden oder Investoren vertreten wird. Und sie vermitteln uns die Entscheidungen, die mit Hilfe unserer Gehälter getroffen wurden. Wenn das Gehalt steigt, ist der Markt zufrieden mit dem, was wir dafür tun. Wenn das Gehalt sinkt, ist es Zeit, die Frage zu stellen: Warum machen Sie diese Arbeit immer noch für den Markt, wenn der Markt sie nicht mehr schätzt?

Der zweite wichtige Indikator für mich ist die Größe des Unternehmens. Zu klein und zu groß sind nicht gut. Wenn das Unternehmen zu klein ist, sind technische Spezialisten gezwungen, viele Aufgaben zu kombinieren, verschiedene Aufgaben zu erledigen: Code schreiben, Server konfigurieren, Präsentationen für Investoren vorbereiten und sogar Möbel arrangieren und eine Kaffeemaschine reparieren. Aus beruflicher Sicht ist dies eine Verschlechterung und das Risiko, Zeit zu verschwenden. Infolgedessen müssen Sie eine Menge Arbeit leisten, die nicht mit der unmittelbaren Position zusammenhängt, nur um dem Team zum Überleben zu verhelfen.

Große Unternehmen sind zu politisch, kleine zu chaotisch.

Und die Überlebenschancen kleiner Unternehmen sind eher gering (wie Statistiken sagen). Ich halte mich lieber von Projekten fern, in denen weniger als 20 Techniker beschäftigt sind.

Auf der anderen Seite haben alle großen Unternehmen ein anderes Problem: die Politik. Die Leute arbeiten dort nicht - sie kämpfen miteinander. Ich werde entweder auf der unteren Ebene der Unternehmenshierarchie überleben, den Titel „Senior Developer“ tragen und an meinem Geburtstag einmal im Jahr einen Becher bekommen, oder ich werde ein Meister der Intrigen in einer bestimmten Gruppe von Kretinen. Keine der Optionen zieht mich an. Ich würde also nicht zu einem Unternehmen gehen wollen, das über tausend Mitarbeiter beschäftigt.

Der dritte Faktor, auf den ich achte, ist die mir angebotene Position. Ich beziehe mich auf die tatsächliche Position in der Hierarchie. Alle Unternehmen zeichnen sich durch eine Hierarchie von Mitarbeitern aus, unabhängig davon, was Anhänger der Holacracy sagen. Es gibt immer einen Vorgesetzten, dann gibt es Leute, die ihm gehorchen (bis auf die unterste Ebene). Wenn ich auf der unteren Ebene bleibe, versuche ich immer zu vermeiden. Nicht nur, weil ich Selbstwertgefühl habe, sondern auch, weil ich faul bin. Je niedriger Sie in der Hierarchie sind, desto mehr Arbeit müssen Sie erledigen und desto weniger Geld erhalten Sie. Arbeitsteilung in Aktion (und nicht nur im Bereich Software).

Je niedriger die vorgeschlagene Position und je technischer sie ist, desto schwieriger wird es: Ich muss für jemanden arbeiten, nicht für mich. Genau das hasse ich zu tun. Ich bin bereit, hart zu arbeiten, wenn ich weiß, dass das Ergebnis mein sein wird. In Entwicklungsteams mit einer dicken Führungsebene schaffen niedrigere Ebenen jedoch Einkommen, das von höheren Ebenen verbraucht wird. Was bringt es also, unten zu bleiben?

Haben Sie jemals von dem Experiment gehört, das Didier Desor und seine Kollegen an der Universität von Nancy durchgeführt haben? 2 Sie nahmen zehn identische Zellen, von denen jede fünf oder sechs männliche Ratten pflanzte. Um Nahrung zu bekommen, mussten Nagetiere durch ein kleines Loch gelangen, durch das Aquarium zum Futtertrog schwimmen, etwas Futter nehmen und zurückschwimmen, um es zu essen (es war unmöglich, direkt vom Trog zu essen). Am Ende des Versuchs wurden die Ratten in allen Käfigen in zwei Gruppen eingeteilt - Beute und Nicht-Beute. Die Bergleute schwammen nach Nahrung, und die Bergleute stahlen ihnen diese Nahrung.

Was lehrt uns diese Geschichte? Dass du entweder arbeitest oder stiehlst. Ratten wussten nichts über die zehn Gebote. Sie hatten keine Ahnung, dass Diebstahl eine Sünde war. Es scheint, dass die Natur nichts gegen Diebstahl hat (für sie ist dies die natürliche Verteilung der Rollen). Ebenso ist für manche Menschen die Arbeit die bevorzugte Tätigkeit. Für andere ist Diebstahl häufiger.

Wir sind natürlich keine Ratten, und unser Verhalten ist viel komplizierter, aber das allgemeine Prinzip ist dasselbe: Wir arbeiten entweder oder weisen das Ergebnis der Arbeit anderer zu. Kontrollhierarchien wurden erfunden, um diesen Prozess zu kontrollieren und ständige Kämpfe (wie zwischen Ratten in Käfigen) zu vermeiden. Wir kämpfen nicht länger mit unseren Chefs, wir geben ihnen nur die Vorteile, die wir produzieren, und glauben an Gerechtigkeit. Natürlich produzieren sie selbst auch etwas, aber die Vorteile, die sie bringen, sind deutlich geringer und das Gehalt ist höher.

Je höher Sie in der Hierarchie sind, desto weniger müssen Sie speziell tun und desto mehr andere werden Ihnen gutgeschrieben.

Auf dieser Grundlage ist es für mich im modernen System der „Bergleute und Bergleute“ am bequemsten, wie ein Bergmann auszusehen, aber als Bergmann eine Zahlung zu erhalten. Mit anderen Worten, um wie ein fleißiger Softwareentwickler auszusehen, der in Wirklichkeit praktisch nichts tut.

Die überwiegende Mehrheit der Teams auf dem Gebiet der Softwareentwicklung ist nicht in der Lage, Programmierer dazu zu bringen, ihr Bestes zu geben. Das Handbuch, insbesondere auf höchster Ebene, versteht den Unterschied zwischen Java und JavaScript nicht. Auf einer niedrigeren Ebene ist es jedoch schwieriger, den Chef zu täuschen, indem man vorgibt, Code zu schreiben, aber zu diesem Zeitpunkt tatsächlich einen neuen Facebook-Beitrag veröffentlicht. Deshalb ist es umso besser, je höher meine Position ist. Niemand wird verstehen, was ich tatsächlich tue, damit ich tun kann, was ich will. Ich nehme an Projekten teil, für die ich bezahlt werde, aber ich mache es lieber, wenn ich will und wenn es wirklich notwendig ist. Nicht um neun Uhr morgens.

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers
» Inhalt
» Auszug

Für Khabrozhiteley 25% Rabatt auf Gutschein - Unser Code

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


All Articles