7 Gewohnheiten von Hochleistungsprogrammierern

Anfänger verbringen viel Zeit damit, sich das Wissen anzueignen, das für die Vervollständigung des Interviews erforderlich ist. Sie lösen Probleme und verbessern ihre Lebensläufe. Der interessanteste Teil beginnt jedoch, nachdem der Programmierer die gewünschte Position erhalten hat - bei einem Startup, bei Google, bei Amazon oder anderswo. Es stellt sich oft heraus, dass das Wissen und die Fähigkeiten, die einer Person bei der Arbeitssuche geholfen haben, nicht dem entsprechen, was Sie wissen und in der Lage sein müssen, ihre täglichen Aufgaben auszuführen.



Der Autor des Artikels, dessen Übersetzung wir heute veröffentlichen, sagt, dass das Team, in dem er arbeitet, von TechLeads Geschichte über 7 Gewohnheiten hochwirksamer Programmierer inspiriert wurde . Die Teammitglieder beschlossen, ihre eigenen Gedanken zu diesem Thema zu äußern. Hier finden Sie in Form von Tipps eine Analyse der 7 Fähigkeiten effektiver Programmierer.

1. Lernen Sie, den Code eines anderen zu lesen



Alle außer Ihnen schreiben schrecklichen Code. Aus diesem Grund ist die Fähigkeit eines Programmierers, mit dem Code eines anderen zu arbeiten, eine wertvolle Fähigkeit. Diese Fähigkeit gibt demjenigen, der sie besitzt, viel Gutes.

Der Programmierer muss in der Lage sein, den Code eines anderen zu verstehen. Immerhin ist dies sein Job. Es spielt keine Rolle, wie verwirrend ein solcher Code ist oder wie schlecht er geschrieben ist. Übrigens könnte „der Code eines anderen“ das sein, was der Programmierer selbst vor etwa einem Jahr geschrieben hat.

Diese Fähigkeit wirkt sich auf zwei Arten positiv auf den Programmierer aus. Erstens ermöglicht die Fähigkeit, den Code eines anderen zu lesen, zu verstehen, wie Code von schlechter Qualität funktioniert. Wenn Sie die Arbeit anderer durchsehen, können Sie herausfinden, welche Techniken Arbeiter sind und welche nicht. Zweitens, und was noch wichtiger ist, hilft es, die Besonderheiten der Wahrnehmung des Codes eines anderen durch andere Personen aufzudecken, um herauszufinden, welcher Code leicht und welcher schwierig wahrgenommen wird.

Wenn Sie den Code eines anderen lesen und darin etwas finden, das Ihnen nicht gefällt, versuchen Sie, nicht darüber zu schweigen. Dies erhöht Ihre Glaubwürdigkeit in den Augen der Kollegen.

Achten Sie darauf, mit wem Sie zusammenarbeiten, wie wichtig es ist, einfach zu wartenden Code zu schreiben und wie wichtig gute Kommentare sind. Dies wird Ihren Status im Team weiter stärken.

Ihr eigener Code sollte in einer so hohen Qualität gestaltet sein, dass er klar und ohne Dokumentation ist. Tatsächlich müssen gute Programmierer den Code nicht dokumentieren. Dies ist Zeitverschwendung, die Zeit, die besser für die Programmierung und für Besprechungen aufgewendet werden sollte.

Die Fähigkeit, Code von geringer Qualität zu verstehen, hilft unter anderem dabei, Änderungen an diesem Code vorzunehmen. Manchmal bedeutet dies, Code zu bearbeiten, in dem jemand nicht sehr gut darin ist. Eines Tages stießen wir beispielsweise auf ein Skript mit Technologien wie PowerShell, Python und Perl. In Perl haben wir nicht sehr gut verstanden. Wir haben es jedoch geschafft, das Projekt ziemlich tief zu verstehen, die Essenz des Geschehens zu verstehen und die notwendigen Änderungen am Code vorzunehmen. Dies wurde möglich, weil wir den Code verstanden haben, den wir ändern mussten, einschließlich des Codes von Perl-Skripten.

Die Fähigkeit, den Code eines anderen zu verstehen, erhöht den Wert des Programmierers, da er verstehen kann, wie selbst hochentwickelte Systeme angeordnet sind, sodass jemand anderes einfach aufgibt, wenn Sie sie betrachten.

2. Entwickeln Sie ein Gespür für erfolglose Projekte


Es gibt viele Fähigkeiten, deren Beherrschung einige Zeit in Anspruch nimmt. Eine davon, die es sicher wert ist, gemeistert zu werden, besteht darin, ein Verständnis dafür zu entwickeln, mit welchen Projekten Sie sich nicht befassen sollten und welche Projekte mit hoher Wahrscheinlichkeit zu einem "Wettlauf ums Überleben" führen können.

In großen Unternehmen gibt es immer viele Projekte, an denen Programmierer arbeiten. Aber nicht alle diese Projekte werden abgeschlossen sein. Nicht alle von ihnen werden von Vorteil sein. Unter ihnen können diejenigen sein, die keine kommerzielle Bedeutung haben (zumindest für den Programmierer). Einige Projekte, die im Allgemeinen vielversprechend sind, können unter Managementmängeln leiden. Dies bedeutet nicht, dass Sie einige Ideen sofort aufgeben sollten, nachdem Sie festgestellt haben, dass Sie mit denen, die sie anbieten, nicht einverstanden sind. Wenn der Autor der Idee jedoch nicht klar erklären kann, welchen Nutzen das Unternehmen nach seiner Fertigstellung für das Projekt bringen kann, lohnt es sich möglicherweise nicht, ein solches Projekt zu starten.

Darüber hinaus sind einige Projekte möglicherweise zu technologieorientiert, anstatt ein bestimmtes Problem zu lösen. Dies lässt uns manchmal schon zu Beginn der Arbeit verstehen, dass der Abschluss eines solchen Projekts nicht viel Nutzen bringt.

Um auf einen Blick zu lernen, vielversprechende Projekte zu erkennen, müssen Sie an vielen solchen Projekten teilnehmen. Wenn Sie sich in der Anfangsphase der Karriere eines Programmierers befinden, verbringen Sie daher nicht zu viel Zeit damit, die Aussichten aller Projekte zu bewerten, die Sie erreichen. Im Laufe der Zeit entwickeln Sie einen inneren Instinkt, an dem Sie Projekte, die zum Scheitern verurteilt sind, schnell erkennen können.

3. Vermeiden Sie Besprechungen



Was auch immer Sie arbeiten, Sie können nicht ohne Besprechungen auskommen. Dies gilt für absolut jeden. Tatsache ist, dass Sie eine gemeinsame Sprache mit Projektmanagern, Benutzern und Kunden finden müssen. Besprechungen haben jedoch eine unangenehme Eigenschaft: Manchmal nehmen sie plötzlich fast den gesamten Arbeitstag in Anspruch. Deshalb ist es sehr wichtig zu lernen, unnötige Besprechungen zu vermeiden. Vielleicht wäre es besser, „Besprechungen nicht zu vermeiden“, sondern „die für Besprechungen aufgewendete Zeit zu kontrollieren“. Ziel ist es, Zeit nur für die Sitzungen zu verwenden, die wirklich notwendig sind, und für diejenigen, die zur Entwicklung von Projekten beitragen.

Die gebräuchlichste Zeitmanagementmethode für Besprechungen besteht darin, jeden Tag einen zweistündigen Block zuzuweisen, der sich in eine kontinuierliche Besprechung verwandelt. Viele richten wiederkehrende Besprechungen für die Zeit ein, die sie für am besten geeignet halten. Diese Treffen werden verwendet, um Arbeitsthemen zu diskutieren.

Eine andere Möglichkeit, die Zeit zu verwalten, besteht darin, früher als andere zur Arbeit zu kommen, um Ihr Unternehmen zu verwalten. Zum Beispiel bevorzugen wir genau das. Übrigens, wenn Sie früh ins Büro kommen, wird es viel ruhiger sein, dort zu arbeiten als gewöhnlich. Die meisten Leute, die früh kommen, sind gleich. Sie tun dies, um Zeit für ihre Arbeit zu haben. Daher stören sie nicht die Arbeit anderer.

In unserem Fall ist dies für einzelne Teammitglieder wichtig. Tatsache ist, dass unsere Arbeit Zeit braucht, um sich voll und ganz auf eine bestimmte Aufgabe zu konzentrieren. Derzeit kommunizieren wir mit niemandem. Natürlich gibt es Situationen, in denen Sie ein Problem mit jemandem besprechen und zusammenarbeiten müssen, um es zu lösen. Nachdem alle Fragen geklärt sind, muss der Entwickler nur noch Code schreiben. Im Allgemeinen geht es darum, in eine bestimmte Komfortzone zu gelangen, in der der Programmierer ständig alles im Auge behalten kann, was mit der von ihm gelösten Aufgabe zusammenhängt. Wenn er ständig unterbrochen wird, kann es sein, dass er Schwierigkeiten hat, schnell zu dem zurückzukehren, wovon er abgelenkt war.

4. Master GitHub



Wenn Sie sich einige hochkarätige Programmierer ansehen, haben Sie das Gefühl, dass sie GitHub bereits am ersten Tag ihres Lebens verwendet haben. Sie verstehen die Bedeutung jedes Befehls und Parameters und können ihre Angelegenheiten leicht erledigen.

Aber andere begegnen GitHub zum ersten Mal bei ihrem ersten Job. Für sie ist GitHub eine echte Hölle, aufgebaut aus obskuren Teams und mysteriösen Prozessen. Sie sind sich nie ganz sicher, was sie tun. Deshalb sind alle Arten von "Spickzettel" auf GitHub sehr beliebt.

Dies gilt für jedes Versionskontrollsystem. Wenn es richtig verwendet wird, ist es sehr nützlich. Wenn Sie es falsch verwenden, stört es die Arbeit schrecklich. Eine einfache PR oder ein Commit kann leicht zu einem Albtraum werden, der einen Programmierer mehrere Stunden in Anspruch nimmt. Diese Zeit wird darauf verwendet, die Feinheiten von Zweigen und Gabeln zu enträtseln. Wenn Sie außerdem regelmäßig vergessen, die neueste Version des Repositorys auf Ihren Computer herunterzuladen, können Sie sich ständig mit Zusammenführungskonflikten befassen. Daran ist nichts Gutes.

Wenn Sie einen "Spickzettel" auf GitHub benötigen, tun Sie es.

Erfahren Sie, wie Sie produktiv mit GitHub arbeiten. In diesem Fall spielt es keine Rolle, wie genau Sie dies erreichen.

5. Schreiben Sie einfachen Code, der leicht zu pflegen ist



Einige unerfahrene Programmierer haben die folgenden Eigenschaften: Sie versuchen in einem Projekt, alles zu realisieren, was sie wissen. Der Punkt hier ist, dass sie sich bemühen, ihr Wissen über objektorientierte Programmierung, Datenstrukturen, Entwurfsmuster und neue Technologien in jedem von ihnen erstellten Code zu nutzen. Dies verkompliziert den Code unnötig, da bei diesem Ansatz die Aufgabe des Programmierers leicht durch beispielsweise die Entwurfsmuster beeinflusst werden kann, die er bereits in der Praxis implementiert hat.

Es besteht ein Gleichgewicht zwischen zu komplexen Projektstrukturen und einfachem Code. Entwurfsmuster und objektorientierte Programmierung sollen den Code in Großprojekten vereinfachen. Je mehr wir jedoch auf Abstraktion und Kapselung zurückgreifen, je mehr Blackboxen in unseren Lösungen enthalten sind, desto schwieriger ist es, den Code für solche Lösungen zu debuggen.

6. Lernen Sie, nein zu sagen und Prioritäten zu setzen


Diese Empfehlung kann in der Tat jedem gegeben werden - zumindest einem Finanzanalysten, zumindest einem Programmierer. Man kann jedoch feststellen, dass jeder das Gefühl hat, von Technikern etwas Besonderes zu wollen. Wenn Sie beispielsweise ein Datenanalyseingenieur sind, werden Ihnen möglicherweise Aufgaben angeboten, die viel umfassender sind als das, was Sie tun sollen. Einige Teams benötigen eine Art Datenprobe, andere zusammenfassende Daten und andere neue Pipelines.

Es sollte beachtet werden, dass die Fähigkeit zur Priorisierung und die Fähigkeit, Nein zu sagen, tatsächlich zwei getrennte Fähigkeiten sein können. Diese Fähigkeiten sind jedoch sehr eng miteinander verbunden. Wenn einer von ihnen benötigt wird, wird normalerweise der zweite benötigt. Bei der Priorisierung wird nur Zeit darauf verwendet, was schwerwiegende Auswirkungen auf das Unternehmen hat. Und die Fähigkeit, Nein zu sagen, ist eine Weigerung, die Arbeit zu tun, die jemand anderes tun sollte.

Zu lernen, wovon wir sprechen, kann schwierig sein, da die Leute oft danach streben, jedes Problem zu lösen, das ihnen gestellt wird. Dies gilt insbesondere für diejenigen, die gerade verlernt haben und ihren ersten Job bekommen haben. Zuvor erhielten sie in ihrem Studium Aufgaben, mit denen sie gut fertig wurden. Jetzt, bei der Arbeit, erwarten sie dasselbe und bemühen sich, niemanden zu enttäuschen.

Hier muss man verstehen, dass es in großen Unternehmen unendlich viele Aufgaben gibt. Das Wichtigste ist, nur die Aufgaben zu übernehmen, die gelöst werden können.

Es gibt viele Fähigkeiten, die in einem Interview nicht getestet werden. Sie sind in der Schule selten verfügbar. Oft entsteht diese Situation nur aufgrund der Merkmale der Lernumgebung und nicht, weil jemand den Schülern nicht die tatsächlichen Aufgaben zeigen möchte, denen sie in der Realität gegenüberstehen können.

7. Lernen Sie darüber nachzudenken, wie Ihre Entwicklung genutzt wird.



Es gibt eine Fähigkeit, für die es schwierig ist, einen Test während eines Interviews zu organisieren. Situationen, in denen es benötigt wird, sind während des Studiums schwer zu reproduzieren. Es geht um die Fähigkeit, die Fehler zu erkennen, die der Endbenutzer eines Softwaresystems machen kann. Wir nennen dies normalerweise "Durchdenken der Anwendungsfälle des Programms".

Tatsächlich ist dieses „Szenario-Denken“ nur ein eher weicher Name für das, was als „Schutz vor dem Narren“ bezeichnet wird.

Da der Programmierer den Code hauptsächlich unterstützt, muss er häufig den Code ändern, der eng mit etwas anderem zusammenhängt. Selbst eine einfache Änderung von etwas erfordert die Suche nach all den Orten, an denen es verwendet wird. Beispielsweise kann sich ein Objekt, eine Methode oder eine API eines bestimmten Systems ändern. Wenn Sie eine unangemessene Änderung am System vornehmen, kann dies die Arbeit völlig unerwarteter Teile des Programms „unterbrechen“. Darüber hinaus handelt es sich um Änderungen jeglicher Größenordnung - sogar um eine Art Änderung in der Datenbank.

Diese Fähigkeit umfasst auch die Fähigkeit, Grenzsituationen zu finden und zu analysieren, die bei der Arbeit mit dem System auftreten können. Dies schließt auch die Fähigkeit ein, ein Entscheidungsschema auf hoher Ebene in der Entwurfsphase zu verstehen.

Dies gilt auch für die Entwicklung größerer Systemteile wie Module oder Microservices. Wenn Sie mit der Lösung solcher Probleme beginnen, müssen Sie darüber nachdenken, wie genau die Entitäten verwendet werden, die Sie erstellen möchten. Sie müssen über die Szenarien ihres Missbrauchs nachdenken, über die verschiedenen Optionen für ihre Verwendung und darüber, dass das, was Sie erstellen, auf den ersten Blick völlig offensichtlich sein kann.

Das Schreiben von Code ist nur ein Teil der Aufgabe, ein bestimmtes Problem zu lösen. Es ist einfach, ein Programm zu erstellen, das auf Ihrem Computer gut funktioniert. Aber der Code, mit dem jemand anderes arbeitet, kann sich leicht ganz anders verhalten als ursprünglich erwartet. Wie wird der von Ihnen geschriebene Code in der Produktion verwendet? Mit welchen Systemen muss er interagieren? Zu welchen Prozessen kann es gehören? Wäre er nicht zu primitiv und auf einen Programmierer beschränkt, der ihn nach ein paar Jahren unterstützen müsste? Das sind sehr schwierige Fragen.

Zusammenfassung


In diesem Artikel haben wir Ihnen einen Überblick über 7 Fähigkeiten gegeben, die Hochleistungsprogrammierern gemeinsam sind. Wir hoffen, dass Sie unter ihnen diejenigen gefunden haben, die Sie selbst entwickeln möchten.

Liebe Leser! Was würden Sie raten, um jemanden zu meistern, der Professionalität in der Programmierung anstrebt?

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


All Articles