Wie kann ich mehr Programmiererfahrung sammeln? [Geschlossen]


9

Ich werde ein Informatikstudent im dritten Jahr sein und habe Head first Java, Head First C gelesen. Derzeit lese ich C ++, die Sprache, die mir am besten gefällt, da sie einen guten Unterrichtsstil für Menschen mit Erfahrung bietet. Ich plane, entweder zu lernen, Software mit QT zu erstellen, Objective-C (für iPhone) zu lernen oder Effective C ++ zu lesen.

Wie kann ich Erfahrungen als Programmierer sammeln? Habe ich die Fähigkeiten, an einem Open Source-Projekt teilzunehmen, oder muss ich PHP, MySQL oder eine andere Sprache lernen? Ich liebe Programmieren und Informatik im Allgemeinen, obwohl einige Klassen extrem schwierig sein können (theoretische Informatik). Ich habe auch vor, ein Guru in C ++ zu werden, aber das wird nicht so bald sein.


1
Haben Sie Programme geschrieben, die andere verwenden? Wenn nicht, schreiben Sie eine, die ein geliebtes Familienmitglied benötigt, und machen Sie sie für ihn oder sie nützlich (kann mehrere Iterationen dauern). Der letzte Teil ist, wo die wahre Lektion ist.

Wie kommt man zur Carnegie Hall?
jfrankcarr

1
Ich werde für eine Sekunde wie ein Arschloch klingen, aber ... Erfahrung - Aktive Teilnahme an Veranstaltungen oder Aktivitäten, die zur Anhäufung von Wissen oder Fähigkeiten führen. Nehmen Sie also aktiv an der Programmierung teil.
Steven Evers

1
Übrigens, was ist der Unterschied zwischen StackOverflow und Programmierern? Ist das Muster des Schließens von Fragen dazu gedacht, Programmierer zu einem weiteren StackOverflow zu machen? Was ist der Punkt dann - verschmelzen Sie einfach die beiden. Früher konnten wir Programmierern esoterische Fragen stellen, die wir in StackOverflow nicht konnten.
19 אבישגנת

Antworten:


11

ABC - IMMER CODIEREN. So einfach ist das wirklich. Eine meiner Lieblingsmethoden, um eine Sprache kennenzulernen, besteht darin, einen Spielzeugdolmetscher für eine Teilmenge der Sprache in der Sprache selbst zu schreiben, oder wenn das nicht Ihr Ding ist, dann vielleicht einen Raytracer oder etwas anderes, das gerade groß genug ist, um nicht trivial zu sein aber nicht so groß, dass es nicht in einem Monat oder so fertig sein kann. Es geht darum, an etwas zu arbeiten, das Sie dazu zwingt, sich die Standardbibliothek und die von der Sprache angebotenen Datenabstraktionsmöglichkeiten anzusehen. Manchmal ist das Projekt ein Erfolg, manchmal nicht, aber am Ende weiß ich genug über eine Sprache, um zu wissen, wo ihre Stärken und Schwächen liegen und ob ich weiter lernen möchte. Wenn sich herausstellt, dass mir die Sprache gefällt, versuche ich jedes Mal, wenn ich ein interessantes Papier oder einen Blogbeitrag lese, ein Projekt zu starten, in dem ich einige der Ideen umsetze, die in dem Artikel oder dem Blogbeitrag vorgestellt wurden. Auf diese Weise bekomme ich immer Übung und lerne neue Ideen, so dass es zu einem tugendhaften Zyklus wird.

Einige Projekte, die in der Vergangenheit für mich sehr gut funktioniert haben: Interpreter für eine Teilmenge einer Sprache, Ray Tracer, PEG-Parser-Generator, HTTP-Header-Parser, einfacher Echo-Client / Server, Twitter-Bot zum automatischen Posten von Tweets aus einer Warteschlange, Amazon-Produkt Schaber, um nach Angeboten zu suchen.


+1 Sie haben einige wirklich interessante Projekte erwähnt, danke.
Anthony

8

Wie in Teach Yourself Programming in Ten Years ausführlich erläutert , sollten Sie die folgenden Schritte ausführen:

  • Interessieren Sie sich für das Programmieren und machen Sie etwas, weil es Spaß macht. Stellen Sie sicher, dass es immer genug Spaß macht, damit Sie bereit sind, Ihre zehn Jahre / 10.000 Stunden einzuplanen.

  • Programm . Die beste Art des Lernens ist Lernen durch Handeln. Technischer ausgedrückt: "Das maximale Leistungsniveau für Personen in einem bestimmten Bereich wird nicht automatisch als Funktion erweiterter Erfahrung erreicht, aber das Leistungsniveau kann selbst von sehr erfahrenen Personen aufgrund gezielter Verbesserungsbemühungen gesteigert werden." . " (S. 366) und "das effektivste Lernen erfordert eine genau definierte Aufgabe mit einem angemessenen Schwierigkeitsgrad für die jeweilige Person, informatives Feedback und Möglichkeiten zur Wiederholung und Korrektur von Fehlern." (S. 20-21) Das Buch Erkenntnis in der Praxis: Geist, Mathematik und Kultur im Alltag ist eine interessante Referenz für diesen Standpunkt.

  • Sprechen Sie mit anderen Programmierern. andere Programme lesen . Dies ist wichtiger als jedes Buch oder jeder Schulungskurs.

  • Wenn Sie möchten, geben Sie vier Jahre an einem College (oder mehr an einer Graduiertenschule) ein. Auf diese Weise erhalten Sie Zugang zu einigen Jobs, für die Anmeldeinformationen erforderlich sind, und erhalten ein tieferes Verständnis des Fachgebiets. Wenn Sie jedoch keine Freude an der Schule haben, können Sie (mit etwas Engagement) ähnliche Erfahrungen allein oder beruflich sammeln . In jedem Fall reicht das Lernen von Büchern allein nicht aus. "Die Informatikausbildung kann niemanden zu einem erfahrenen Programmierer machen, genauso wenig wie das Studium von Pinseln und Pigmenten jemanden zu einem erfahrenen Maler machen kann", sagt Eric Raymond, Autor des New Hacker's Dictionary. Einer der besten Programmierer, den ich jemals eingestellt habe, hatte nur einen High School-Abschluss; Er hat eine Menge großartiger Software produziert, eine eigene Newsgroup und genug Aktienoptionen, um seinen eigenen Nachtclub zu kaufen.

  • Arbeiten Sie mit anderen Programmierern an Projekten . Seien Sie der beste Programmierer bei einigen Projekten. sei das Schlimmste bei einigen anderen. Wenn Sie der Beste sind, können Sie Ihre Fähigkeiten testen, um ein Projekt zu leiten und andere mit Ihrer Vision zu inspirieren. Wenn du am schlimmsten bist, lernst du, was die Meister tun, und du lernst, was sie nicht gerne tun (weil sie dich dazu bringen, es für sie zu tun).

  • Arbeiten Sie an Projekten nach anderen Programmierern . Verstehe ein Programm, das von jemand anderem geschrieben wurde. Sehen Sie, was es braucht, um es zu verstehen und zu beheben, wenn die ursprünglichen Programmierer nicht da sind. Überlegen Sie, wie Sie Ihre Programme so gestalten können, dass sie für diejenigen einfacher sind, die sie nach Ihnen warten.

  • Lernen Sie mindestens ein halbes Dutzend Programmiersprachen. Schließen Sie eine Sprache ein, die Klassenabstraktionen unterstützt (wie Java oder C ++), eine, die funktionale Abstraktion unterstützt (wie Lisp oder ML), eine, die syntaktische Abstraktion unterstützt (wie Lisp), eine, die deklarative Spezifikationen unterstützt (wie Prolog oder C ++ - Vorlagen), eine das unterstützt Coroutinen (wie Icon oder Scheme) und eine, die Parallelität unterstützt (wie Sisal).

  • Denken Sie daran, dass es in "Informatik" einen "Computer" gibt. Wissen Sie, wie lange Ihr Computer benötigt, um eine Anweisung auszuführen, ein Wort aus dem Speicher abzurufen (mit und ohne Cache-Fehler), aufeinanderfolgende Wörter von der Festplatte zu lesen und nach einem neuen Speicherort auf der Festplatte zu suchen. (Antworten hier.)

  • Beteiligen Sie sich an einer Sprachstandardisierung. Dies kann das ANSI C ++ - Komitee sein oder es kann entscheiden, ob Ihr lokaler Codierungsstil zwei oder vier Leerzeicheneinrückungsstufen aufweist. In jedem Fall lernen Sie, was andere Menschen in einer Sprache mögen, wie tief sie sich so fühlen und vielleicht sogar ein wenig darüber, warum sie sich so fühlen.

  • Haben Sie den gesunden Menschenverstand, sich so schnell wie möglich von der Standardisierung der Sprache zu lösen.


3

Ich würde vorschlagen, dass Sie sich selbst trainieren, indem Sie effektiv funktionale Programme schreiben. Nehmen Sie ein größeres Projekt, wenn Sie glauben, die Grundlagen zu haben. Lernen Sie das qt-Framework für die Softwareentwicklung kennen und üben Sie weiter. Der beste Weg, das Programmieren zu lernen, besteht darin, Code zu schreiben.

Ich würde sagen, dass das Lesen auch eine wichtige Rolle spielt. Sie könnten nach einem Team von Entwicklern suchen, die ein Open-Source-Projekt hosten (suchen Sie eines auf Github oder anderen ähnlichen Websites), weil sie Ihnen wertvolle Erfahrungen in der Teamentwicklung bieten könnten.


2

Manchmal sind Orte wie SourceForge zunächst etwas entmutigend. Eine wirklich gute Möglichkeit, etwas zu finden, besteht darin, die Issue-Tracker von Projekten zu durchsuchen und einen Fehler / ein Problem zu finden, dessen Behebung Ihnen gefällt.

Bei einigen kleinen Github-Projekten wird dies viel zugänglicher. Sie haben effektiv eine Richtung und einen Zweck, wenn Sie versuchen, den Code zu erfassen, anstatt ihn blind durchzuwaten.


1

Die Beispiele in den Büchern oder die Aufgaben an der Universität sind gute Ausgangspunkte, um zu verstehen, wie die Programmierung funktioniert, und sie zeigen die Möglichkeiten für Ihre zukünftigen Projekte.

Arbeite an echten Projekten

Aber ohne eine echte Projekterfahrung neigen Sie dazu, die Dinge zu vergessen, die Sie gelernt haben.

Probleme sind Möglichkeiten zu zeigen, was Sie können

Außerdem sehen Sie in einem realen Projekt, wie komplex die Anforderungen sein können, und Sie erklären, dass es schwierig ist, Probleme zu lösen. Diese Probleme bieten die Möglichkeit zu zeigen, was Sie können. Sie können Ihre schwachen Seiten sehen, die Sie verbessern sollten.


-1

Muss ich PHP, MySQL oder eine andere Sprache lernen?

Ja, Sir, bitte beachten Sie die Sprachen des World Wide Web. HTML5, CSS3 und JavaScript.

Hier ist warum:

  1. Sie sind schnell zu erlernen und immer umfangreicher zu implementieren.

  2. Sie schreiben nicht mehr nur Web, sondern auch Betriebssystem, Server und Datenbank.

  3. Am wichtigsten *

    Sie werden jetzt verwendet, um Computer Science 101 neu zu definieren - vom Schöpfer von jQuery, John Resig.

Schieße nicht auf den Boten, sondern überprüfe einfach diesen Link zur Khan School Academy .

Dort werden c / c ++ / c # -Designmuster an JS übertragen.

Ich hoffe, das hilft.


+1 - So falsch, dass dies abgelehnt wurde. Informationen sind gültig. Link ist glaubwürdig. Quelle ist jQuery Genius John Resig - Starten eines Programmierkurses 101 mit JavaScript, und es wird funktionieren. Schauen Sie sich die Khan Academy an. Upvote für das Potenzial zur Förderung der Bildung; im geringsten. Vielen Dank.
Jack Stone
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.