Eine Programmiersprache beherrschen, indem man nicht programmiert?

9

Der Informatiker Peter Norvig argumentierte in seinem Aufsatz Teach Yourself To Program in 10 Jahren, dass Sie etwa 10.000 Stunden Übung benötigen.

Aber Jeff Atwood argumentierte in seinem Beitrag Wie man ein besserer Programmierer wird, indem man nicht programmiert, dass er glaubt, dass der einzige Weg, ein besserer Programmierer zu werden, darin besteht, nicht zu programmieren.

Diese Artikel sind in Widerspruch. Gibt es wissenschaftliche Beweise für den Jeff Atwood-Ansatz?

PlainOldProgrammer
quelle
12
Ich sehe nicht, wie sie sich überhaupt widersprechen, wenn ich über die Titel hinausschaue. Beides ist wichtig, aber tatsächlich programmieren und auch an nicht programmierbaren Fähigkeiten arbeiten, die im Job verwendet werden. Keiner sagt, dass Sie den anderen nicht tun sollten. Sie sagen beide, dass das eine neben dem anderen wichtig ist .
Servy
2
Verschieben wir die Metakommentare bitte in Meta. meta.programmers.stackexchange.com/q/6137/53019

Antworten:

28

Sie verpassen den Punkt.

Jeff Atwood sagt, dass ein ausgezeichneter Programmierer mehr als nur Programmierkenntnisse erfordert. Es erfordert auch, ein guter Designer zu sein, gut mit anderen Menschen zusammenzuarbeiten und im Allgemeinen ein besserer Denker und Problemlöser zu werden.

Die größte fehlende Fähigkeit ist jemand, der sowohl das Engineering gut versteht als auch gute Beziehungen zu den Hardcore-Ingenieuren unterhält und dies mit der Arbeit mit den Kunden verbindet.

-- Bill Gates

Peter Norvigs Argument ist, dass Sie nicht einfach eine Ausgabe von "Werden Sie ein Master-Programmierer in 24 Stunden" abholen können und erwarten, dass dies funktioniert. Aber genau so viele Leute, die bei Stack Overflow Fragen stellen, scheinen sich der Programmierung zu nähern. Sie denken, sie können Eclipse laden, ein paar Schlüsselwörter lernen und die nächsten Angry Birds schreiben. Es dauert etwas mehr als das.

Robert Harvey
quelle
5
Nee, wütende Vögel sind wahrscheinlich wie 2 oder 3 Stichwörter, die ad nauseum mit lustigen Fotos von Vögeln wiederholt werden. Ja. Es ist eine Datenbank für Ornithologen, oder?
Jimmy Hoffa
Nun, aber in gewisser Weise bezieht sich Peter Norvings Argument auf die Tatsache, dass man die Programmiersprache nicht oberflächlich "beherrscht" (das ist der zentrale Punkt seines Artikels). Tatsächlich bezeichnen Peter und Jeff Atwood einen "Meister". So wie Sie Jeff Atwoods Haltung beschreiben, beschreibe ich, dass Peter Norving sagt, dass ein ausgezeichneter Programmierer viel Codierung (mit den impliziten Lernthemen) und Übung erfordert.
PlainOldProgrammer
2
@Wronski: Ah, du bist zurück, ich verstehe! Schön dich wieder zu sehen. Während Ihrer Abwesenheit haben wir Ihre Frage besprochen, geschlossen und erneut geöffnet. Wie auch immer, was genau sagst du? Peter Norvings Argument ist, dass man in 24 Stunden oder sogar 21 Tagen kein Meister sein kann. Jeff Atwood meint, dass man kein Meister sein kann, wenn man nur Code schreibt. Sie haben beide recht.
Robert Harvey
@RobertHarvey Warum schließen und wieder öffnen?. Sollte ich den Artikel von Peter Norving so interpretieren, dass er nur eine gute "Codierung" ist, und den Artikel von Jeff Atwood etwas, um ein guter "Ingenieur" zu sein? Ich bin ein wenig verwirrt.
PlainOldProgrammer
1
@Wronski: Meister sind sowohl gute Programmierer als auch gute Ingenieure.
Robert Harvey
10

Der Teil "Nicht programmieren" sollte nach viel Programmierpraxis folgen.

the only way to become a better programmer is by not programming

Sie müssen zuerst Programmierer sein, bevor Sie ein besserer werden können. Die erste Barriere für das Erlernen von Programmiersprachen wird allein viel Aufwand erfordern, und der Teil zur Problemlösung wird im Vergleich zu Problemen, mit denen Sie später konfrontiert werden, trivial sein.

AKTUALISIEREN:

Wie in den Kommentaren vorgeschlagen, können Sie immer noch von "Nicht programmieren aka: (Denken)" profitieren, wenn Sie als Programmierer anfangen, aber ich würde mich nicht von der Tastatur entfernen, nur weil jemand sagt, ich sollte das tun, um besser zu werden Sie sollten es tun, weil Sie wissen, dass Sie mehr darüber nachdenken müssen.

Korey Hinton
quelle
2
Vielleicht. Aber Designfähigkeiten sind nicht so weit entfernt, selbst wenn man anfängt; und die Fähigkeiten der Mitarbeiter sind wertvoll, unabhängig von Ihrer Codierungsfähigkeit.
Robert Harvey
@RobertHarvey Ja, aber in Jeff Atwoods Artikel geht es anscheinend mehr darum, Probleme zu lösen und sich vom Computer zu entfernen, um darüber nachzudenken, was Sie programmieren.
Korey Hinton
2
@KoreyHinton Welches ist etwas, das für jemanden völlig angemessen wäre, wenn er sein erstes Programmierproblem löst. Sie können und sollten dies vom ersten Tag an tun, nicht wenn Sie bereits kompetent sind, sagt Robert.
Servy
1
@KoreyHinton Deshalb sagt niemand (weder Artikel noch einer der Leute, die hier antworten), dass Sie nur das eine oder andere tun sollten. Sie sagen, es ist wichtig, viele von beiden zu machen, weil sich die Fähigkeiten ergänzen.
Servy
1
@Wronski Ich denke, Robert argumentiert den gegenteiligen Punkt, dass Nicht-Programmierkenntnisse beim ersten Programmierenlernen erlernt werden können. Ich stimme dem ebenfalls zu, bin aber froh, dass ich den Lernprozess am Anfang persönlich nicht zu kompliziert gemacht habe. Mein Fokus lag, wie Sie bereits erwähnt haben, auf Programmierfähigkeiten und Denkfähigkeiten. Jetzt bin ich ständig bemüht, beide zu verbessern.
Korey Hinton