Könnte es ein Ersatz für gute Programmierbücher für Anfänger sein, Zeit mit Programmers.SE oder Stack Overflow zu verbringen? [geschlossen]

44

Könnte es mir helfen, Zeit (und mich aktiv an Programmierern zu beteiligen). SE und Stack Overflow helfen mir dabei, meine Programmierkenntnisse zu verbessern, wenn ich weniger Zeit mit dem Lesen eines Buches wie Code Complete 2 verbringe (das ansonsten als Nächstes in meiner Leseliste steht).

Ok, vielleicht ist die Antwort auf diese Frage für jemanden, der mit dem Programmieren beginnt, ein klares Nein, aber ich möchte hinzufügen, dass diese Frage im Kontext gestellt wird, wenn die Person mit Programmiersprachen vertraut ist, sich aber verbessern möchte seine Programmierkenntnisse. Ich habe diese Frage auf SO gelesen und auch dieses Buch wurde von vielen anderen empfohlen (einschließlich Jeff und Joel ).

Um genauer zu sein, möchte ich hinzufügen, dass ich, obwohl ich in C, Java, Python usw. programmiere, mit meinen Codierungsfähigkeiten und dem Test von CC2 nicht zufrieden bin. Mir wurde klar, dass ich noch viel verbessern muss .

Im Grunde möchte ich wissen, wie ich meine Programmierkenntnisse am besten verbessern kann - verbringen Sie mehr Zeit hier / SO oder fahren Sie mit CC2 fort und kommen Sie hierher, wenn es die Zeit erlaubt.

Atul Goyal
quelle
1
Mögliche Duplikate / Verwandte: Stapelüberlauf als Möglichkeit, neue Dinge zu lernen
1
Es ist definitiv überwältigend für einen Anfänger Programmierer.
Surfasb

Antworten:

102

Nein, es ist kein Ersatz, sondern eine perfekte Ergänzung . Ich fühle, dass eine Kombination aus beidem viel Kraft birgt.

Warum lehrt Sie ein guter Vortrag mehr als nur ein Buch zu lesen? Interaktion und die Fähigkeit, Fragen zu stellen.

Wenn Sie nur ein Buch lesen, können einige Fragen auftauchen, auf die Sie keine Antworten finden. Suchen Sie hier nach diesen Fragen oder stellen Sie sie, wenn sie noch nicht besprochen wurden.

Steven Jeuris
quelle
+1 für perfekte Ergänzung. Ich kann mir nur vorstellen, wie die Achtziger für mich gewesen wären, wenn SE oder SO in der Nähe gewesen wären. Sie sind großartige Ressourcen.
Michael Riley - AKA Gunny
1
+1 als perfektes Kompliment für eine perfekte Ergänzung. Das einfache Lesen von Fragen aus der "realen Welt" und der Versuch, die Lösungen der vorhandenen Antworten zu beantworten (oder zu duplizieren), sind großartige Mini-Katas, um Fähigkeiten, Wissen und Intuition zu verbessern
Dave Newton,
Wenn überhaupt, verbessert die Fähigkeit, Probleme und Lösungen in einem leicht verständlichen und zugänglichen Kanal auszudrücken, Ihre Fähigkeiten als Entwickler, zusätzlich zur Verbesserung Ihrer Kommunikationsfähigkeiten.
Surfasb
+1 (wieder) für ein perfektes Kompliment. Ich lese jeden Tag P.SE. Ich lese nicht immer alle Antworten, aber ich lese die meisten Fragen und die häufigsten Antworten. Es ist eine großartige Möglichkeit, sich Gedanken über Dinge auf dem Gebiet zu machen, auf die Sie sonst vielleicht nicht stoßen würden. Manchmal sehe ich etwas in einem Q & A, das nicht direkt mit dem übereinstimmt, was ich tue, was letztendlich auch nützlich ist, was schön ist.
Andy Hunt
12

Ich bin (derzeit) seit 1 Jahr und 10 Monaten Mitglied von StackOverflow. Während dieser Zeit bin ich ein disziplinierter Student der Kunst geworden: Ich kenne Architektur, Muster, Entkopplung, Einheitentests und die Liste könnte weitergehen ... aber welche Rolle hat SO gespielt ???

Zunächst beantwortete es meine unmittelbaren Fragen. Aber als ich anfing, SO zu erforschen, stellte ich fest, dass ich ein sehr schlechter Programmierer war. In dem Wunsch, ein Handwerker in meinem Handwerk zu sein, kaufte ich Bücher ... aber es war nicht C # Unleashed, Learn C # Programming oder ein anderer nicht dem Standard entsprechender Anfängertext, den ich brauchte. Ich habe die richtige Art von Büchern gekauft, die in bestimmten Bereichen, in denen ich festgestellt habe, Mängel aufweisen. Natürlich habe ich mir die Zeit genommen, um zu sehen, was die Experten für SO empfohlen haben.

Zweitens gab mir SO die Möglichkeit, weiter von denen zu lernen, die (durch Reputation repräsentiert) wirklich wissen, was sie tun - syntaktisch und philosophisch. Es gibt einen gewissen Einblick in SO, CodeReview und Programmierer, den Sie einfach nicht aus einem Buch ziehen können.

Offensichtlich kann SO keine Bücher oder alle anderen Webressourcen ersetzen (obwohl, wenn ich MSDN und SO in einer einzigen Inhaltsressource kombinieren könnte ...); Stattdessen ergänzt SO diese anderen Ressourcen. Der beste Lehrer bleibt jedoch Erfahrung .

IAbstrakt
quelle
11

Was ist der beste Weg für mich, um meine Programmierkenntnisse zu verbessern?

Mehr programmieren. Das Lesen von Büchern und Webseiten ist zweitrangig.

Am besten lernst du dabei.

Humphrey Bogart
quelle
17
Ja und nein. Mehr können Sie tun, ohne mehr zu lernen. Ich konnte Jahr für Jahr in einer bestimmten Sprache programmieren und nichts Neues lernen. Lesen und Schule lehrt Sie Dinge außerhalb Ihrer "Komfortzone". Nicht genug für eine Gegenstimme, aber trotzdem kein guter Kommentar imo.
WernerCD
1
Die Wahrheit ist, ich habe viel programmiert, ohne zu lernen. Also habe ich Webseiten in PHP erstellt, ohne Objekte zu kennen oder ein Framework zu verwenden. Sie müssen den Code verlassen und lernen
Bojan Kogoj
@Werner - sehr wahr. Ich wollte "mehr programmieren" im Sinne von "etwas finden, das man bauen möchte, und es idealerweise auf eine neue Weise bauen, um etwas Neues zu lernen"
Humphrey Bogart,
Ich erinnere mich, als ich ein Praktikant war, gab uns der "Lehrer" am Arbeitsplatz manchmal Programmieraufgaben, in der Erwartung, dass wir am besten dadurch lernen würden. Das Problem war, dass wir, was auch immer das Problem war, oft noch nicht auf diesem Niveau waren. Und wenn jemand ihr eine Frage stellte, sagte sie immer wieder: "Oh, das ist so einfach! Du musst es herausfinden. Du lernst am besten auf diese Weise." Es vergingen mehrere Stunden, in denen wir über Unterlagen nachdachten, Dinge ausprobierten usw. Als sie uns endlich die Antwort gab ...
Panzerkrise
... es wäre etwas, das uns einfach nicht die notwendigen Informationen gegeben hätte, um es herauszufinden . Es hätte die ganze Woche oder länger gedauert, um die notwendigen Informationen zu finden, wenn wir nicht die Zeit hatten und die Informationen manchmal weder uns noch der Öffentlichkeit zur Verfügung standen. Es genügt also zu sagen, dass Unterricht sehr wichtig ist und es nur dann gut ist, wenn jemand bereit und auf diesem Niveau ist, es selbst herauszufinden .
Panzercrisis
5

Lernen braucht einige Zutaten:

  1. Lerner (das bist natürlich du)
  2. Zeit (die Sie verwalten und widmen sollten)
  3. Ressourcen (von denen SE-Standorte nur einen kleinen Teil ausmachen)

Bist du ein guter Lerner? Verbringst du genug Zeit zum Lernen? Wenn die Antwort auf diese beiden Fragen " Ja" lautet , haben Sie bereits genug Potenzial, um aus nahezu jeder Ressource zu lernen.

Aber um Ihre Frage zu beantworten: Ja, ich persönlich habe viel von SE-Sites gelernt. IMHO, sie sollten nicht Ihre einzige Lernquelle sein, aber sie sind von Vorteil.

Saeed Neamati
quelle
5

Zwei Dinge, die SO und P.SE bieten, die weder das Lesen anderer Bücher noch das Schreiben von Code selbst bieten: Testen und Lehren. Wenn du nur blindlings Fragen stellst wie

Warum kompiliert das nicht?

wall
of
code
100
lines
long

Und jemand sagt "in Zeile 33, dass Komma ein Semikolon sein soll", und Sie akzeptieren die Antwort und machen weiter und stellen dieselben Fragen für immer, dann verbessern Sie sich möglicherweise nicht.

ABER, wenn Sie die Fragen anderer Leute lesen, über die Antwort nachdenken und beobachten, welche Antworten eingehen und wie sie mit dem verglichen werden, was Sie wissen, wird das Sie wirklich verbessern. Wenn Sie Code in Ihren bevorzugten Editor eingeben und ein paar Dinge ausprobieren, um zu sehen, wie die Antwort lautet, werden Sie sich wirklich verbessern. Und wenn Sie anfangen, Konzepte zu erklären (und die Leute dort darauf warten, zu "klären", was Sie sagen), werden Sie auch besser.

Seit ungefähr 30 Jahren habe ich festgestellt, dass ich ein Thema nie so gut lerne, als ich es zu unterrichten begann, obwohl ich glaubte, es zu kennen. Für mich ist das der Hauptbeitrag der * .se-Sites zu meinen Fähigkeiten als Entwickler. Wenn ich nur eine einfache Tatsache wissen möchte, ist dies mein wichtigster Ort, um nachzuschauen (oder gelegentlich zu fragen).

Kate Gregory
quelle
3

Ihre Programmierkenntnisse verbessern Sie am besten, indem Sie nicht Websites oder Bücher lesen, sondern sie wiederholen

  1. schreiben Sie Code nach aktuellem Kenntnisstand
  2. Ergebnis auswerten
  3. Lernen Sie aus der Bewertung, was zu tun ist und was nicht.
  4. gehe zu 1

Übung macht den Meister. Was auf einem Blog oder in einem Buch gut aussieht, kann sich als mühsam erweisen, wenn es aus einem Grund verwendet wird, den der Blog-Verfasser nicht versteht oder den der Buchautor nicht behandelt hat.


quelle
2
Bücher (und Blogs und SO) können Sie Konzepten aussetzen, die Sie vielleicht nicht selbst entwickelt haben, aber Sie werden ein besserer Programmierer, wenn Sie Code schreiben.
Annika Backstrom
2
Andererseits komme ich nicht zu weit, wenn ich der externen Beratung nie viel Aufmerksamkeit schenke. Andere haben es auf die harte Tour gelernt, und es wäre dumm, nicht aus ihren Erfahrungen zu lernen. Verlassen Sie sich nicht nur auf das Lesen und Hören, sondern machen Sie auch nicht den Fehler, ohne fremde Hilfe zu lernen.
Phil
externe Lesung geht in # 2
Externes Lesen ist erforderlich, um die nicht offensichtlichen, einzigartigen oder erweiterten Funktionen für eine bestimmte Technik, Programmiersprache oder Bibliothek zu ermitteln. Es handelt sich um Dinge, die für die Ausführung von Aufgaben nicht unbedingt erforderlich sind, die Sie jedoch möglicherweise verbessern (z. B. Metaprogrammierung). Da sie niemals unbedingt notwendig sind, suchen die Menschen sie selten allein durch Experimente.
Lie Ryan
2

Wie Sie selbst geantwortet haben, nein, aber Zeit hier zu verbringen, ist eine nützliche Ergänzung zu strukturiertem Lernen. Ich würde mich nicht allein darauf verlassen, da es Lücken in einigen Konzepten geben kann, die möglicherweise nicht abgedeckt werden. Eine Ihrer besten Möglichkeiten, das Programmieren für fortgeschrittene Benutzer zu verbessern, besteht darin, den Code anderer guter Entwickler zu lesen, indem Sie Zeit mit GitHub oder einem anderen Open-Source-Repository verbringen.

Schlüsselfertig
quelle
1

Kritisches Denken und Analyse sind weiterhin erforderlich

An und für sich nicht. Die einzige Möglichkeit, eine Quelle für das Lernen zu schaffen (Buch, Blog, Website, SO usw.), besteht im Verstehen, Analysieren und anschließenden wiederholten Einarbeiten. Was Leute in solchen Foren schreiben, ist kein Evangelium und sollte nicht als solches behandelt werden, egal wie viele Stimmen es hat. Sie müssen Ihre eigene Analyse der abgegebenen Meinung durchführen, um herauszufinden, ob es sich um Folgendes handelt:

  1. Eine gute Idee
  2. Eine auf Ihre Situation abgestimmte Idee

Der beste Weg zur Verbesserung

Ist oft spezifisch für die Person. Manche Menschen werden durch Lesen und Forschen besser. Manche Menschen werden durch Spielen und Experimentieren besser. Andere können durch Selbstreflexion und Analyse noch besser werden. Probieren Sie aus, was Ihnen gefällt, und prüfen Sie, ob es für Sie besser funktioniert.

dietbuddha
quelle
0

Das Erlernen von Java wurde viel einfacher, als ich von Stackoverflow erfuhr. Ich habe keine Fragen gestellt, aber ich fing an, die Java-Fragen täglich zu lesen. Viele der Fragen entsprachen nicht meinem Verständnis, aber hin und wieder stellte jemand die Anfängerfrage. Viele Leute fragen nach Konzepten, die sie aus einem Buch lesen, aber nicht verstehen, und erhalten hier eine viel verständlichere Antwort, oft mit einem kleinen Codebeispiel, um das Problem näher zu erläutern.

Verhalten
quelle