Machen arme Schriftsteller arme Programmierer? [geschlossen]

16

Ich lese Coders at Work von Peter Seibel, und oft wurde erwähnt, dass Programmierer, die nicht schreiben können, im Allgemeinen schlechte Programmierer sind - dies wird von Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (und mir) behauptet Lesen Sie nur die Hälfte des Buches).

Wie sehen Sie das? Ist die Unfähigkeit, sich schriftlich in einer natürlichen Sprache wie Englisch auszudrücken, ein Hindernis für das Schreiben eines guten Codes?

gablin
quelle
9
Ich kenne mich nicht mit Fähigkeiten als Programmierer aus, aber dafür, dass Sie sich als Programmierer verkaufen, klug = sexy in der freiberuflichen Welt. Wenn Sie also gut schreiben (und sprechen) können, werden Sie als schlauer und als vertrauenswürdiger als Entwickler wahrgenommen (obwohl dies möglicherweise völlig unbegründet ist).
Dan Rosenstark
Mit "kann nicht schreiben" meinen Sie, dass ihre Grammatik falsch ist? Das ist wahrscheinlich ein größeres Problem als schlechte Strömung usw.
Maxpm 15.12.10
1
@Maxpm: Vielleicht, aber auch die Unfähigkeit, ihre Bedeutung schriftlich zu vermitteln, obwohl sie grammatikalisch korrekt sind.
Gablin

Antworten:

30

Das Programmieren geht weit über das Schreiben von Code hinaus. Ein großer Teil eines erfolgreichen Programmierers ist die Kommunikation. In der Lage zu sein, sich mit Kunden zu verbinden, ihre Bedürfnisse zu verstehen, sie in den technischen Bereich zu übersetzen, sie in Code auszudrücken und das Ergebnis dann den Kunden zu erklären.

Programmierer, die es schwer haben, sich schriftlich klar auszudrücken, können sich im Allgemeinen möglicherweise nicht gut verständigen, während diejenigen, die über gute Sprach- und Schriftkenntnisse verfügen, diese Fähigkeiten im Allgemeinen in den von ihnen geschriebenen Code übersetzen können.

Ich denke, wenn man nicht in der Lage ist, gut zu schreiben und somit gut zu kommunizieren, kann man kein sehr guter Programmierer sein.

Wie Jason Fried und David Heinemeier Hansson (von 37signals) in ihrem Buch Rework sagen:

Wenn Sie versuchen, sich unter ein paar Leuten für eine Stelle zu entscheiden, sollten Sie den besten Schriftsteller engagieren.

Ein guter Schriftsteller zu sein, bedeutet mehr als nur zu schreiben. Klares Schreiben ist ein Zeichen für klares Denken. Großartige Schriftsteller wissen, wie man kommuniziert.

Eric King
quelle
2
Ja, und ich denke, so ziemlich alle sind sich einig, dass die Fähigkeit, sich klar im Code auszudrücken, eine der Eigenschaften eines guten Programmierers ist. Das würde mich nicht überraschen, dass die Fähigkeit, sich klar schriftlich auszudrücken, mit der Fähigkeit korreliert, sich klar auszudrücken in Ihrem Code (und umgekehrt). +1
n1ckp
2
Ich würde das unterstützen. Sie müssen kommunizieren - nicht nur mit der Maschine. Die Menschen um Sie herum und die Programmierer, die hinter Ihnen her sind, brauchen Verständlichkeit in Wort und Schrift. Gesprochen, weil Sie früher oder später mit Leuten sprechen müssen und geschrieben, weil das Ihr Code und Ihre Kommentare sind.
quick_now
Ich fand deine Antwort sehr interessant! Aber als ich zurückblickte, um herauszufinden, wer die besten Programmierer waren, mit denen ich zusammengearbeitet, für die ich gearbeitet habe oder für die ich gearbeitet habe, stellte ich fest, dass viele von ihnen sehr schlecht im Schreiben waren. Sie waren jedoch lächerlich gut. Ich werde jedoch Ihre ausgezeichnete Antwort im Hinterkopf behalten und es in Zukunft versuchen. +1
16
  • Wenn Sie etwas nicht gut genug erklären können, verstehen Sie es wahrscheinlich nicht gut genug. Als kluger Mensch arbeiten Sie mit anderen klugen Leuten zusammen und müssen effektiv mit ihnen kommunizieren.
  • Jede gute Idee, die Sie haben, ist nutzlos, wenn sie nur in Ihrem Kopf existiert. Die
    Fähigkeit, Ihre Ideen effektiv zu kommunizieren, ist ein Zeichen für großes Verständnis. Dies gilt nicht nur für das Programmieren.
Kirk Fernandes
quelle
4

Ich denke, wenn wir die Frage untersuchen, erhalten wir die Antwort direkt:

Ist die Unfähigkeit, sich schriftlich in einer natürlichen Sprache wie Englisch auszudrücken, ein Hindernis für das Schreiben eines guten Codes?

Was bedeutet es eigentlich, guten Code zu schreiben?

Programme müssen geschrieben werden, damit die Benutzer sie lesen können, und nur im Übrigen, damit Maschinen ausgeführt werden können.
- Abelson & Sussman, Struktur und Interpretation von Computerprogrammen

Es bedeutet, sich klar, präzise, ​​richtig und elegant in einer Programmiersprache auszudrücken.

Der einzige Unterschied zwischen einem geschickten Ausdruck in Englisch oder einer Programmiersprache besteht darin, dass Englisch weitaus fehlerverzeihender ist.

back2dos
quelle
3

Ich denke nicht, dass es ein großes Hindernis für einen Code-Affen ist (ich gehe von einer bestimmten Grundstufe / Fähigkeit aus, sich in ihrer Muttersprache auszudrücken). Ich denke jedoch, dass dies schnell zu einem großen Hindernis werden kann, da Sie (der Entwickler) anfangen müssen, Entwürfe / Bogen / Pläne einem nicht-technischen Publikum besser vorzustellen. Nach meiner Erfahrung ist es einfacher, jemandem etwas zu vermitteln, der ungefähr auf dem gleichen technischen Niveau ist wie ich, und es erfordert erheblich weniger (natürliche) Sprachkenntnisse als die Artikulation gegenüber einem Kunden und / oder Manager. Zugleich muss die Person, die darüber schreibt (oder darüber spricht), auch wenn es sich um ein Fachpublikum handelt, da das Thema weniger konkret wird, ziemlich artikuliert sein.

Ken Henderson
quelle
3

Das hängt davon ab, was Sie unter "gutem Code" verstehen.

Wenn Sie Code meinen, der einfach funktioniert, gibt es kaum einen Zusammenhang zwischen der Fähigkeit, mit Menschen zu kommunizieren, und der Fähigkeit, mit Computern zu kommunizieren.

Wenn Sie Code meinen, der funktioniert, wartbar ist und die Absicht des Codes klar zum Ausdruck bringt, gibt es absolut eine Beziehung zwischen dem Schreiben von gutem Code und dem Schreiben in einer Sprache, die ausschließlich für den Menschen bestimmt ist.

Obwohl Sie nicht all die unterschiedlichen Fähigkeiten benötigen, um ein guter Schreiber zu sein, um verständlichen Code zu schreiben, müssen dennoch einige Elemente vorhanden sein, da beide von Menschen gelesen werden. In mancher Hinsicht ist es noch schwieriger, guten Code zu schreiben, da er die Absicht mit dem Code beschreiben sollte, ohne Konstrukte zu verwenden, die beim Ausführen durch den Computer eine schlechte Leistung erbringen würden.

Guffa
quelle
2

Die Sache ist, Codierung ist auch eine Kommunikationsfähigkeit. Jack Ganssle zitierte kürzlich in seinem Embedded Muse E-Newsletter Doug Abbott:

Wenn Sie ein Programm schreiben, kommunizieren Sie wirklich mit einem anderen Menschen, was der Computer tun soll. Beim Programmieren geht es um Kommunikation, genau wie bei jeder anderen Form des Schreibens. Also ja, Informatikstudenten sollten mit gutem Schreiben vertraut sein. Aber da es in der Informatik so wenig Kostbares gibt, brauchen sie vielleicht nur einige grundlegende Kurse für kreatives Schreiben.

Programmierer, die nicht wissen, wie man Prosa schreibt, wissen wahrscheinlich auch nicht, wie man Code schreibt.

Mehr zu diesem interessanten Artikel:

Spiegelt schlechtes Schreiben schlechte Programmierkenntnisse wider?

Tony
quelle
2

Dies ist insgesamt anekdotisch, aber:

Einer der besten "Rockstar" -Programmierer, mit denen ich je zusammengearbeitet habe, war ein sehr armer Schriftsteller. Und wenn ich "sehr arm" sage, dann meine ich den Typ, der so rüberkam, als wäre er entweder extrem betrunken oder kaum gebildet - als Sie seine E-Mails sahen. Tippfehler, mangelnde Zeichensetzung, Schwierigkeiten, Ideen klar auszudrücken, und häufige Rechtschreibfehler ("ihre / ihre" und so weiter) sind häufig zu beobachten - manchmal fast unerträglich. Einige seiner E-Mails lesen - ich hätte mir Sorgen gemacht, dass er Kunden direkt per E-Mail benachrichtigt (das mussten wir in dieser Firma nicht tun) - weil es die Firma schlecht aussehen lassen würde!

Trotzdem war er ein Super-Star-Programmierer. Eine Größenordnung produktiver und aktiver als der Durchschnitt.

Ich bin mir nicht sicher, was ich davon halten soll. Ich habe das mehrmals mit verschiedenen Leuten gesehen. Einige scheinen einfach kein Talent dafür zu haben, sich hinzusetzen und Dinge aufzuschreiben. Und oft scheint es ihre Talente in anderen Bereichen nicht zu beeinträchtigen (selbst wenn es relativ ähnlich zu sein scheint, "Wissensarbeit" -Talente wie Programmierung). Man könnte meinen, es wäre damit verbunden, aber ich habe einige Beispiele wie dieses gesehen, bei denen es nicht so war. Obwohl ich denke, dass es durchaus möglich ist, dass sie " Ausnahmen sind, die die Regel beweisen " - ich hätte wahrscheinlich nie gedacht, die schlechten Schriftsteller zu bemerken, die keine Programmierer sind, und die guten Schriftsteller, die es sind .

Bobby Tische
quelle
3
Es gibt immer Ausnahmen von der Regel. Ich habe auch mit ein paar brillanten Leuten zusammengearbeitet, die wir nie in die Nähe eines Kunden lassen, weil sie zu Hackfleisch verarbeitet worden wären. Ich habe ewig damit verbracht, die Tippfehler usw. in der Dokumentation zu korrigieren. Geben Sie ihnen ein technisches Problem und die Einsichten und Lösungen waren erstaunlich. Dies alles zeigt nur, dass die Antworten hier Verallgemeinerungen sind. Verallgemeinerungen gelten jedoch für die Mehrheit der Menschen.
quick_now
3
@quickly_now: Ich würde mich fragen (da Sie nicht angegeben haben), wie der Code gelesen wurde. Sie können sehr clevere und gute Problemlöser sein, aber wenn ihr Code nicht lesbar ist, sind sie keine großartigen Programmierer, wenn Sie meine Meinung dazu haben wollen.
n1ckp
@ n1ck: Nun, da Sie es erwähnen, war der Typ, an den ich denke, nicht sehr gut darin, seinen Code zu dokumentieren. Der Code selbst war gut und gut gestaltet, aber er gab keine Kommentare zu den inhärent komplexen Code-Teilen ein, was bedeutete, dass es schwieriger war, ihn zu warten, als es sein sollte. Hatte nicht daran gedacht. :)
Bobby Tables
Ich bin mit @ n1ckp einverstanden. Ich bin auch bereit zu wetten, dass seine Namenswahl für Variablen / Methoden / Klassen manchmal kryptisch und verwirrend ist. Ich bin sehr vorsichtig mit Programmierern mit extrem hoher Produktivität, da dies häufig zu Lasten der Verlängerung der Wartungszeit geht.
Desillusioniert
2

Wenn sie nicht gut schreiben können, wie können sie Sie dann davon überzeugen , dass sie gute Programmierer sind?


quelle
0

Kann jemand eine Systemorganisation oder eine Idee nicht genau ausdrücken, indem er sie schreibt, kann er Code schreiben - das sind präzise Anweisungen -, die von einem (sehr) dummen Computer richtig interpretiert werden?

Klaim
quelle
Sie erhalten jedoch eine sehr klare und sofortige Rückkopplungsschleife vom Computer, wenn Ihr Code nicht richtig geschrieben ist. Ich vermute, Sie haben extrem schlecht geschriebenes Englisch und werden kaum jemals darüber informiert, geschweige denn über das Feedback, das Sie zur Verbesserung benötigen.
Carson63000
Sie müssen lernen, auch mit dem Compiler klar und korrekt umzugehen, denn wenn Sie dies nicht tun, kompilieren Sie am Ende niemals etwas.
Klaim
0

Ich halte es für sehr wichtig, dass ein Programmierer sowohl in gesprochener als auch in geschriebener Sprache gut kommunizieren kann. Die Fähigkeit, eine Idee in Worte zu übersetzen, ist eine Grundvoraussetzung für das Schreiben von Code.

Egal, ob wir mit einem Computer oder einer Person kommunizieren, wir müssen Wörter in eine Reihenfolge bringen, die nach Grammatikregeln sinnvoll ist. Wir müssen die Wörter entweder richtig aussprechen oder richtig buchstabieren, damit die andere Seite des Gesprächs sie versteht. Computer werfen Syntaxfehler auf, Mitarbeiter sagen entweder "WAS?" oder abzüglich dessen, was als irritiert oder schlimmer gesagt wird, einer irritierenden Ablenkung.

Ich habe von der Einstellung von Kandidaten dringend abgeraten, weil sie einen Gedanken nicht vervollständigen oder sich nicht mit einem Thema befassen konnten. Eine Person wurde ohnehin von unserem Chef angeheuert, und es stellte sich heraus, dass sie nicht in der Lage war, eine einfache Aufgabe rechtzeitig zu erledigen, da er von der neuen, strahlenden Technologie oder dem Spielzeug abgelenkt wurde, das ihm ins Auge fiel.

Ja, es ist wichtig, dass Programmierer gut kommunizieren können. Wenn sie nicht effektiv mit einem Menschen kommunizieren können, können sie dies nicht mit einem Computer tun.

der Blechmann
quelle
0

Arme Schriftsteller machen arme Schriftsteller und sonst nichts. Schlechte Schreibfähigkeiten bedeuten nicht, dass sie überhaupt nicht kommunizieren können, aber sie können einfach nicht gut schreiben oder sich gut ausdrücken. Natürlich kann jeder sagen, dass Kommunikationsfähigkeiten in Unternehmen und so weiter wichtig und entscheidend sind, aber das bedeutet nicht, dass ein Programmierer mit schlechten Kommunikationsfähigkeiten die Arbeit nicht gut erledigen kann. Das Programmieren und Schreiben ist Kunst, aber von ganz anderer Art. Beim Schreiben geht es darum, wie ein anderer Mensch verstehen kann, was Sie sagen und / oder entsprechend handeln. Durch die Programmierung wird der Computer jedoch nicht in die Lage versetzt, Ihre Anforderungen zu verstehen, da kein Computer eine Benutzeranforderung versteht (zumindest innerhalb von 100 Jahren nach IMO). Bei der Programmierung geht es darum, wie die Anforderungen in die Programmiersprache übersetzt werden, weshalb die Schreibfertigkeit nicht so sehr damit zusammenhängt.

tia
quelle
1
Zum Job eines Programmierers gehört es, sich in Code (und Kommentaren) klar auszudrücken, damit nicht nur der Computer, sondern auch andere Menschen den Code lesen können. Es wäre sinnvoll (aber nicht nachweislich AFAIK), dass diese Fähigkeiten korrelieren.
n1ckp
0

Absolut nicht!

Ein guter Schriftsteller ist nichts anderes als ein guter Schriftsteller. Bitten Sie einen guten Schriftsteller, das Konzept einer Datenbank einer nicht-technischen Person zu beschreiben. Was denkst du wirst du bekommen ...?

Ein guter Schriftsteller, schreibt. Ein guter Programmierer schreibt guten Code.

  • Code, den andere sechs Monate nach seiner Entwicklung lesen können.
  • Code, der morgens um 2:00 Uhr Sinn macht, wenn das System ausgefallen ist und das Debuggen läuft.
  • Code, den alle anderen gerne ausleihen, weil sie ihn verstehen und leicht modifizieren können
  • Code, der rund um die Uhr 365 funktioniert

Ich würde immer weiter machen, aber ich würde lieber meine Zeit damit verbringen, andere Beiträge zu beantworten. Ich denke, ihr wisst ziemlich genau, wo ich zu diesem Thema stehe.

Michael Riley - AKA Gunny
quelle
1
Ich denke, die Punkte 1, 2 und 3 verlangen, dass man ein guter Schreiber und ein guter Programmierer ist. Im Wesentlichen betrachten Sie gute Schreibfähigkeiten als ein implizites Merkmal.
Mamta D