it-swarm-eu.dev

Wie verbessere ich meine Codierungsfähigkeiten?

Hier ein paar Informationen über mich, bevor ich mit der Frage beginne.

Ich bin ein Informatik-Student, Java ist meine primäre Codierungssprache.

Das Grundproblem an meiner Universität sind die Lehrstandards. Niemand kümmert sich darum, den Schülern Codierungswissen beizubringen, sondern nur um theoretisches Wissen.

Der Effekt ist, dass die meisten meiner Collegekollegen überhaupt das Programmieren überhaupt nicht verstehen.

Selbst ich konnte die traditionelle Programmierumgebung nicht verlassen, was meine Codierung in gewissem Maße einschränkt.

Auf welche Weise kann ich meine Programmier-/Codierungsfähigkeiten entwickeln und erweitern?.

Können Sie auch die Quellen dafür vorschlagen?

Bearbeitet: Quellen, die auf die Entwicklung von Codierungsfähigkeiten hinweisen.

76
ykombinator

Programmierung ist einer der Bereiche, in denen Erfahrung wichtig ist. Um ein besserer Codierer zu werden, sollten Sie daher mehr codieren. Schreiben ist jedoch nicht das einzige, was Sie tun sollten. Sie sollten auch Code anderer Entwickler lesen und daraus lernen, was ein guter Code ist. Siehe SO Fragen daz .

Möglicherweise finden Sie auch Bücher, die speziell dem Codieren gewidmet sind. wie "Code abgeschlossen". Sie enthalten Beschreibungen darüber, was guter Code ist, was Sie in Kombination mit Ihrem Grundwissen zu einem guten Programmierer machen kann.

46
P Shved

Mein Lieblingszitat stammt von Konfuzius:

Ich höre, ich weiß. Ich verstehe, ich erinnere mich. Ich verstehe.

Alles Wissen, das ich bekam, stammte aus der Anwendung einer einzigen Strategie:

Nehmen Sie immer den schwierigsten Weg.

Sie möchten C # lernen? Holen Sie sich einen Job als C # -Entwickler.

Du willst Italienisch lernen? Gehen Sie mit einem Wörterbuch Englisch/Italienisch dorthin und sprechen Sie Italienisch

Sie möchten das Codieren lernen? Code!

98
user2567

Codierung ist ein guter Rat, aber ohne jemanden, 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 anzeigen.

21
JeffO

Hier ist eine Präsentation Dan North gab und QCon auf , wie man vom Anfänger zum erfahrenen Programmierer namens Sharpening the Tools wechselt. Nachfolgend finden Sie wichtige Vorschläge aus der Präsentation:

  1. Übe die Grundlagen: Kata, Code zum Spaß ...
  2. Lernen Sie von anderen Menschen: Lesen Sie Bücher, Blogs usw., lesen Sie Code, programmieren Sie paarweise ...
  3. Verstehen Sie die Trends: Was passiert jetzt in der Branche?
  4. Wissen teilen: Der beste Weg, etwas zu lernen, besteht darin, es zu verstehen und zu lehren
  5. Pflegen Sie Ihre Toolbox: Verwenden Sie "zeitlose" und neue Tools
  6. Lernen, wie man lernt: Verstehen, wie Lernen funktioniert
10
ysolik

Versuchen Sie, einen Compiler für eine einfache Sprache von Grund auf neu zu schreiben. Sie werden Ihre Fähigkeiten auf dem Weg stark verbessern (mit einigen netten 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 andere sagten, besteht die einzige Möglichkeit, Ihre Codierungsfähigkeiten zu verbessern, darin, dies tatsächlich zu tun. Machen Sie sich bei einigen großen Projekten die Hand schmutzig. Für große Programme ist es jedoch noch wichtiger, dass Sie die Softwaredesign-Techniken beherrschen, da sonst die Größe des Programms nicht zu bewältigen scheint.

Es gibt ein schönes Zitat von Nate Kirby:

"Schlechte Programmierer ignorieren Details. Schlechte Designer verlieren sich in Details."

Das Wechseln zwischen diesen beiden Abstraktionsebenen ist also die Fähigkeit, die Sie beherrschen sollten.

Auch die Geschwindigkeit, mit der Sie pro Stunde Codezeilen schreiben können, ist nicht das, was Sie anstreben sollten. Ich mag ein Zitat von David Parnas :

"Ich höre oft Entwickler, die als" jemand beschrieben werden, der weiß, wie man schnell ein großes System aufbaut ". Es gibt keinen Trick, große Systeme schnell zu erstellen. Je schneller Sie sie erstellen, desto größer werden sie! "

8
D. L.

Ich habe entweder einen Wettpool oder ein Baccarat-Spiel in fast jeder Sprache implementiert, die ich gelernt habe.

Diese Art von Software deckt ab

  • Daten und Zeiten mit Berechnungen
  • Währungstypen und Dinge, die in und aus der Währung konvertiert werden können
  • Ein diskretes Regelwerk, das leicht zu testen ist
  • Staaten, Übergang zwischen Staaten und mehreren Einheiten, die für den Staatsübergang verantwortlich sind
  • Mehrere Benutzer mit unterschiedlichen Ansichten desselben Modells
  • Mehrere Endbedingungen

Blackjack und Poker für mehrere Spieler würden ebenfalls funktionieren.

Eine Einschränkung ist, dass ich in meiner täglichen Arbeit an Finanzsystemen arbeite und es eine große Überschneidung zwischen den Dingen gibt, die beim Schreiben eines Multiplayer-Glücksspiels und eines Handelssystems zu berücksichtigen sind.

5
sal
  • Wählen Sie gute OpenSource-Projekte aus und lesen Sie den Code.
  • Nehmen Sie ein mittelgroßes Projekt für sich auf und beginnen Sie mit dem Codieren
    • Wenn Sie an Webentwicklung interessiert sind, versuchen Sie, eine vorhandene Website mit Ihrer bevorzugten Technologie von Grund auf neu zu erstellen. Wie wäre es mit Twitter in Django?
    • Wenn Sie sich mit der Entwicklung von Desktopanwendungen beschäftigen, beginnen Sie mit einem Notizblock und improvisieren Sie ihn, um erweiterte Funktionen zu unterstützen (zunächst Regex-basierte Suche).
4
Amarghosh

Springe ins Wasser, es könnte zuerst kalt sein und du wirst versucht rauszukommen, aber bald wird sich dein Körper daran gewöhnen und wieder warm werden und wenn du dich im Wasser wohl fühlst, kannst du herumschwimmen und vielleicht ins Wasser gehen tiefes Ende.

Ich habe gerade vor ein paar Monaten das College abgeschlossen, wo ich Java studiert habe. Genauso wie du 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, sondern habe mich einfach dafür entschieden. Anfangs war es einschüchternd und überwältigend, aber wenn Sie ü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 dieses Mal finde ich heraus, wie man sie objektorientiert macht und verwendet PEAR und seine Modul-Quickform, eine weitere Hürde, die ich überwinden muss, aber entschlossen und aufgeregt dennoch.

Also übe. Spring ins Wasser! Viel Glück :)

4
Jonathan

Stellen Sie sich das so vor ... Tiger Woods wurde nicht zum "besten" Golfer, indem er Golf schaute oder darüber las. Er kam so, wie jeder andere Athlet, indem er studierte, übte, herausfand, wo er sein Spiel verbessern und etwas dagegen tun 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 machen, und es dann selbst zu tun.

4
Muad'Dib

Wie bei jeder anderen menschlichen Aktivität besteht der beste Weg zur Verbesserung darin, Ihr Wissen zu üben, aber dafür benötigen Sie 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 dort einen Blick darauf werfen: http://codekata.pragprog.com/

4
jmservera

Ich schlage vor, die gesamte Syntax Ihrer Lieblingssprache zu lernen. Verstehen Sie, wie virtuelle Funktionen, Vererbung und Lambda verwendet werden, falls vorhanden. usw. Eine Sache, die ich getan habe, war, mir eine große, beängstigende Bibliothek zu schnappen (ich habe dies mit Boost und STL für C++ getan) und zu prüfen, ob jede Zeile und jedes Schlüsselwort Sinn macht.

Alternativ können Sie die Sprachsyntaxreferenz lesen, wenn es eine gute gibt, die die aktuellste Version abdeckt. Als Beispiel hier ist 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 Syntax hatte, nach der ich gesucht habe)

3
user2528

Der allgemeine Konsens ist "mehr Code schreiben", dem ich zustimme, aber ich werde diesem Rat 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 sowohl im Leistungsspektrum als auch im unteren Leistungsspektrum schreiben. Zusätzlich zu Java würde ich vorschlagen, ein paar kleine Projekte auf einer niedrigeren Ebene durchzuführen Sprache (C ist eine gute Sprache dafür), eine Skriptsprache (ich bevorzuge Perl, aber python ist auch eine gute Wahl), eine funktionale Sprache (LISP ist hier die allgemeine Empfehlung, aber OCaml und Haskell sind ebenfalls eine gute Wahl) und machen sich zumindest mit dem Lesen einer Assemblersprache vertraut.

Wählen Sie auch eine Vielzahl von Programmtypen aus, die Sie implementieren. Sehen Sie sich an, wie Sie mindestens eine Desktop-GUI, eine umfangreiche Webanwendung, einen Netzwerkclient und -server, einen Treiber, ein Dienstprogramm zum Mungieren von Daten, einen Raytracer und eine Physiksimulation implementieren.

Alle Projekte sollten einen relativ kleinen Umfang haben. Das Ziel ist nicht, ein funktionsfähiges Programm zu haben, sondern ein breites Spektrum an Erfahrungen in den verschiedenen Bereichen zu sammeln, in die Sie möglicherweise geraten, um die verschiedenen Arten des Denkens zu lernen, die für jedes Projekt erforderlich sind. und um herauszufinden, wo Ihre Interessen sind.

Sobald Sie dies getan haben, haben Sie eine gute Vorstellung davon, für welche Art von Programmierung Sie sich am meisten interessieren, und Sie können ein Open-Source-Projekt finden oder starten, um Erfahrungen mit der Arbeit an großen Codebasen im Umgang mit Long- zu sammeln. Projekte befristet und mit anderen Entwicklern zusammengearbeitet.

3
Cercerilla

Du bekommst ein paar ähnliche Antworten und meine werden auch die gleichen sein. Code schreiben. Es gibt zwei gute Möglichkeiten, dies zu tun.

  1. Wählen Sie etwas aus, das Sie wirklich anspricht oder interessiert, und setzen Sie es einfach um. Wenn Sie sich für Spiele interessieren, schreiben Sie ein Spiel. Wenn Sie sich für Web-Inhalte interessieren, stellen Sie eine interessante und originelle Website zusammen. Sie werden es vielleicht nicht einmal schaffen, aber die Erfahrung wird Ihnen eine ganze Menge beibringen.
  2. Wählen Sie ein Open Source-Projekt aus, das Sie interessant finden, und engagieren Sie sich dafür. Lernen Sie aus dem vorhandenen Code und verwenden Sie ihn, um Fehler zu beheben, Komponententests zu erstellen und neue Funktionen zu implementieren.

Beides bietet Ihnen die direkte Erfahrung mit dem Programmieren, die Sie benötigen, sowie die Beteiligung an Programmiergemeinschaften, wenn Sie lernen und Fragen stellen müssen, um mehr daraus zu machen. Sie werden viele Fehler machen. Dies ist gut - wenn Sie aufhören, Fehler zu machen, haben Sie aufgehört zu lernen und müssen einen neuen Weg finden, sich selbst herauszufordern.

2
glenatron

Meine Vorschläge

  • Suchen Sie ein Haustierprojekt und schreiben Sie es in einer anderen Sprache (lyke python/c #) als die, die Sie kennen. Dies wird Ihnen mehr beibringen, als Sie sich vorstellen können. Schauen Sie sich andere Projekte an, die ähnlich sind, und versuchen Sie, die Feature-Parität mit ihnen zu erreichen. Sie können damit langsam vorgehen und bescheidene Ziele verfolgen, indem Sie Ihren Schwierigkeitsgrad mit neuen Funktionen stetig erhöhen. Dies wird auch zu Ihrem Aushängeschild, wenn Sie ein Vorstellungsgespräch führen.
  • Finden Sie in Ihrem Projekt Verwendungen für relevante Technologien wie Webdienste, Javascript, Ajax, Geokodierung und im Grunde alles, was in der Software-Welt Fortschritte macht.
  • Spielen Sie mit anderen Betriebssystemen wie Linux/freebsd. Je mehr Sie verschiedenen Arten von Systemen ausgesetzt sind, desto besser werden Sie verstehen, wie sie denken und warum sie die Dinge so gemacht haben, wie sie es getan haben.
  • Wenn Sie mit Teilen Ihres Codes fertig sind, kehren Sie zurück und versuchen Sie, ihn ständig zu verbessern. Finden Sie Ineffizienzen, fügen Sie bei Bedarf weitere Kommentare hinzu und versuchen Sie, diese zu perfektionieren.
  • Stöbern Sie auf c2.com. Es gibt viele gute Codierungspraktiken. Lernen Sie diese und versuchen Sie, sie in Ihrem eigenen Projekt anzuwenden.
  • Lesen Sie Bücher wie den pragmatischen Programmierer und vervollständigen Sie den Code. Sie vermitteln Ihnen das Wissen über kampferprobte Programmierung.
  • Dies mag nicht verwandt klingen, aber finden Sie ein anderes technisches Hobby, wenn Sie noch keines haben, wie RC-Rennen zu fahren, ein Musikinstrument zu spielen oder eine Fremdsprache zu lernen. Je mehr Teile Ihres Gehirns verwendet werden, desto besser, und Sie müssen sich von Zeit zu Zeit entspannen, da die Programmierung zu viel werden kann.
2
Tjaart

Peer Reviews tragen wirklich dazu bei, 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.

2
missingfaktor

Ja, Übung ist äußerst wichtig, um Programmierkenntnisse zu entwickeln und sie scharf zu halten. Übung 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 Vorteile nicht sofort offensichtlich sind, und Tricks, die Sie niemals selbst erfinden 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 sie Ihren überprüfen. Lesen Sie Blogs und Artikel zum Thema Programmierung, einschließlich dieser Website. Kurz gesagt, arbeiten Sie nicht im luftleeren Raum.

Oh, und wenn Sie nicht sicher sind, was NP-vollständig bedeutet, oder wenn Ihnen die Big-O-Notation Angst macht, sollten Sie wahrscheinlich eine Theorie der Berechnung und Algorithmenklassen nehmen.

1
Dima

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, aber sie zeigen, wie theoretische Konzepte der objektorientierten Programmierung implementiert werden können.

1
Tim Claason

Ich kann nur vorschlagen, was für mich 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 überprüfen, die eine bessere Dokumentation für Entwickler haben. Ich habe eines ausgewählt und angefangen, das Projekt Tag für Tag zu lesen. Denken Sie nicht, dass vergangene Tage Zeit beim Lesen verschwenden. Es ist viel besser, als Zeit damit zu verbringen, Artikel und Bücher zu lesen. 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 versuchen, geduldig zu forschen. Erwarten Sie nicht, in einer Woche alles zu verstehen. Sie müssen Ihr geringes Selbstwertgefühl bewahren, 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 vorhandenes Projekt aus, für das Sie eine Leidenschaft haben. Beginnen Sie mit dem Lesen von Codes, debuggen Sie es und versuchen Sie zu verstehen, wie die Dinge jeden Tag funktionieren. Verwenden Sie das Projekt auch für sich. Fügen Sie dann einige Funktionen hinzu, die Sie möchten. Versuchen Sie sogar, dieselbe oder eine ähnliche Anwendung zu schreiben.

1
Freshblood

"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 auch ein Aufzugsprogramm, einen Automaten (der Änderungen in Münzen berechnet), um Ihre logischen Fähigkeiten zu verbessern. Denken Sie an alles im Alltag und setzen Sie es um.

1
Ming-Tang