Hier sind ein paar Informationen über mich, bevor wir mit der Frage beginnen.
Ich bin ein Student der Informatik, wobei Java meine primäre Programmiersprache ist.
Das Grundproblem an meiner Universität sind die Lehrstandards. Niemand kümmert sich darum, den Schülern Programmierkenntnisse zu vermitteln, und nicht nur theoretisches Wissen.
Der Effekt ist, dass die meisten meiner Collegekollegen das Programmieren überhaupt nicht verstehen.
Selbst ich habe die traditionelle Programmierumgebung nicht verlassen können, was meine Codierung in gewissem Maße einschränkt.
Auf welche Weise kann ich meine Programmier- / Codierfähigkeiten entwickeln und erweitern?
Können Sie auch die Quellen für das gleiche vorschlagen?
Bearbeitet : Quellen, die die Entwicklung von Codierungsfähigkeiten vorschlagen.
Antworten:
Die Programmierung ist eines der Gebiete, in denen Erfahrung von Bedeutung ist. Um ein besserer Programmierer zu werden, sollten Sie daher mehr programmieren. Schreiben ist jedoch nicht das einzige, was Sie tun sollten. Sie sollten auch den Code anderer Entwickler lesen und daraus lernen, was ein guter Code ist. Beziehen Sie sich auf SO Fragen dazu .
Möglicherweise finden Sie auch Bücher, die speziell dem Codieren gewidmet sind, nützlich. wie "Code Complete". Sie enthalten Beschreibungen dessen, was guter Code ist, was Sie in Kombination mit Ihren Grundkenntnissen zu einem guten Programmierer machen kann.
quelle
must-read
Liste. :) Vielen Dank!(push 'code-complete must-read)
Mein Lieblingszitat stammt von Konfuzius:
Alles Wissen, das ich erhielt, stammte aus der Anwendung einer einzigen Strategie:
Sie möchten C # lernen? Holen Sie sich einen Job als C # -Entwickler.
Sie möchten Italienisch lernen? Gehen Sie mit einem Wörterbuch Englisch / Italienisch dorthin und sprechen Sie Italienisch
Sie möchten das Programmieren lernen? Code!
quelle
Das Codieren ist ein guter Rat, aber ohne dass jemand da ist, der Ihnen Feedback gibt, wiederholen Sie einfach Ihre Fehler. Suchen Sie einen Job, arbeiten Sie an einem Open Source-Projekt, suchen Sie einen Mentor und lassen Sie ihn Ihren Code ansehen.
quelle
Hier ist eine Präsentation von Dan North und QCon, wie man vom Anfänger zum erfahrenen Programmierer namens Sharpening the Tools übergeht . Nachfolgend finden Sie wichtige Vorschläge aus der Präsentation:
quelle
Versuchen Sie, einen Compiler für eine einfache Sprache von Grund auf neu zu schreiben. Sie werden Ihre Fähigkeiten auf dem Weg viel verbessern (mit einigen schönen theoretischen Techniken aus der formalen Sprachtheorie als Bonus). Ich habe versucht, eine einfache Version von Excel zu schreiben, und es ist auch eine sehr schöne Übung.
Wie schon andere gesagt haben, ist der einzige Weg, um Ihre Codierungsfähigkeiten zu verbessern, dies tatsächlich zu tun. Machen Sie sich bei großen Projekten die Hände schmutzig. Bei großen Programmen ist es jedoch umso wichtiger, dass Sie die Techniken des Softwaredesigns beherrschen, da sonst die Größe des Programms nicht zu handhaben ist.
Es gibt ein schönes Zitat von Nate Kirby:
Der Wechsel zwischen diesen beiden Abstraktionsebenen ist also die Fähigkeit, die Sie beherrschen sollten.
Auch die Geschwindigkeit, mit der Sie so viele Codezeilen pro Stunde schreiben können, ist nicht das, was Sie anstreben sollten. Ich mag ein Zitat von David Parnas :
quelle
Ich habe in fast jeder Sprache, die ich gelernt habe, entweder einen Wettpool oder ein Baccarat-Spiel implementiert.
Diese Art von Software umfasst
Blackjack und Poker mit mehreren Spielern würden auch funktionieren.
Eine Einschränkung ist, dass ich in meiner täglichen Arbeit an Finanzsystemen arbeite und es eine enorme Überschneidung zwischen Dingen gibt, die beim Schreiben eines Multiplayer-Glücksspiels und eines Handelssystems zu berücksichtigen sind.
quelle
quelle
Stellen Sie es sich so vor ... Tiger Woods wurde nicht zum "besten" Golfer, wenn er Golf sah oder etwas darüber las. Er wurde so, wie jeder andere Athlet, indem er lernte, übte, herausfand, wo er sein Spiel verbessern und etwas dagegen unternehmen konnte.
Die Codierung ist die gleiche. Der beste Weg, um besser darin zu werden, besteht darin, zu studieren, was andere tun, zu verstehen, warum sie es so tun, und es dann selbst zu tun.
quelle
Wie bei jeder anderen menschlichen Aktivität besteht der beste Weg zur Verbesserung darin, Ihr Wissen zu üben. Dazu benötigen Sie jedoch einige Übungen. Dave Thomas , einer der Autoren des Buches The Pragmatic Programmer, führte das Konzept von Code Katas ein , ähnlich dem Kata-Konzept in den Kampfkünsten.
Sie können einen Blick darauf werfen: http://codekata.pragprog.com/
quelle
Springen Sie ins Wasser, es könnte anfangs kalt sein und Sie werden versucht rauszukommen, aber bald wird sich Ihr Körper daran gewöhnen und wird wieder warm und wenn Sie sich im Wasser wohlfühlen, können Sie herumschwimmen und vielleicht ins Wasser gehen tiefes Ende.
Ich habe gerade das College vor ein paar Monaten beendet, wo ich Java studiert habe. Wie Sie hatte ich keine Ahnung, wie man richtig codiert. Vor ungefähr einem Monat wollte ich eine Web-App in PHP erstellen. Ich wusste nicht, was ich tat, aber ich habe es einfach versucht. Anfangs war es einschüchternd und überwältigend, aber beim Üben wird es natürlich. Ich habe die Anwendung sogar viele Male geschrieben und sie jedes Mal noch weiter vereinfacht. Jetzt arbeite ich von Grund auf an der App, aber diesmal überlege ich mir, wie ich sie objektorientiert und mithilfe von PEAR und seiner Modul-Quickform umsetzen kann.
Übe also. Sprung ins Wasser! Viel Glück :)
quelle
Ich schlage vor, die gesamte Syntax Ihrer Lieblingssprache zu lernen. Verstehen, wie virtuelle Funktionen, Vererbung und Lambda verwendet werden, falls vorhanden. usw. Eine Sache, die ich tat, war, eine große beängstigende Bibliothek zu ergreifen (ich tat dies mit Boost und STL für C ++) und zu sehen, ob jede Zeile und jedes Schlüsselwort sinnvoll sind.
Alternativ können Sie die Sprachensyntaxreferenz lesen, wenn es eine gute gibt, die die aktuellste Version abdeckt. Als Beispiel dient hier die C # -Referenz (Nicht die Version oben. Ich habe den Fehler gemacht, indem ich mir eine populärere ältere Version angesehen habe, die nicht die von mir gesuchte Syntax hatte.)
quelle
Der allgemeine Konsens ist "mehr Code schreiben", dem ich zustimme, aber ich werde diesem Ratschlag hinzufügen, dass Sie viele verschiedene Arten von Code schreiben sollten. Java ist in Bezug auf Sprachen in Ordnung, aber Sie sollten auf jeden Fall Code schreiben, der das Leistungsspektrum auf- und abwärts bewegt. Zusätzlich zu Java würde ich vorschlagen, ein paar kleine Projekte in einer niedrigeren Programmiersprache (C ist hierfür eine gute Sprache), einer Skriptsprache (ich bevorzuge Perl, aber Python ist auch eine gute Wahl), einer funktionalen Sprache ( lisp ist hier die allgemeine Empfehlung, aber OCaml und Haskell sind auch eine gute Wahl) und machen sich zumindest mit dem Lesen einer Assemblersprache vertraut.
Wählen Sie auch eine Vielfalt der Arten von Programmen, die Sie implementieren. Implementieren Sie mindestens eine Desktop-GUI, eine umfangreiche Webanwendung, einen Netzwerkclient und -server, einen Treiber, ein Dienstprogramm zur Datenerfassung, einen Ray Tracer und eine Physiksimulation.
Alle Projekte sollten einen relativ kleinen Umfang haben. Das Ziel ist nicht, ein umfangreiches Programm zu haben, sondern eine breite Palette von Erfahrungen in den verschiedenen Bereichen zu sammeln, in denen Sie möglicherweise vorkommen, um die verschiedenen Arten des Denkens zu erlernen, die für die einzelnen Projekte erforderlich sind. und um herauszufinden, wo Ihre Interessen liegen.
Sobald Sie dies getan haben, haben Sie eine gute Vorstellung von der Art der Programmierung, an der Sie am meisten interessiert sind, und Sie können ein Open-Source-Projekt finden oder starten, um Erfahrungen mit der Arbeit an großen Codebasen zu sammeln, die sich mit langwierigen Problemen befassen. befristete Projekte und die Zusammenarbeit mit anderen Entwicklern.
quelle
Du bekommst ein paar ähnliche Antworten und meine werden auch gleich sein. Code schreiben. Dafür gibt es zwei gute Möglichkeiten.
In beiden Fällen erhalten Sie die direkte Erfahrung mit dem Programmieren, die Sie benötigen, sowie die Einbeziehung in Programmier-Communities, während Sie lernen und Fragen stellen müssen, um mehr daraus zu machen. Sie werden viele Fehler machen. Das ist gut - wenn Sie aufhören, Fehler zu machen, haben Sie aufgehört zu lernen, und Sie müssen einen neuen Weg finden, sich selbst herauszufordern.
quelle
Meine Vorschläge
quelle
Peer Reviews helfen wirklich dabei, die Qualität Ihres Codes zu verbessern. Wenn Sie keinen echten Mentor haben, können Sie Ihren Code [nachdem Sie ihn auf das erforderliche Minimum reduziert haben] bei StackOverflow oder RefactorMyCode oder in Mailinglisten veröffentlichen. Die Mitarbeiter helfen Ihnen dabei, die Qualität Ihres Codes zu verbessern.
quelle
"Trainieren!" Das ist ein Klischee.
Sie sollten überprüfen, was Sie in den Matheklassen gelernt haben, und einige Programme erstellen, die sich mit den Problemen befassen. Implementieren Sie außerdem ein Aufzugsprogramm, einen Verkaufsautomaten (der Änderungen an Münzen berechnet), um Ihre logischen Fähigkeiten zu verbessern. Denken Sie an alles im Alltag und setzen Sie diese um.
quelle
Ja, Übung ist äußerst wichtig, um Programmierkenntnisse zu entwickeln und sie scharf zu halten. Das Üben allein bringt Sie jedoch nur so weit. Sie müssen auch von Menschen lernen, die mehr wissen als Sie. Es gibt Techniken, von denen Sie noch nie gehört haben, Praktiken, deren Nutzen nicht sofort offensichtlich ist, und Tricks, die Sie sich niemals selbst ausdenken könnten.
Es gibt viele Möglichkeiten, neue Techniken, nette Tricks und nützliche Praktiken zu erlernen. Bücher lesen. Sprechen Sie mit Kollegen. Fragen stellen. Überprüfen Sie den Code anderer Personen und lassen Sie ihn Ihren Code überprüfen. Lesen Sie Blogs und Artikel zur Programmierung, einschließlich dieser Website. Kurz gesagt, nicht im Vakuum arbeiten.
Oh, und wenn Sie sich nicht sicher sind, was NP-complete bedeutet, oder wenn Ihnen die Big-O-Notation Angst macht, sollten Sie sich wahrscheinlich eine Theorie der Berechnungs- und Algorithmusklassen zulegen.
quelle
Ich würde sagen, dass Sie sich über Entwurfsmuster wie Builder, Factory, Composite und schließlich Observer, Mediator und Flyweight informieren sollten. Entwurfsmuster sind nicht das A und O für Codierungslösungen, sondern zeigen, wie theoretische Konzepte der objektorientierten Programmierung implementiert werden können.
quelle
Ich kann nur das vorschlagen, was bei mir funktioniert hat. Ich hatte den Traum, Programmiersprache zu lernen und damit eine Schachengine zu erstellen. Ich habe Zeit mit Büchern, Artikeln und kleinen Mustern verbracht. Also habe ich mich entschlossen, echte Projekte zu prüfen, die eine bessere Dokumentation für Entwickler bieten. Ich habe eines ausgewählt und habe angefangen, das Projekt Tag für Tag zu lesen. Denken Sie nicht, dass vorübergehende Tage Zeitverschwendung beim Lesen sind. Es ist viel besser, als Zeit mit dem Lesen von Artikeln und Büchern zu verbringen. Sie werden auf viele Dinge stoßen, die auf den ersten Blick nicht klar sind, aber dies wird sich von Tag zu Tag ändern, wenn Sie sich geduldig um Forschung bemühen. Erwarten Sie nicht, dass Sie in einer Woche alles verstehen. Sie müssen Ihr geringes Selbstwertgefühl halten, wenn Sie einige Dinge nicht verstehen. Versuchen Sie einfach herauszufinden, wie diese verdammt tolle Sache funktioniert, und genießen Sie es.
Wählen Sie ein bestehendes Projekt aus, für das Sie eine Leidenschaft haben. Beginnen Sie mit dem Lesen von Codes, dem Debuggen und versuchen Sie zu verstehen, wie die Dinge im Alltag funktionieren. Nutzen Sie das Projekt auch für sich. Fügen Sie dann einige Funktionen hinzu, die Sie möchten. Versuchen Sie sogar, die gleiche oder eine ähnliche Anwendung zu schreiben.
quelle