Organisationsarbeit eines einzelnen Programmierers

Der Autor des Materials, dessen Übersetzung wir heute veröffentlichen, sagt, dass die meisten Programmierer in Teams arbeiten. Irgendwann in einer Karriere muss ein Entwickler jedoch möglicherweise alleine arbeiten. Der Hauptbereich der Ansätze zur Organisation der Arbeit an Softwareprodukten ist speziell für den Einsatz in Teams konzipiert. Diese Ansätze kommen in den von Organisationen verabschiedeten Regeln zum Ausdruck. Solche Regeln rationalisieren die Arbeit und helfen Programmierern, ihre Arbeit schnell und effizient zu erledigen. Ähnliches wäre sehr nützlich für Programmierer, die alleine arbeiten.

Bild

Was ist mit dem, der alleine arbeitet? Worauf sollten Sie sich konzentrieren, um einen klaren und effizienten Workflow aufzubauen? Welche Grundsätze und Regeln sind zu beachten? Wir empfehlen, gemeinsam nach Antworten auf diese Fragen zu suchen.

Über einsame Programmierer


Wenn ich von „einsamen Programmierern“ spreche, meine ich all diejenigen, die in einer inoffiziellen, unstrukturierten Umgebung arbeiten. Dies kann entweder ein einzelner Programmierer oder eine kleine Gruppe von Personen sein, die beispielsweise in ihrer Freizeit an einer Art Projekt beteiligt sind. Hier einige Beispiele:

  • Entwicklung eines Open-Source-Projekts wie eines Pakets oder einer Bibliothek.
  • Jemandes persönliches Projekt, das entweder kommerziell oder kostenlos sein kann.
  • Freiberuflich tätig.

Alle diese Beispiele werden durch die Tatsache vereint, dass die Arbeit von Programmierern, die sich mit etwas Ähnlichem befassen, normalerweise nicht durch ein bestimmtes Regelwerk geregelt wird, wie es normalerweise in Unternehmen zu finden ist.

Warum sollte sich ein einzelner Programmierer um die Regeln kümmern?


Die Regeln für die Anwendung auf die unabhängige Arbeit von Programmierern bei bestimmten Projekten sind aus mehreren Gründen wichtig. Betrachten Sie sie.

▍ Persönliche Regeln und mögliche Teamarbeit


Ein Programmierer, dessen unabhängige Arbeit gut organisiert ist, kann sich sehr gut einem bestimmten Team anschließen. In diesem Fall stehen die Chancen gut, dass er ein wertvolles Mitglied eines solchen Teams wird. Wir sprechen nämlich über Folgendes:

  • Wenn er sich einem Team anschließt, das den gleichen Regeln wie er folgt, muss er keine Zeit damit verbringen, sich mit organisatorischen Fragen zu befassen. Er wird buchstäblich vom ersten Tag an bereit für produktive Arbeit sein.
  • Wenn er Teil eines Teams wird, dessen Regeln sich von denen unterscheiden, an die er gewöhnt ist, wird er nicht viel Zeit brauchen, um diese neuen Regeln zu lernen. Schließlich orientiert er sich daran, seine Arbeit rational zu organisieren, und lässt sich von bestimmten allgemeinen Ideen leiten, die mit Sicherheit denen ähneln, die den Regeln des Teams zugrunde liegen. Dadurch kann er schnell ein hohes Maß an Arbeitsproduktivität erreichen.
  • Wenn er in ein Team gerät, in dem es überhaupt keine Regeln gibt, kann er ihr natürlich, abhängig vom Team, seine Vision von der Organisation der Arbeit von Programmierern anbieten, was die Arbeit eines solchen Teams durchaus verbessern kann. Wenn Mitglieder eines schlecht organisierten Teams sich weigern, etwas zu ändern, ist dies eine Gelegenheit, darüber nachzudenken, ein solches Team zu verlassen.

Infolgedessen ist ein einzelner Programmierer, der seine Arbeit auf jeden Fall rational organisiert, der Gewinner.

▍ Regeln und professionelles Niveau eines Programmierers


Softwareentwicklung ist nicht nur ein Prozess des Schreibens von Code. Es gibt viele Details, die dafür verantwortlich sind, dass aus einer Idee ein fertiges Projekt wird und es dann funktionsfähig bleibt. Die Einführung fortschrittlicher Softwareentwicklungstechniken in den persönlichen Workflow hilft einem einzelnen Programmierer, das Ziel, für das das Projekt erstellt wird, sicher zu verfolgen und Situationen zu vermeiden, in denen alles so verwirrend erscheint, dass nicht klar ist, wohin er gehen soll.

Wenn Sie wie ich gerne programmieren, werden Sie immer versucht sein, ein neues Projekt zu starten und sofort, ohne zurückzuschauen, in den Abgrund des Schreibens von Code zu stürzen. Die Erfahrung zeigt mir jedoch, dass, wenn ich einen bestimmten Arbeitsplan auf hoher Ebene habe, dies dazu beiträgt, viele Probleme unterschiedlicher Größenordnung zu vermeiden, ohne die Flexibilität zu beeinträchtigen, in der sich die individuelle Entwicklung unterscheidet.

Sprechen Sie über Best Practices für die Softwareentwicklung.

Befolgen Sie die Regeln, die Ihren Workflow beschreiben.


"Workflow" ist eine Abfolge von Schritten, die Sie ausführen müssen, um eine Idee in ein fertiges Produkt umzuwandeln. Hier sind einige Fragen, die durch die Regeln für die Arbeit an einem Softwareprodukt beantwortet werden sollten:

  • Wenn entschieden wird, ein Produkt zu ändern - wie ist die Reihenfolge seiner Implementierung?
  • Wie erfolgt die Übertragung neuer Versionen des Produkts an Benutzer?
  • Wie werden Produktänderungen verfolgt?
  • Wie ist die Überwachung von Fehlermeldungen und Problemen der Benutzer organisiert?
  • Wie werden neue Produktfunktionen geplant?

Warum all dies regulieren, in eine Art Framework einbinden, wenn es den Anschein hat, dass die Arbeit an Projekten ohne einen bestimmten Workflow viel schneller geht? Ist es nicht einfacher, sich den gesamten „Workflow“ in dieser Form vorzustellen: „Schreiben Sie einfach den Code und senden Sie ihn an die Hauptniederlassung“? Mit zunehmender Komplexität des Projekts stellt sich heraus, dass das Vorhandensein klarer Regeln die Definition der zu erledigenden Aufgaben bei diesem Projekt vereinfacht und es Ihnen dementsprechend ermöglicht, sich ohne weitere Überlegungen auf diese Themen zu konzentrieren. Wenn Sie in einem Team arbeiten, verwandelt sich der Workflow in ein Förderband, das die Effizienz jedes einzelnen Teammitglieds verbessert.

Lassen Sie uns nun darüber sprechen, wie Sie den Prozess der Arbeit an einem Softwareprodukt organisieren.

▍Verwenden Sie Task-Tracker


Hier finden Sie die Mechanismen der Plattformen, auf denen Sie den Code platzieren, nützlich - GitHub, Gitlab, BitBucket und andere. Mithilfe von Aufgaben können Sie Fehlermeldungen verfolgen, dem Produkt neue Funktionen hinzufügen und Informationen zu wichtigen Projektänderungen organisieren. Es sollte beachtet werden, dass Sie bei der Eingabe des Titels und der Beschreibung der Aufgabe gezwungen sind, Gedanken klar zu formulieren und das Problem und mögliche Lösungswege klar zu beschreiben. Die Idee, Aufgaben zu verwenden, kann entwickelt werden, indem Sie ein Aufgabenverwaltungstool wie Trello oder GitHub Projects in Ihren Workflow einführen.


Herausforderung

▍Verwenden Sie Pull-Anforderungen


Viele Entwickler bevorzugen es, Änderungen mithilfe von Push-Anforderungen direkt an den Hauptzweig ihres Projekts zu senden, der als Master bezeichnet wird. Der Ansatz, Änderungen am Projektcode mithilfe von Pull-Anforderungen vorzunehmen, hat jedoch einige wichtige Vorteile. Erstens erleichtern solche Anforderungen die Analyse von Änderungen in Bezug auf die Einführung einer bestimmten neuen Funktion oder Fehlerbehebung in das Projekt und wie sie sich nach dem Zusammenführen mit der Hauptcodebasis darauf auswirken. Wenn Pull-Anforderungen mit Aufgaben aus dem Task-Tracker verknüpft sind, erleichtert ihre Verwendung außerdem das Verständnis der Entwicklung des Projekts, sodass beim Lesen des Codes keine Informationen mehr erforderlich sind.


Anforderungsdetails abrufen

▍ Führen Sie benutzerdefinierte Codeüberprüfungen durch


Die Empfehlung zum Überprüfen von nativem Code mag seltsam klingen, aber trotzdem sollten Entwickler ihren eigenen Code so analysieren, als ob jemand anderes ihn geschrieben hätte. Einige Programmierer empfehlen, eine Pull-Anfrage zu stellen, eine Weile abzulenken und diese dann zu überprüfen, bevor sie in den Code aufgenommen wird. Durch Ausführen von Codeprüfungen, die außerhalb der für den Programmierer üblichen Umgebung in Form seiner IDE durchgeführt werden, können Sie den Code neu betrachten. Dies hilft, Fehler zu finden und im Code etwas zu erkennen, das unter normalen Bedingungen ignoriert werden kann. Darüber hinaus zwingen Codeüberprüfungen den Entwickler, sich verschiedene Fragen zu stellen: „Warum wurde diese Gelegenheit auf diese Weise implementiert? Was könnte hier falsch gemacht werden? Gibt es einen effizienteren Weg, um dieses Problem zu lösen? “

▍ Bewahren Sie einen aussagekräftigen Verlauf des Projekts im Repository auf


Versuchen Sie, Commits zu machen, als ob Sie in einem Team arbeiten. Vermeiden Sie nämlich zu große Commits und stellen Sie sicher, dass die Commit-Nachrichten ihre Bedeutung klar und deutlich beschreiben. Genau wie bei Codeüberprüfungen zwingt das Schreiben hochwertiger Commit-Nachrichten den Entwickler, sorgfältig über ihre Aktionen nachzudenken und sich Fragen wie die folgenden zu stellen: „Was versuche ich mit diesem Commit zu erreichen? Wie versuche ich das zu erreichen? "

Es kann Situationen geben, in denen Sie sich erlauben können, von den Regeln abzuweichen. Sie können beispielsweise festlegen, dass Sie, wenn Sie geringfügige Änderungen am Code vornehmen (z. B. das Beheben von Tippfehlern), ohne unnötige Bewegungen eine Push-Anfrage direkt an den Hauptzweig senden können, um die Arbeit aufgrund von Kleinigkeiten nicht zu verlangsamen.

Unabhängig von den Regeln, die Ihrem Workflow zugrunde liegen, ist das Wichtigste, dass alles, was Sie tun, absichtlich und nicht zufällig erfolgt. Erfolgreiche Projekte entstehen nicht von alleine: Sie entstehen mit Liebe und Sorgfalt. Absichtlich durchgeführte Aktionen umfassen bestimmte Zeiträume der Analyse der Situation, der Analyse komplexer Fälle und der Reflexion darüber, wie beispielsweise mit Hilfe der Tools, mit denen Sie umgehen können.

Erstellen Sie wiederverwendbare Komponenten und Module


Implementieren Sie die Prinzipien von DRY , SOLID und FIRST . Erstellen Sie Programme aus kleinen, gekapselten atomaren Komponenten, die zur Wiederverwendung geeignet sind. Halten Sie diese Komponenten auf dem neuesten Stand und setzen Sie sie mithilfe geeigneter Plattformen wie Bit zu Sammlungen zusammen. All dies wird Ihnen helfen, die Geschwindigkeit und Qualität der Arbeit zu erhöhen.

Dokumentation schreiben


Dokumentation ... Für viele ist dies ein wunder Punkt. Viele Menschen wissen, dass Softwareprojekte Dokumentation benötigen. Diejenigen, die gute Dokumentationen schreiben, sind bereits viel weniger und noch weniger, die dies gerne tun. Nachdem die nächste faszinierende Phase des Schreibens von Code abgeschlossen ist, wird die Notwendigkeit, ihn zu dokumentieren, häufig zu einer Aufgabe, die Sie einfach vergessen möchten. Wie kann man in Form von Klartexten alle Feinheiten des Programmcodes ausdrücken?

Übrigens ist es angebracht, eine Frage zu stellen, warum dies alles notwendig ist. Tatsache ist, dass Menschen dazu neigen, Fehler zu machen. Wir können etwas vergessen. Wir haben schlechte Tage. Oder wir arbeiten an einem bestimmten Projekt und arbeiten einfach an etwas anderem. Mit der Dokumentation können Sie Kenntnisse über den Code erfassen, die andernfalls an eine bestimmte Person gebunden sind. Durch die Dokumentation des Codes können Entwickler den Code auch allgemeiner sehen, als er beim Schreiben verfügbar ist, und die Ziele der Projekte besser verstehen.

Die folgenden Ideen helfen Ihnen beim Schreiben einer guten Dokumentation.

  • Verstehen Sie, dass Ihre Dokumentation kein Buch ist. Die Dokumentation sollte kein Beispiel für hohe literarische Kunst sein. Niemand wird sie hinsichtlich ihres künstlerischen Verdienstes bewerten. Versuchen Sie nicht, alles darin zu erklären. Bemühen Sie sich, klar und verständlich zu sein. Manchmal reichen schon ein paar Sätze, um etwas zu beschreiben.
  • Schreiben von Dokumentation vor dem Schreiben von Code. Dokumentieren Sie die Schnittstellen Ihrer Module, beschreiben Sie die Reihenfolge ihrer Arbeit aus Sicht eines externen Beobachters. Diese Dokumentation spielt die Rolle von Produktspezifikationen und hilft Ihnen beim Entwicklungsprozess.
  • Schreiben von Dokumentation nach dem Schreiben von Code. Auch hier lohnt es sich, an der Position eines „externen Beobachters“ festzuhalten. Was ist im beschriebenen Codefragment wichtig? Was müssen Sie über die Verwendung wissen (oder um zu seiner Entwicklung beizutragen?). Die Spezifikationen, die in der Dokumentation angegeben sind, die vor dem Schreiben des Codes während der Entwicklung erstellt wurde, können sich ändern. Daher ist es wichtig, diese Dokumentation nach Abschluss der Arbeiten auf Übereinstimmung mit dem tatsächlichen Stand der Dinge zu überprüfen.
  • Schreiben von Dokumentation beim Schreiben von Code. Dieser Dokumentationsansatz ist hauptsächlich auf Kommentare anwendbar, die dem Code während der Entwicklung hinzugefügt wurden. Es gibt viele Materialien zu diesem Thema, daher werde ich hier nicht auf Details eingehen.
  • Dokumentation und "Module". Alle oben genannten Prinzipien gelten für Module. Hier wird der Begriff "Modul" im weitesten Sinne verwendet. Dies kann eine Funktion, eine Klasse, eine neue Gelegenheit, eine Änderung des Verhaltens eines Programms, tatsächlich ein bestimmtes Programmmodul oder das gesamte Projekt sein. Wenn die Dokumentation solcher „Module“ zu schwierig erscheint, versuchen Sie, sie in kleinere Teile zu zerlegen. Wenn es für Sie einfacher ist, in allgemeineren Kategorien zu denken, sollten Sie die Dokumentation für die größeren Blöcke des Projekts schreiben.

Kommunizieren Sie mit Kunden und Kunden, die gemeinsam mit Ihnen an der Produktentwicklung beteiligt sind


Das, was wir als „Kommunikation“ bezeichnen, gilt hier hauptsächlich für Situationen, in denen ein Projekt von einem kleinen Team entwickelt oder auf Bestellung angefertigt wird.

Warum wird das benötigt? Tatsache ist, dass Transparenz der Arbeit zu einer Erhöhung der Verantwortung der ausübenden Künstler führt. Wenn Sie wissen, dass Sie jemandem (einem Teammitglied oder einem Kundenvertreter) etwas mitteilen müssen, können Sie vorsichtiger sein, was Sie tun. Aus diesem Grund praktizieren viele Unternehmen kurze Besprechungen, bei denen Mitarbeiter über ihre Arbeit berichten.

Darüber hinaus ist ein Mitglied des Teams häufig mit einem für ihn schwierigen Problem konfrontiert, das leicht gelöst werden kann, indem es einfach mit einem Kunden oder einem anderen Mitglied des Teams besprochen wird. Ich habe bereits die Zählung verloren und erinnere mich an die Fälle, in denen ich meine Hände wirklich fallen ließ, um zu verstehen, warum das, was ich geschrieben habe, nicht funktioniert. Der Grund dafür war, dass ein anderes Mitglied des Teams Änderungen an dem Projekt vorgenommen hat, die meinen Code störten. Um dies zu verstehen, genügte es, das Problem in die öffentliche Diskussion zu bringen.

Hier finden Sie einige Richtlinien für die Kommunikation mit Kunden und Programmiererteammitgliedern.

  • Wenn Sie auf ein unerwartetes Problem stoßen, informieren Sie die Teammitglieder oder den Kundenvertreter darüber.
  • Informieren Sie den Kunden regelmäßig über den Fortschritt des Projekts. Versuchen Sie gleichzeitig, dass diese Informationen nicht nur mit technischen Problemen verknüpft sind.
  • Benachrichtigen Sie das Team über Planänderungen.
  • Versuchen Sie, eine bequeme Kommunikationsumgebung zu organisieren, in der beispielsweise jedes Teammitglied schnell herausfinden kann, was jemand anderes tut. Sie können dies tun, indem Sie eine Vielzahl von Tools verwenden, beispielsweise WhatsApp, E-Mail, Slack oder alles andere, was zu Ihrer Situation passt.

Generell ist zu beachten, dass Sie versuchen sollten, die Interaktion zwischen allen Interessenten bequem und einfach zu organisieren, damit sozusagen die „Rückkopplungsschleife“ unverzüglich funktioniert. Dies hilft bei der Organisation eines gesunden und produktiven Arbeitsumfelds.

Organisieren Sie ein Überwachungssystem


Die Überwachung im Bereich der Softwareentwicklung ist ein sehr wichtiges Thema. Computer sind anfällig für Abstürze. Während der Projektbereitstellung treten Fehler auf. Die Versehen der Entwickler führen dazu, dass Programme, die anscheinend alle möglichen Prüfungen bestanden und erfolgreich in Betrieb genommen haben, mit Ausnahmen fallen. Deshalb muss sich der Entwickler um das Programmüberwachungssystem kümmern. Dies erleichtert die Lösung von Problemen, die in verschiedenen Phasen des Produktlebenszyklus auftreten können. Programmüberwachungsdaten sind ein Teil der oben genannten „Rückkopplungsschleife“. Die Überwachung gibt dem Programmierer eine Verbindung zur Realität, zur Umgebung, in der seine Programme arbeiten.

Hier einige Vorschläge zur Überwachung des Verhaltens von Programmen:

  • Speichern Sie Protokolle und Ergebnisse der automatischen Code-Analyse. Sie können console.log () dort verwenden, wo Sie es benötigen. Es ist besser, zu viele Informationen als zu wenig einzuzahlen. Versuchen Sie jedoch, einen „Mittelweg“ zu finden, damit die Protokolle Ihrer Programme keine unnötigen Details zu ihrer Arbeit enthalten. Dies erleichtert das Auffinden wichtiger Informationen in den Protokollen.
  • Finden Sie heraus, wo sich die Protokolle Ihrer Anwendungen befinden, und konfigurieren Sie die Mechanismen, mit denen Sie bequem mit ihnen arbeiten können. Die oben genannten „Mechanismen“ können eine beliebige Rolle spielen - von der Anmeldung am Server mit SSH über die Anzeige der neuesten im Protokoll aufgezeichneten Ereignisse bis hin zur Verwendung des ELK-Stacks. Das Wichtigste ist zu wissen, wo die Anwendungsprotokolle von console.log () oder auf andere Weise generiert werden.
  • Ausnahmen nicht ignorieren. Obwohl jeder Entwickler sich bemühen sollte, sicherzustellen, dass seine Anwendung stabil ist, könnte er im Falle eines Fehlers die Arbeitskapazität wiederherstellen und unerwartete Ausnahmen "beseitigen". Ein einfaches "Sperren" in einem Catch-Block wäre falsch. Es wäre viel besser, Informationen über unerwartete Ausnahmen zu protokollieren. Wenn Sie beispielsweise eine Art API zum Laden einiger vom Benutzer erstellter Daten verwenden (z. B. Tweets), sollten Sie darauf vorbereitet sein, den Fehler 404 zu behandeln. Bei den Fehlern, die Sie nicht verarbeiten, müssen Sie jedoch protokollieren. Ich befand mich in einer Situation, in der ich ohne Protokollierung von Informationen über unerwartete Fehler einfach nicht wusste, dass ich die Anzahl der Anrufe an ein System ausgeschöpft hatte. Dies führte dazu, dass der Zugriff auf die entsprechende API zu meinem Programm geschlossen wurde.
  • Überprüfen Sie die Protokolle. Das Überprüfen der von den Ergebnissen der Anwendungen generierten Protokolle kann entweder manuell oder mithilfe einiger Mittel für ihre automatische Analyse organisiert werden. Nachdem ich mich nicht besonders um die Protokollkontrolle gekümmert hatte, behebte ich ein kleines Problem im Programm und ging ruhig weiter meinem Geschäft nach. Wie sich später herausstellte, war meine Korrektur nicht funktionsfähig. Seitdem habe ich mich intensiv mit der Überprüfung von Anwendungsprotokollen nach deren Bereitstellung befasst, um die Richtigkeit ihrer Arbeit zu überprüfen.

Die Überwachung der Anwendungsaktivität und die Verfolgung von Leistungsindikatoren können verschiedene Formen annehmen. In seiner einfachsten Form kann dies darin bestehen, Daten über das Programm mit dem Befehl console.log () auszugeben, diese Informationen in Textdateien zu speichern und solche Dateien manuell zu analysieren. Die Überwachung kann auch ein ziemlich fortschrittliches System sein, das spezielle Tools wie Sentry, Bugsnag und Elastic APM enthält. Die Hauptsache ist, zu wählen, was zu Ihnen passt, und es konsequent zu verwenden.

Beobachten Sie das Projekt, ziehen Sie Schlussfolgerungen aus den Ergebnissen der Beobachtungen und verbessern Sie es


Du siehst aus, aber beobachtest nicht, und das ist ein großer Unterschied.
Arthur Conan Doyle, "Der Skandal in Böhmen"

Was in diesem Abschnitt erörtert wird, kann sowohl als unabhängige Empfehlung als auch als Ansatz zur Verwendung der anderen hier vorgestellten Empfehlungen betrachtet werden. Tatsache ist, dass es keine universelle Formel für die Organisation der Arbeit an einem Softwareprodukt gibt. Unterschiedliche Personen sind auf unterschiedliche Weise an der Softwareentwicklung beteiligt, verwenden unterschiedliche Überwachungsmethoden, dokumentieren Code unterschiedlich und so weiter. Unabhängig von den Arbeitsregeln für die von Ihnen ausgewählten Programme ist es daher wichtig, stets darauf zu achten, dass das Projekt überwacht wird, dass aus den Ergebnissen der Überwachung Schlussfolgerungen gezogen werden und dass dies letztendlich zu Programmverbesserungen führt.

Die Überwachung eines Programms umfasst eine kritische Analyse seines Verhaltens oder beispielsweise Indikatoren für seine Leistung. Indem Sie das Programm beobachten, bauen Sie eine Verbindung zwischen dem, was Sie sehen und dem, was Sie über das System wissen, auf und gelangen schließlich zu logischen Schlussfolgerungen darüber, was passiert. Demjenigen, der alleine arbeitet, wird normalerweise die Fähigkeit genommen, Programme zu analysieren, die in Organisationen verwendet werden (wie A / B-Tests oder Studien der Zielgruppe). Infolgedessen muss er aus "informellen" Quellen Hinweise auf die Lebensdauer seines Programms sammeln - beispielsweise Benutzerkommentare, Problemberichte in Task-Trackern und Anwendungsprotokolle.

. , . — , « — — ».

. , , . , UTC-. , .

, UTC. , , , 5:30 pm, 5:30 pm UTC. , . , . ? , . .

, , , — , . , , , . «5 » «2 ». , , , .

. , . , , , , , . , , .

Zusammenfassung


, , — , . ( ), , , . , , ( , ), , . , , . , , , , .

Liebe Leser! , «-»?

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


All Articles