Meta-Fähigkeiten von Softwareentwicklern

Aus Büchern über Korrektheit und Mustererkennung lernen



Ein paar Gedanken darüber, wie man Software gut erstellt.

Kürzlich fragte ein Freund nach bestimmten Fähigkeiten, über die Softwareentwickler verfügen.

Was sind die einzigartigen Fähigkeiten, die Entwicklungspraktiker praktizieren?

Aufgrund meiner Erfahrung habe ich mir folgende Meinung gebildet. Die Idee, die ich im Laufe der Zeit realisiert habe, ist, dass ich Meta-Programmierung mag. Um Meta-Fähigkeiten zu erlernen oder das zu tun, was wir besser können, müssen viele bekannte Bücher unter Berücksichtigung des Kontexts gelesen werden.
Ich nahm konkrete Beispiele von dem, was ich über die Jahre gelesen habe, wandte sie auf meine eigenen Beobachtungen in diesem Bereich an und antwortete auf die pragmatischste Weise.

Wenn Sie universell denken, würde ich meiner Meinung nach sagen, dass dies die Praxis der Korrektheit und Mustererkennung * ist . Hier sind einige der Fähigkeiten, die nur für Softwareentwickler gelten.

Richtigkeit


Korrektheit hängt sehr stark davon ab, wie und warum wir Dinge auf diese Weise tun und nicht anders. In Unternehmen hängt dies am engsten mit der Richtigkeit der Aufgabe zusammen, die ein Unternehmen für seine Kunden lösen sollte. Gut geschriebene Software folgt dem gleichen Gedanken.

Korrektheit wird in der Entwicklung als richtig angesehen, damit eine Geschäftslösung weiterhin Aufgaben mit einem hohen Maß an Zuverlässigkeit und Effizienz lösen kann. Dieser Prozess ist ein Gleichgewicht zwischen Strategie (Design) und Taktik (Ausführung).

Eine Studie darüber, was dieses „Wie“ in einem Vakuum ist, wird am besten im vierten Teil des ersten Kapitels von Programmieren von Perlen - Schreiben korrekter Programme dargestellt .

... die Pflege von einfachem Code ist normalerweise der Schlüssel zur Korrektheit.
- John Bentley

Mustererkennung


Die Mustererkennung ist stark an die Organisation dieser Korrektheit gebunden, indem die erforderlichen Abstraktionen und Komponentengrenzen erstellt werden.

Die Mustererkennung führt zum Konzept der Wiederverwendung zum Modulieren und Isolieren von Code. Wir verfolgen die Vervielfältigung, finden Bereiche, die wiederverwendet werden können, und gestalten komplexe Teile des Codes neu. Das machen Softwareentwickler gut. Wir folgen den Details sehr sorgfältig. Wir erkennen Wissen an, wie es immer wieder geschaffen wird. Und dann vereinfachen wir.

Die Mustererkennung wird in der Community diskutiert und es gibt viele Quellen, in denen Sie Informationen zu Erkennungsmethoden finden. Ich habe davon im zweiten Kapitel des Pragmatischen Programmierers - Die Übel der Vervielfältigung ( Der Pragmatische Programmierer - Das Böse der Vervielfältigung) erfahren.

Machen Sie es einfach wiederzuverwenden. Nicht wiederholen.
- Andrew Hunt und Dave Thomas

Interessante Beobachtung


Sobald ich diese Antwort gab, stellte mein Freund eine Gegenfrage.

Wenn Korrektheit und Mustererkennung diese Fähigkeiten sind, wie lernen Sie sie?

Natürlich war meine Antwort ziemlich einfach:

Finden Sie diese Bücher, richten Sie Ihre Umgebung ein und arbeiten Sie Beispiele durch. Legen Sie Ihre Lernerwartungen fest und wenden Sie diese Metafähigkeiten an, während Sie Ihrem Unternehmen einen Mehrwert bieten. Warum? Komplexität Dies ist die beste Investition in das Meisterschaftstraining, die ich kenne. Dies macht Entwickler im Laufe der Zeit auch sicherer.

Mein Wachstum konzentrierte sich auf diese Bücher und auf diese spezifischen Fähigkeiten. Mir wurde jedoch klar, dass es neben der direkten Ausführung der Arbeit mehrere Fähigkeiten gibt, die einen wesentlichen Beitrag zu Meta-Fähigkeiten leisten. Ich interessierte mich für die Terminologie von Meta. Meine Arbeit zur Zerlegung von Aufgaben (Korrektheit) und Organisation (Mustererkennung) fand zum Zeitpunkt ihrer Veröffentlichung keine Anwendung. Ungefähr zur gleichen Zeit dachte ich daran, diesen Meta-Skills-Artikel zu schreiben.

Ein Professor an der Stanford University unterrichtete einen Metakompetenzkurs, der zum Schreiben eines Buches führte, in das er einige Ergebnisse seines Kurses einbezog. Ich war schockiert, als ich herausfand, dass er die gleiche Einstellung zu der Frage hat wie ich. Deshalb habe ich mir ein Buch gekauft und es aufgeregt gelesen. Kapitel 13, Eine Philosophie des Systemdesigns .

Entwickler konzentrieren sich normalerweise sehr auf die Details. Wir lieben Details und verwalten gerne viele davon. Dies ist wichtig, um ein guter Fachingenieur zu sein. Gute Softwareentwickler können jedoch auch ein wenig von den Details zurücktreten und auf einer höheren Ebene über das System nachdenken.
- John Ousterhout **

Fazit


Meiner Meinung nach sind Korrektheit und Mustererkennung Fähigkeiten ***, die Softwareentwickler selbst lernen und entwickeln müssen. Infolgedessen verbessert sich die Softwarequalität. Alle anderen einzigartigen Fähigkeiten können sehr wohl auf den oben genannten beruhen. Ich lade andere ein, Beispiele für Meta-Fähigkeiten zu teilen, die sie im Laufe der Zeit entwickelt haben.

Im Großen und Ganzen hängt die Richtigkeit und Erkennung von Mustern vom Ergebnis der Komplexität ab (auch als kognitive Belastung bekannt). Es muss eine Möglichkeit geben, beide Faktoren kompetent auszugleichen, um die Komplexität zu verringern. Deshalb betrachte ich diese Fähigkeiten als die Hauptessenz von allem, was wir tun.



* Interessant ist die Richtigkeit und Erkennung von Mustern, die durch Praktiken rund um maschinelles Lernen stark miteinander verbunden sind.
** Wenn Sie mehr darüber erfahren möchten, was John tut, schauen Sie sich sein Video an .
*** Ingenieure müssen außerdem ein hohes Maß an Schulung und Kommunikation üben . Diese Konzepte gelten nicht nur für Software, sondern sind stark mit den Wissenschaften verbunden.

Originalartikel

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


All Articles