Technische Ansätze und Checkliste: Wie man im Chaos der Aufgaben nicht verrückt wird



Hallo! Mein Name ist Oleg und ich bin Frontend-Entwickler bei der Alfa Bank. Ich möchte Ihnen eine kleine philosophische Geschichte erzählen - über den technischen Ansatz für die Entwicklung, über meinen ersten Job und den Rechen, den ich dort gesammelt habe, darüber, warum Checklisten sehr wichtig sind (und Leben retten).

Und auch darüber, wie man weiterhin produktiv arbeitet und nicht viele kleine und nicht sehr kleine Aufgaben erledigt.

Alles begann mit Chaos.

Bei meinem ersten Job (nicht Alpha, nein) wurde ich irgendwie genommen und sofort in die Embrasur geworfen, sagten sie, Mann, jetzt machst du CRM, der Comp ist da drüben. Was zu tun ist und wie zu tun ist - ich habe es überhaupt nicht verstanden. Was machen sie normalerweise in einer solchen Situation? Das ist richtig - sie laufen zu ihren Kollegen und beginnen mit ihnen zu prüfen, wie sie den Code an den Server liefern, wie die Dinge mit dem Git sind, welche Praktiken wir verwenden und welche nicht und so weiter. Dieser Ansatz hat mir geholfen und ich rate anderen ständig, dies zu tun. Stellen Sie Fragen, stellen Sie Fragen, auch wenn es Ihnen offensichtlich erscheint, und geben Sie an, was geklärt werden muss. Es ist in Ordnung. Es ist nicht normal, nicht zu fragen.

Mein nächster Schritt war die Verwendung von Büchern. Denn als ich Fragen zurückgab und Antworten wie "Yuzay linter" erhielt, dachte ich, ich weiß, wie man das alles macht, aber ich verstehe nicht ganz warum. Ich war aufrichtig daran interessiert zu wissen, wo die Beine in all den Prozessen wachsen, und ich beschloss, in den Büchern nach Hilfe zu suchen. "Reiner Code", "Perfekter Code" - im Allgemeinen ging ich zum Standardsatz, wo gesagt wird, dass die Funktion nicht länger als 30 Zeilen sein sollte. Ich muss sofort sagen, dass es nicht geholfen hat, alles zu verstehen und das Chaos zu kontrollieren.

Ja, ich begann merklich sauberer zu schreiben, aber das Chaos in Form eines Haufens von Aufgaben, das ich normalerweise nicht lösen konnte, verschwand nicht. Die Kollegen haben beschlossen, mit klugen Ratschlägen wie "Alter, du hast einfach nicht genug Rand, lass uns hier über den Rand lesen und alles wird cool mit dir, wenn du auch den Scrum-Master gibst."

Na ja. Agilität allein ist eine gute Sache. Aber wenn Sie in einem Team arbeiten. Und die einseitige Kante ist etwas seltsam. Ich fing an weiter zu graben und fand Kaizenbücher. Und dann traf ich die Theorie der Systembeschränkung und das Buch „Zweck“. Viele lesen es wahrscheinlich, daher möchte ich nur kurz darauf hinweisen, dass eine der Hauptbotschaften hier nicht darin besteht, alles überall und sofort zu verbessern, sondern zuerst ein Problem zu finden und es zu beheben. Behoben - suche den nächsten und behebe ihn. Der Autor kam durch technische Ansätze dazu, weil Ingenieure so etwas tun - sie suchen nach einem Problem und lösen es.

Okay, das sind die Texte, kommen wir dem Üben näher.

Im Leben


Angenommen, Sie haben einen kugelförmigen Prozess in einem Vakuum, in dem sich ein Designer, ein Front-End und ein Tester befinden. Der Designer zeichnet an einem Tag Layouts und Schaltflächen, das Front-End arbeitet in drei Tagen damit und der Tester benötigt zwei Tage. Es scheint ein einfaches Schema zu sein und es ist sofort klar, wo der Prozess verbessert werden kann - im Front-End, da seine Arbeit die meiste Zeit in Anspruch nimmt. Das heißt, der Optimierungspunkt besteht darin, die langsamste Stufe im Prozess zu finden.

Dies ist jedoch ein einfaches Beispiel mit drei Variablen. Natürlich ist die Arbeit oft anders. Und ganz anders. Der Prozess wird kompliziert, wenn Sie ein Backend, eine Dokumentation, CI / CD und andere wichtige Dinge haben.



Und dann ist es nicht möglich, sofort zu ermitteln, welcher Prozess am langsamsten ist und wo er beginnen soll. Hier sieht der Prozess der Optimierung der langsamsten Stufe folgendermaßen aus:

  1. Wir müssen die Einschränkung finden, die langsamste.
  2. Entscheiden Sie, wie Sie es so oft wie möglich verwenden möchten.
  3. Ordnen Sie alles der Entscheidung unter.
  4. Die Einschränkung entwickeln (erweitern).
  5. Geh zurück und wiederhole.


Es mag chaotisch klingen, also werde ich genauer schreiben.

Was tun, haben Sie parallele Aufgaben, mit denen Sie beschäftigt sind?



In diesem Fall suchen Sie nach der längsten Route nach Tagen insgesamt. Im Bild oben sind es ungefähr 6 Tage. Beginnen Sie damit, mit diesem längsten Prozess. Es stellt sich heraus, dass Sie in diesem Beispiel das Backend verbessern, da es 4,5 Tage dauert. Das ist auch nicht so schwierig, aber wenn Sie dazu kommen und anfangen, bemerken Sie, dass das Leben einfacher wird.

Ich werde auf Beispiele meines Arbeitschaos zurückkommen. Ich hatte eine Reihe von Aufgaben und hatte keine Zeit. Ich erkannte, dass es im Frontend (dh in mir) eine Einschränkung gibt, dass das Problem nicht beim Tester liegt, weil er Fehler findet, nämlich auf meiner Seite. Um etwas dagegen zu unternehmen, begann ich zu überlegen, wie ich diese Einschränkung anwenden sollte.

Und er entschied, dass wir den Prozess so ändern müssen, dass es nur einen Einstiegspunkt gibt - eine Person, die Entscheidungen darüber trifft, ob wir die Aufgabe erledigen oder nicht. Da es Fälle gab, in denen eine Person kam und sagte: Oleg, müssen wir den Knopf hier etwas nach rechts bewegen. Und dann noch einer. Und in einer halben Stunde jemand anderes mit einer ähnlichen Aufgabe. Und es scheint, dass kleine Dinge und Müll, aber am Ende habe ich komplett vernäht und versucht, alle zufrieden zu stellen.

Jetzt versuche ich nicht mehr als 2 Aufgaben parallel zu erledigen (parallel und nicht gleichzeitig). Früher konnte ich dem Tester eine Aufgabe geben und die folgenden Schritte ausführen. Wenn der Tester jedoch einen Fehler fand, musste ich überprüfen, mich daran erinnern und zu dem Code wechseln, der dort geschrieben wurde. Dies ist schwieriger, als es sich anhört, wenn Sie häufig wechseln. Und im Allgemeinen ist das Umschalten teuer. Versuchen Sie, nicht mehr als 2 Aufgaben gleichzeitig auszuführen. 3 Aufgaben sind bereits ein Weg zum Nähen.

Überlegen wir uns, wie wir alles andere der Entscheidung unterordnen können. Es scheint logisch zu klingen, ja, wenn es so viele Aufgaben gibt, müssen Sie keine Folie werfen? Sie erwarten beispielsweise, dass eine Person in drei Tagen drei Aufgaben von ungefähr gleicher Komplexität erledigt. Wenn er in zwei von drei Tagen nur eine Aufgabe erledigt hat, passt er höchstwahrscheinlich sowieso nicht in den Plan, so dass es ein wenig demotivierend ist, ihm mehr Aufgaben von oben zuzuwerfen.

Mehr zu Einschränkungen


Natürlich können Einschränkungen erweitert werden. Stellen Sie in unserem Beispiel eine andere Front ein. Es ist auch logisch, mehr Fronten - sie werden Zeit haben, mehr Aufgaben zu erledigen. Dann wird die Einschränkung an einen anderen Ort übertragen.

Es gibt auch einen Ansatz, bei dem sie nicht die Anzahl der Einheiten, sondern ihre Kompetenzen erweitern. Ich habe ein lebendiges Beispiel - der Tester könnte mir im Frontend helfen, wenn ich das Frontend kenne. Bei meinem Kollegen begann der Scrum-Master, das Frontend selbst zu schreiben, weil er interessiert war, einige Features dort mit einem Augenzwinkern machte und Spaß hatte und das Team half. Ich fordere nicht dazu auf, dies zu Hause zu tun, da das Ergebnis sehr unterschiedlich sein kann, aber als Beispiel gibt es einen solchen Ansatz - ja, und es funktioniert manchmal.

Checkliste




Checklisten helfen wirklich, das Leben leichter zu machen. Diese Checkliste für die Alfa-Bank hilft mir jetzt sehr bei meiner Arbeit , bei der einige Phasen abgeschlossen werden müssen.

Cheklisten retten sogar Leben, ich werde einen kleinen Auszug aus dem Buch „Verstehe die Risiken. So wählen Sie den richtigen Kurs ":

Zu Beginn der Luftfahrt flogen Piloten in Flugzeugen, die nicht so mit technischer Ausrüstung ausgestattet waren wie heute. Checklisten wurden in der US-Luftwaffe erst verwendet, nachdem klar wurde, dass der B-17-Bomber ein zu großes Flugzeug ist und nicht von nur einer Person kontrolliert werden kann. Im Jahr 2009, als beide Triebwerke unmittelbar nach dem Start vom Flughafen La Guardia auf dem US Airways-Flug 1549 zum Stillstand kamen, führten die Piloten in einem solchen Notfall alle Checklistenaktionen durch, einschließlich des Versuchs, die Triebwerke neu zu starten. Die Flugbegleiter überwachten wiederum gemäß den Checklisten streng die ordnungsgemäße Vorbereitung der Passagiere auf eine Notlandung. Checklisten wie diese sind eine einfache und kostengünstige Möglichkeit, die Sicherheit zu erhöhen.

In der Medizin wird ein anderes Bild beobachtet. Der Missbrauch zentraler Venenkatheter führt jedes Jahr zu etwa 80.000 Fällen von Blutkreislaufinfektionen. Infolgedessen sterben etwa 28.000 Menschen auf Intensivstationen in amerikanischen Krankenhäusern. Und diejenigen Patienten, die es schaffen zu überleben, verbringen durchschnittlich eine weitere Woche auf der Intensivstation. Die Gesamtkosten für die Behandlung solcher Infektionen werden auf 2,3 Milliarden US-Dollar pro Jahr geschätzt. Was kann diese Menschen retten? Bessere Medikamente zur Behandlung von Infektionen, bessere Technologien? Die Antwort lautet: Verbesserung der Fehlerkultur.

Im Jahr 2001 erstellte Peter Pronovost vom Johns Hopkins Hospital eine einfache Checkliste für Wiederbelebungsärzte, um zu prüfen, ob diese Maßnahmen die Ausbreitung von Infektionen verringern könnten. Hier sind fünf aufeinanderfolgende Schritte, um zu verhindern, dass gefährliche Bakterien in den Patienten eindringen:

1) Hände mit Seife waschen;
2) die Haut des Patienten mit einem Chlorhexidin-Antiseptikum behandeln;
3) den Patienten mit einer sterilen Folie abdecken;
4) eine sterile Maske, einen Hut, eine Schürze und Handschuhe tragen;
5) Steriles Material über den Katheter auftragen, nachdem der Katheter in die Vene eingeführt wurde.

In dieser Liste war jede der Schutzmaßnahmen bekannt, sie enthielt nichts Neues. Pronovost fragte Krankenschwestern auf seiner Intensivstation, ob die Ärzte diese 5 Regeln befolgt hätten. Krankenschwestern berichteten, dass bei der Installation eines Katheters mehr als ein Drittel aller Patienten eine oder mehrere dieser Regeln nicht befolgt hatten. Die Infektionsrate des Blutkreislaufs im Krankenhaus betrug zu diesem Zeitpunkt 11%.

Pronovost überzeugte die Krankenhausverwaltung, den Krankenschwestern zu erlauben, Ärzte zu stoppen, wenn sie eine der fünf vorgeschriebenen Maßnahmen versäumten. Diese revolutionäre Neuerung verstieß gegen die hierarchische Struktur, in der das paramedizinische Personal (hauptsächlich Frauen) kein Recht hatte, Chirurgen (hauptsächlich Männern) Anweisungen zu erteilen. Nach einem Jahr, in dem diese Anweisungen genau befolgt wurden, verringerte sich die Infektionsrate des Blutkreislaufs bei Krankenhauspatienten von 11% auf 0 (!). In den nächsten 15 Monaten wurden nur zwei Fälle einer solchen Infektion festgestellt. Allein in diesem Krankenhaus verhinderte die Liste der Anweisungen 43 Infektionen, 8 Todesfälle und sparte 2 Millionen US-Dollar.

Um zu zeigen, dass die Verwendung der Checkliste nicht nur auf sein Krankenhaus beschränkt war, überzeugte Pronovost mehr als hundert Intensivstationen in Michigan, an einer groß angelegten gemeinsamen Studie teilzunehmen. Es ist wichtig anzumerken, dass jeder von ihnen eine eigene Liste von Aktionen entwickelt hat, die für seine Kultur am relevantesten sind.

Die an der Studie teilnehmenden Intensivstationen berichteten, dass sie zuvor insgesamt 695 Fälle von Infektionen des Blutkreislaufs aufgrund der Verwendung von Kathetern hatten. Nur 3 Monate nach Beginn der Verwendung von Checklisten in den meisten Abteilungen sank die Infektionsrate des Patienten auf Null. Die verbleibenden Intensivstationen konnten diesen Indikator auch für die anderthalb Jahre, in denen die Studie durchgeführt wurde, signifikant reduzieren. Dieses groß angelegte Programm zur Rettung von Menschenleben wurde ohne den Einsatz teurer Technologien und ohne die Anzahl der Krankenhausmitarbeiter erhöht.

Das heißt, jeder dieser Punkte war bekannt, dies ist keine Neuheit oder etwas anderes. Peter hat es einfach im Checklistenformat entworfen und zur Pflicht gemacht. Das ist alles.

Wir versuchen, nicht nur unsere Ergebnisse, sondern auch die Ergebnisse anderer zu verbessern, und aktualisieren daher ständig unsere Arbeits-Checkliste. Wenn ich plötzlich etwas vergessen habe und dabei nichts getan habe, habe ich es auf die Checkliste gesetzt, um das nächste Mal nicht zu vergessen. Früher wurden Modelle oft zur Überarbeitung an den Designer zurückgeschickt, obwohl er sagte, dass er sofort alles verstehe und es richtig machen würde, und nachdem er uns nur um eine Checkliste gebeten hatte, warf ich ein Stück davon für das Design ab, und es wurde einfacher.

Ich habe meine Checkliste nach Aktion sortiert - 1 Aktion = 1 Checklistenelement. Die Hauptsache hier ist auch, sich nicht sehr stark auszuruhen und nicht in Checklisten zu gehen, um Checklisten zu erhalten. Page Make Up ist ein guter Punkt. "Make-up-Steuerelemente" - noch mehr - helfen dabei, Steuerelemente und ihre Nuancen nicht zu vergessen.

Eine Checkliste kann hierarchisch sein: Seitenlayout -> Seitenlayout -> Seitenlayout.



Warum nur Codierung nicht ausreicht


Tests sind erforderlich. Sie werden aber nicht immer benötigt. Zum Beispiel machen Sie eine Landung einmal und planen nicht, später dorthin zurückzukehren - dann macht es keinen Sinn, sie sehr stark zu drücken. Sie können Selektoren mit Einheiten abdecken oder end2end verwenden, aber Unit-Tests für den Rest sind Zeitverschwendung.

Aber deshalb reicht das Codieren nicht aus. Wieder ein Beispiel aus der ersten Arbeit - ich musste etwas ändern, ich ging zu meinen Kollegen und sprach darüber, sie antworteten, dass sie beschäftigt waren. Und mein Sprint brennt. Und es gibt niemanden, der hilft. Infolgedessen begann er sich in zusätzlichen Kompetenzen zu verstehen.

Angenommen, Sie verfügen über gute Kenntnisse, z. B. in der Arbeit mit CI / CD. Der Designer gab Ihnen das Layout und ging in den Urlaub, Sie hatten ein paar Änderungen oder Fragen, aber bis er aus dem Urlaub zurückkommt, ist es das, der Prozess ist es wert. Erweitern Sie Ihre Fähigkeiten, denn wenn der Schwachpunkt des Prozesses auf der Design-Seite liegt, ist der Designer aus einer Reihe von Gründen vernäht. Sie können ihm helfen. Dies ist ein zusätzlicher Wissensbestand, der jedoch beherrscht werden kann. Natürlich spreche ich nicht davon, einen Spezialisten vollständig und vollständig zu ersetzen, sondern von grundlegenden Fähigkeiten.

Schlussfolgerungen


Es ist nützlich, sich der Sache als Ingenieur zu nähern. Auch wenn Ihre Arbeit nicht technischer Natur ist. Es ermöglicht Ihnen, nicht alles gedankenlos hintereinander einzuführen, sondern ein Problem zu finden und nur das vorzustellen, was zu seiner Lösung beiträgt.

Notwendigkeit zu kommunizieren und Lösungen zu diskutieren. Kommunikation ist grundsätzlich schwer zu überschätzen. Manchmal entstehen Probleme aufgrund der sogenannten stillen Initiative. Wir hatten einen Fall, als wir einen .NET-Entwickler und eine einfache Aufgabe für ihn bekamen, Tests zu schreiben. Er schrieb schnell alles, testete, testete Einheiten, wählte aus und begann dann aus irgendeinem Grund, etwas zu tun, das über das hinausging, was in der Aufgabe enthalten war. Anscheinend in dem Glauben, dass dies für uns nützlich sein wird. Infolgedessen hat uns alles, was er getan hat, dazu gebracht, viel Zeit für zusätzliche Synchronisation aufzuwenden, und dann ging alles im Wesentlichen in den Papierkorb. Nur wegen grundlegender Kommunikationsprobleme. Nicht so.

Nun, eine Liste nützlicher Bücher:

  • Theorie der Systemeinschränkung (E. Goldratt)
  • Projektmanagement für kritische Ketten (E. Goldratt)
  • Gemba Kaizen - ein Weg, um Kosten zu senken und die Qualität zu verbessern (M. Imai)
  • Agiles Management: Führung und Teammanagement (A. Jürgen)
  • Extreme Programmierung erklärt (K. Beck)

Eine ausführliche Präsentation finden Sie hier .

Verwenden Sie Checklisten, halten Sie diese für notwendig? Wenn Sie einen Ansatz zur Pflege oder Erstellung einer Checkliste haben, teilen Sie diese bitte in den Kommentaren mit.

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


All Articles