Acht wichtige Programmierergewohnheiten

„Eine Person kann nur durch Bildung eine Person werden. Er ist das, was Bildung aus ihm macht. “
I. Kant
Meiner Meinung nach ist dieses Zitat sehr gut für Programmierer geeignet. In der Tat ist ein Programmierer nicht nur ein Spezialist, der sich mit technischen Fragen auskennt. Ein Programmierer ist in erster Linie ein Handwerker, der jeden Tag mit seinem Wissen Code erstellt. Das Erstellen von gutem Code ist ohne den disziplinierten Einsatz bestimmter Fähigkeiten nicht möglich. Und diese regelmäßige Verwendung ist das, was Gewohnheiten sind.

Es kam vor, dass schlechte Gewohnheiten uns am Leben und Arbeiten hindern und gute die Produktivität steigern und im Allgemeinen eine Person mehr Freude am Leben hat. Wenn Sie sich anstrengen und anfangen, gute Gewohnheiten zu erwerben und zu pumpen, werden Sie sehr bald bemerken, wie Sie ein Spezialist auf einem höheren Niveau werden. Aber das ist noch nicht alles. Ihre Kollegen werden auch schnell Veränderungen zum Besseren bemerken, und dies wird sie dazu zwingen, nützliche Techniken zu lernen und anzuwenden. Wenn Sie in einem Team mit Code arbeiten, können Sie die Einstellung der Person zur Arbeit in jedem Commit lesen.

Lassen Sie uns also die acht nützlichen Gewohnheiten eines Programmierers durchgehen, die Sie zum besten Profi machen.

1. Nicht wiederholen (TROCKEN - Wiederholen Sie sich nicht)


Sie sind wahrscheinlich auf die Tatsache gestoßen, dass Sie beim Betrachten des nächsten Codeabschnitts denken: "Hmm, hier habe ich bereits etwas Ähnliches getan, aber mit unterschiedlichen Argumenten, und im Allgemeinen gab es ein anderes Datenarray."

Dies sollte ein Aufruf an Sie sein, diesen Code in Zukunft mit kleinen Änderungen der Bedingungen und Daten zu wiederholen. Wenn Sie dieses Signal jedoch nicht beachten oder es eilig haben, werden Sie den Algorithmus höchstwahrscheinlich erneut von Grund auf neu schreiben, wenn in Zukunft eine ähnliche Lösung benötigt wird. Allmählich werden sich solche Algorithmen ansammeln, der Code wächst und am Ende verlieren Sie völlig die Motivation, solche Nudeln zu bearbeiten und zu verbessern.

Entwickeln Sie daher eine gute Angewohnheit, dem DRY-Prinzip zu folgen (nicht wiederholen). Wenn Sie sich beim Schreiben eines ähnlichen Algorithmus ertappen, nehmen Sie sich Zeit, um über mehrere mögliche Optionen mit verschiedenen Entitäten nachzudenken. Organisieren Sie eine kleine generische Funktion oder sogar eine Klasse, wenn der Algorithmus komplex ist. Dies dauert etwas länger als das Schreiben einer schnellen Lösung für eine bestimmte Aufgabe, spart jedoch in Zukunft unglaublich viele Stunden für das Debuggen und Testen.

Allmählich sammelt sich eine ganze Bibliothek solcher Leerzeichen in Ihnen an, und Sie können sie problemlos in jedem Projekt verwenden.

Die Programmierung als Ganzes besteht aus so kleinen Anstrengungen, die dabei ausgeführt werden. Lassen Sie sich ein wenig mehr herausdrücken, als derzeit erforderlich ist. Dann wirst du anfangen zu wachsen.

Es gibt eine ganze Liste ähnlicher Prinzipien, deren Einhaltung sehr nützlich ist. Aber meiner Meinung nach ist DRY für alles andere in der Arbeit eines Programmierers von grundlegender Bedeutung.

2. Wenn Sie entschieden haben, dass alles erledigt ist, überarbeiten Sie


Die meisten Programmierer, insbesondere Anfänger, glauben, dass ihre Arbeit erledigt ist, sobald der Code beginnt, die Aufgabe wie beabsichtigt auszuführen. Erst jetzt beinhaltet das Wort "gemacht" ein breiteres Konzept als das triviale Schreiben von Code.

Funktioniert der Code richtig? Ja! Also, was ist der Deal?

Ja, das ist richtig. Bevor Sie mit der nächsten Aufgabe fortfahren, überprüfen Sie, was Sie geschrieben haben. Vom Anfang bis zum Ende. Höchstwahrscheinlich werden Sie feststellen, dass einige Variablen an einem ungünstigen Ort deklariert werden und nicht klar ist, warum sie benötigt werden. Möglicherweise gibt es auch eine zu lange Linie, die nicht in den Bildschirm passt. Dies bedeutet, dass Sie hier darüber nachdenken müssen, wie Sie ihn schöner machen können. Oder die Funktion hat sich als zu umfangreich herausgestellt und kann in mehrere Teile unterteilt werden.
Denken Sie an die Leute, die Ihren Code in Zukunft lesen werden. Ob sie diesen Code mögen oder kein Bier, kann es nicht herausfinden.

Treffen Sie eine schöne Entscheidung, nicht nur eine funktionierende. Genau wie gute Schriftsteller nach dem Schreiben eines Entwurfs: Sie lesen ihre Arbeit mehrmals und werfen unnötige Abschnitte weg, damit der Leser den Punkt mag und versteht, ohne sich mit unnötigen Details befassen zu müssen.

Ich empfehle dringend, Robert Martin zu diesem Thema zu lesen . Ein aufschlussreiches Buch, das sich in der Bibliothek eines jeden Programmierers befinden sollte.

3. Konzentrieren Sie sich auf Geschäftsaufgaben


Viele Programmierer konzentrieren sich auf das Studium der technischen Seite ihrer Arbeit und glauben, dass das Geschäft nichts mit ihnen zu tun hat. Die Hauptsache ist, gute technische Spezifikationen anzugeben, und dann werde ich alles bestmöglich tun. Nur um wirklich ein Meister Ihres Fachs zu werden, müssen Sie verstehen, warum das, was Sie tun, das Geschäft übernommen hat.

Wenn es sehr unhöflich ist, sich einen Programmierer vorzustellen, der nur mit TK arbeitet, ohne die Essenz zu verstehen, kann ein Beispiel gegeben werden. Der Busfahrer, neben dem die Passagiere sitzen und ihm sagen: "Biegen Sie links ab, biegen Sie rechts ab, jetzt rechts." Und so „fahren“ die Passagiere den Bus. Aber wenn der Fahrer die Initiative ergreift und fragt: „Wohin muss ich gehen?“, Dann kann der Passagier einfach sagen: „Wir fahren in die Stadt N“, und alles wird viel einfacher. Der Fahrer kennt das endgültige Ziel und kann anhand seiner Erfahrung selbstständig eine Route erstellen und sich selbst sagen, wo und wie er abbiegen soll.

Seltsamerweise machen sich viele Programmierer nicht die Mühe, den Zweck des Projekts zu verstehen. Einerseits können Sie diesen Standpunkt verstehen, da das Programmieren eine sehr schwierige mentale Arbeit ist. Manchmal spielt das Wissen über Ihr Instrument eine so große Rolle im Kopf, dass einfach nicht genug Ressourcen für alles andere vorhanden sind. Es stellt sich also heraus, dass Programmierer wie Fahrer in einem Panzer ohne Sichtfenster die Knöpfe nur drehen können, wenn der Crew Commander sie aushöhlt.

Wenn Sie das Geschäftsproblem verstehen, können Sie auch nicht in die Entwicklung von etwas eintauchen, das zu einem bestimmten Zeitpunkt völlig unnötig ist. Wenn die Aufgabe beispielsweise darin besteht, eine Funktion zu erstellen, mit der beim Bestehen der Tests Statistiken erstellt werden können, müssen Sie keine Zeit mehr für unnötige Optimierungen und die Beschleunigung des Algorithmus aufwenden, da Sie wissen, dass dies keine leistungskritische Aufgabe ist. Dies hat jedoch keinen Einfluss auf das Endergebnis. Tests werden nur von Entwicklern und nur einmal pro Woche durchgeführt.

Ein weiteres Beispiel: Wenn das Programm über eine Funktion verfügt, die alle Benutzer mehrmals täglich ausführen, ist es sinnvoll, mehr Aufwand für die Erarbeitung der idealen Version dieser Funktion und ihrer idealen Zugänglichkeit in der Benutzeroberfläche zu betreiben. Hier kann man schon keine Zeit mehr sparen.

Sie sehen jedoch, aus der Sicht eines Programmierers, der mit Geschäftsaufgaben nicht vertraut ist, scheinen beide Aufgaben gleichwertig zu sein.

Zum besseren Verständnis empfehle ich Ihnen, das Buch „Start with Why“ von Simon Sinek zu lesen .

4. Kleine Commits


Die Tatsache, dass ein Programmierer ein Versionsverfolgungssystem verwenden muss, ist meiner Meinung nach offensichtlich. Ich möchte über eine andere sehr nützliche Angewohnheit sprechen - dies ist, so oft wie möglich und in so kleinen Portionen wie möglich Commits zu machen. Fügen Sie gleichzeitig jedem Commit aussagekräftige und nützliche Kommentare hinzu.

Anfänger und noch erfahrene Programmierer am Ende des Tages machen oft einen Push mit all den geänderten Dateien und einer Art nutzlosem Kommentar wie „Problem beheben29“. Oder "einen Fehler in der Anfrage behoben." Niemand aus einer solchen Beschreibung wird verstehen, was speziell getan wurde. Und wenn es an der Zeit ist, ein so großes Commit in einem gemeinsamen Zweig zusammenzuführen, verdunkelt der Eigentümer des Repositorys zunächst den faulen Entwickler geistig. Zweitens, wenn während der Fusion ein Konflikt auftritt, ist es wahrscheinlich, dass der Eigentümer dieses Commit einfach zurücksetzt und es nicht akzeptiert. Wer möchte einen Teil der Fehler aus der Tatsache, dass er missverstanden hat, welche Bedingung sich bei der manuellen Lösung von Konflikten als überflüssig herausstellte.

Wenn Sie andererseits Ihre Änderungen regelmäßig einmal pro Stunde veröffentlichen und jedem Commit eine detailliertere Beschreibung geben, ist es in Zukunft einfach, ohne auf den Code zu achten, zu verstehen, was Sie geändert haben und welche Überlegungen Sie dazu angestellt haben Änderungen, dann erreichen Sie eine neue Ebene des Verständnisses der allgemeinen Philosophie des Schreibens von Code. Jetzt „reparieren“ Sie nicht nur den Primus, sondern werden Teil des Kreativteams und kommunizieren mit Ihren Kollegen über Ihre Commits, genau wie in einem Chat. Dies wird ein sinnvoller Dialog sein.

Als Literatur empfehle ich dringend, mindestens das erste Kapitel aus dem Buch „Git for a Professional Programmer“ von Scott Chacon und Straub Ben zu lesen. Wenn Sie herausfinden, welche wunderbaren Funktionen es in Git gibt und wozu es in der Lage ist, müssen Sie nur noch häufiger festschreiben, und der Rest kann mit den erforderlichen Tools erledigt werden.

5. Zählen Sie die Zeit


Jede Arbeit hat einen Anfang und ein Ende. Die Effektivität eines Programmierers wird an der Anzahl der Stunden gemessen, die er zur Lösung bestimmter Probleme benötigt. Je schneller die Aufgaben gelöst sind, desto besser. Dies ist ziemlich offensichtlich und bedarf keiner Erklärung.

Diese Beweise haben jedoch eine andere Seite, die sich Programmierern häufig entzieht: Sie müssen die für die Lösung aufgewendete Zeit genau berechnen. Nicht das, was Sie fühlen, wenn Sie von neun bis fünf Uhr bei der Arbeit sitzen, durchsetzt mit Siegeln und Besprechungen. Und die Gegenwart ist deine Arbeit.
Ganz am Anfang habe ich mir angewöhnt, die Zeit zu zählen, indem ich einfach Berichte darüber aufschrieb, was ich tagsüber getan habe, und eine ungefähre Zeit herausgefunden habe. Selbst dann habe ich grob berechnet, dass ich nur 4 von 8 Stunden bekomme, um effektiv zu arbeiten.

Und dann installierte er spezielle Programme, die die Zeit automatisch zählten. Zuerst habe ich www.rescuetime.com benutzt . Dank dieses Programms habe ich gesehen, dass soziale Netzwerke, obwohl es mir als kleine Verschwendung erschien, mein Leistungsbild wirklich verdorben haben. Am Ende habe ich beschlossen, den Zugriff auf einige Websites während der Arbeitszeit vollständig zu deaktivieren. Hierzu gibt es auch spezielle Plugins im Browser.

Der nächste Schritt in der Zeiterfassung war erforderlich, als ich mich entschied, den genauen Arbeitszeitpunkt mit dem Programmcode festzulegen. Dafür habe ich zuerst hubstaff.com ausprobiert . Wie sich herausstellte, eine ziemlich teure Lösung, wenn Sie sie bei der Arbeit in einem Team verwenden.

Dann versuchte wakatime.com. Und es stellte sich heraus, dass es diese Silberkugel war. Dieser Service kann in alle gängigen IDEs sowie in Github integriert werden. Auf diese Weise können Sie bis zu einer Minute genau bestimmen, wie viele nützliche Minuten Sie mit dem Programmieren verbracht haben. Darüber hinaus besteht eine Bindung an Commits. Es ist einfach wunderbar, wenn Sie nicht nur die Commits selbst sehen, sondern auch herausfinden können, wie viel Zeit für dieses Commit aufgewendet wurde.
Eine erstaunliche Sammlung von Rezepten für die richtige Organisation von Zeit und Arbeit an Projekten findet sich in dem Buch "Jedi Techniques" von Maxim Dorofeev .

6. Stabilität ist ein Zeichen der Meisterschaft.


Wie Sie wahrscheinlich bereits verstanden haben, können Sie Ihre Fähigkeiten und Fertigkeiten endlos weiterentwickeln. Was Sie vor einem Jahr getan haben, mag in Bezug auf Ihre neue Erfahrung lächerlich und unprätentiös erscheinen. Sie haben natürlich verbesserte Möglichkeiten, komplexe Ausdrücke zu schreiben.
Aber unter all dem müssen Sie die Gewohnheit entwickeln, sich an bestimmte Regeln zu halten. Verwenden Sie diese Arbeitsmethoden überall, auch wenn sie Ihnen nicht vollständig erarbeitet erscheinen.

Verwenden des Codebeispiels: Wenn Sie ein bestimmtes Schema zum Benennen von Variablen verwenden oder Leerzeichen anstelle von Tabulatoren verwenden möchten, befolgen Sie dieses Prinzip ständig. Sie müssen nicht jede Woche einen neuen Stil ausprobieren und versuchen, neue fortgeschrittene Praktiken anzuwenden. Sie verlieren also einfach Ihren Fokus.

Das Problem mit Unbeständigkeit ist, dass die Zeit jedes Softwareprodukt zerstört. Je länger einige Leute an dem Programm arbeiten, desto mehr Änderungen werden im Prozess vorgenommen, was letztendlich zu Chaos führt. Wenn sich jedes Teammitglied nicht an eine bestimmte Vereinbarung hält.

Was muss also getan werden, um das Prinzip der Konstanz einzuhalten?

Das erste, was Sie übernehmen müssen, ist, sich an einen bestimmten Stil im Code zu halten. Bei JetBrains- Editoren gefällt mir das Tool, das die Qualität Ihres Codes anzeigt, sehr gut. Früher hatte ich Angst vor so vielen Warnungen, aber wenn Sie anfangen, den Rat eines Linter diszipliniert zu befolgen, wird der Code klar und ästhetisch ansprechend.

Lesen Sie auch die Literatur zum Benennen von Klassen, Methoden und Variablen. Ich empfehle das Buch "Perfect Code" von Steve McConnell.

Einmal las ich dieses Buch eine halbe Stunde am Abend, als alle anderen bereits das Haus verließen. Das Buch war in der Bürobibliothek. Nur ein paar Monate später sah ich all das Grauen, das ich vor dieser Zeit verschlüsselt hatte. Ich musste nach und nach neue Techniken einführen und Refactoring durchführen.

7. Mach es einmal


"Ich werde es etwas später beheben." Jeder von uns hat dies für sich selbst ausgesprochen, als er auf einen Fehler in seinem Code oder eine unzureichend korrekte Bedingung für die Verarbeitung in einer Schleife gestoßen ist. Und jeder von uns weiß, dass dies "später behoben" wird und bleibt dann in Form von Kommentaren im Codemachen. Und wenn Sie selbst Codekommentare im Stil sehenmachenEs bedeutet nur, dass jemand nicht dem Prinzip "hier und jetzt tun" folgt. Im Moment, in dem dieser Kommentar geschrieben wurde, versteht der Programmierer höchstwahrscheinlich sehr gut, was das Problem ist und wie es behoben werden kann. Weil es im Kontext der aktuellen Aufgabe steht. Wenn Sie jedoch später zu diesem Abschnitt des Codes zurückkehren, ist es schwieriger zu verstehen, warum eine solche Reservierung erforderlich war.
Machen Sie es sich daher zur Gewohnheit, die Lösung von Grund auf neu zu erarbeiten, bis die Aufgabe vollständig erledigt ist. Das vollständigste - weil es wirklich unrealistisch ist, alle Optionen zu hundert Prozent abzudecken. Aber lassen Sie wenigstens keinen Platz für diesemachen-Bemerkungen. Wenn Sie sich die Zeit für einen Kommentar genommen haben, bedeutet dies, dass für den nächsten Schritt - die Implementierung - nur noch sehr wenig übrig ist.

Ein guter Weg, um zu verstehen, dass Sie diesen Code wirklich fertiggestellt haben, besteht darin, einen Test zu erstellen, um nach mehreren eingehenden Bedingungen zu suchen.

8. Hören Sie niemals auf zu lernen


Dies scheint eine offensichtliche Fähigkeit zu sein, die jeder Spezialist benötigt, nicht nur ein Programmierer. Aber leider vergessen viele ihn. Manchmal frage ich meine Freunde, die an der Programmierung beteiligt sind, welche Bücher sie kürzlich gelesen haben. Oft erinnern sich viele nur schwer daran, was sie vor ein oder zwei Jahren gelesen haben. Gleichzeitig beherrschten sie ein paar Tricks an der Universität oder in einigen Kursen und verwendeten sie die ganze Zeit.

Wenn Sie jedoch in einem sich so schnell entwickelnden Umfeld mindestens einmal im Monat anhalten, um sich mit einem neuen Werkzeug, einer neuen Technologie oder einem interessanten Konzept vertraut zu machen, werden Sie nach einer Weile feststellen, dass Sie buchstäblich nicht verstehen, was in der Gegenwart geschieht.

Das ist mir einmal passiert. Ich habe ein erfolgreiches Produkt entwickelt und es für eine Weile verkauft. Natürlich habe ich Geschichten über neue Frameworks gehört, aber ich habe ihnen nicht viel Aufmerksamkeit geschenkt. Er war tief in die Entwicklung und Unterstützung seiner Lösung vertieft.

Erst als der Kundenstrom abnahm, wurde mir klar, dass mein Produkt modernisiert werden musste. Und dann bin ich auf eine riesige Barriere gestoßen. Früher habe ich nur PHP und sehr selten AJAX-Funktionen verwendet. Und um die modernen React, Angular, Vue JS-Frameworks zu verstehen, musste ich dringend etwa ein Jahr damit verbringen, sie in Büchern zu studieren. Das Interessanteste ist, dass mein Produkt nicht an Wettbewerbsfähigkeit verlieren würde, wenn ich zuvor genügend Zeit für das Training aufgewendet hätte. Anstatt alte Funktionen zu unterstützen, war es nur notwendig, neue zu lernen und Technologien schrittweise einzuführen, und nicht in einem solchen Notfallmodus.

Fazit


Auch wenn Sie hundertprozentig von Ihren Fähigkeiten überzeugt sind, denken Sie daran, dass der Perfektion keine Grenzen gesetzt sind. Hören Sie nicht auf, sich provokative Fragen zu stellen. Geben Sie zu, dass Sie in einigen Bereichen nicht ausreichend ausgebildet sind oder die subtilen Punkte in den bekannten Frameworks nicht kennen, aber Sie möchten sie gerne kennen. Es ist jetzt sehr einfach, ein paar Stunden damit zu verbringen, die Testversion direkt von github auf dem lokalen Server auszuführen.

In solch kleinen Experimenten werden Sie Ihre Fähigkeiten trainieren und alle wichtigen Gewohnheiten entwickeln.

All Articles