Ein komplettes Programm erstellen?

15

Das Lesen von Büchern, das Ansehen von Videos und das Lesen von Tutorials ist ganz einfach. Notizen zu machen und das Material tatsächlich zu lernen, mag etwas schwieriger sein, aber selbst dann ist es für jemanden mit einem anständigen Gehirn und einigem Interesse einfach genug (ganz zu schweigen von Spaß).

Die Sache ist, es bereitet dich nicht wirklich darauf vor, ein komplettes Programm oder eine Webseite zu schreiben. Nehmen wir an, Sie sind Teenager (nur in der Highschool, keine echten (College-) Informatik- oder Programmierkurse und keine echte Erfahrung), und Sie kommen mit Groupon heraus. Oder sogar Mark Zuckerburg, sicher ein Genie und ein sehr fähiger Programmierer ... aber wie?

Wie empfehlen Sie Leuten, die nicht unbedingt neu in der Programmierung sind, sondern neu in der Programmierung realer Anwendungen und realer Programmierer, diese zu entwickeln? Was ist der "Entwicklungsprozess" - besonders für einzelne Programmierer (oder vielleicht 2-3 Teenager)?

Wie sieht der Prozess für die Webentwicklung aus? Wurde so etwas wie Facebook oder Groupon mit einem Framework (wie CodeIgniter oder Zend for PHP) geschrieben? Oder entwickeln sie ihre eigenen Frameworks? Ich frage nicht, wie man eine gute Idee findet, sondern wie man gute Ideen effektiv umsetzt? Hat jemand einen Rat?

Ich habe ein paar Bücher über C und C ++ (hauptsächlich die Programmiersprache C und die Programmiersprache C ++) gelesen und AP Computer Science (sowie ein paar zusätzliche Bücher über Java und OOP) besucht. Ich habe auch ein paar Tutorials zu PHP (und CodeIgniter) und Python gelesen. Aber ich bin immer noch auf der Highschool und technisch gesehen noch nicht einmal alt genug, um noch ein paar Monate in einem Praktikum zu arbeiten.

Bob
quelle
3
Reading books, watching videos, and reviewing tutorials is all very easy. Ja, sie zu lesen ist einfach, sie zu verstehen ist der schwierige Teil.
Yannis
@Yannis Rizos Eigentlich verstehe ich sie, und darüber spreche ich später im Satz.
Bob
@ Bob das Material zu lernen und es wirklich zu verstehen ist eigentlich ganz anders, der zweite ist viel schwieriger. Meine persönliche Definition von "Verstehen" ist, wenn ich das Thema so erklären kann, wie es ein Zehnjähriger verstehen würde. Schnell erklären "Schnittstellen" :)
Thanos Papathanasiou
1
@ThanosPapathanasiou Software, Hardware oder das OO-Konzept? :)
yannis
2
@YannisRizos, das ist das Schöne daran, Dinge wie Sie einem Zehnjährigen zu erklären. Sie wären gezwungen, ein vereinfachtes Beispiel zu verwenden, das alle drei zusammenfasst :)
Thanos Papathanasiou

Antworten:

8

Es gibt einen Unterschied zwischen dem einfachen Wissen, wie man programmiert, und dem Wissen, wie man ein Programm strukturiert (Softwarearchitektur).

In einem einfachen Buch über eine bestimmte Programmiersprache erfahren Sie nur, welche Tools Sie zum Einrichten der Architektur eines Programms verwenden können.

Es gibt auch Bücher, die Ihnen bei der Softwarearchitektur helfen. Themen, nach denen Sie suchen sollten, sind Designmuster , Softwareabstraktion , Softwarearchitektur / -design und vieles mehr ... ( Head First Design Patterns waren für mich ein echter Augenöffner.)

Für ein breiteres Spektrum von Ressourcen könnte diese Frage Sie interessieren.

Der beste Weg, um zu lernen, wie man ein gesamtes Programm richtig strukturiert, ist die praktische Erfahrung, bei der man Anregungen und neuen Techniken gegenüber sehr offen ist.

Steven Jeuris
quelle
6

Es ist dasselbe sehr häufige Problem bei der (Indie-) Spieleentwicklung: wie man fertig wird.

Abgesehen davon, dass Sie sicherstellen, dass Sie dies können, weil Sie entweder über alle erforderlichen Kenntnisse verfügen oder bereit sind zu lernen - und Sie haben überprüft, dass andere Personen überprüft haben, dass dies nicht unmöglich ist ...

... die Hauptsache, die "Finishing" ermöglicht, ist das Setzen von Zielen .

Ziele sind das zu erreichende Ziel, sie müssen nicht beschreiben, wie Sie dorthin gelangen, sondern nur die grundlegenden Anforderungen / Funktionen, die Sie benötigen, um eine erste Version Ihrer App als "fertig" zu betrachten. Setzen Sie sich auch nicht zu spät Ziele.

Schreiben Sie Ihre Ziele irgendwo auf. Schreib es.

Sobald Sie sich Ziele gesetzt haben, müssen Sie nur noch Wege finden, diese zu erreichen. Das ist der berühmte "Weg", der interessanter ist als die Ankunft. Mach dir keine Sorgen, Mauern zu erreichen und herauszufinden, wie falsch du sein wirst. Meistens, wenn das Thema neu ist, werden Sie es falsch verstehen und lernen, warum und in der Lage zu sein, es richtig zu machen und sich gegenseitig einzurichten, um näher an die Ziele heranzukommen.

Sogar im Spieldesign wissen wir, dass Sie Ziele angeben müssen, um sicherzustellen, dass der Spieler auch abstrakt weiß, was er erreichen muss, egal auf welche Weise er es tut.

Klaim
quelle
4

Viel über das Schwimmen zu lesen macht einen nicht zum Schwimmer. Natürlich bereitet es einen mit dem nötigen Wissen vor, um Schwimmer zu werden, muss man ins Wasser springen.

Ich sehe, dass viele Leute, die es getan haben, als darüber nachgedacht / gelesen haben, diejenigen sind, die Erfolg haben.

Wenn Sie ein Schwimmer sein wollen, springen Sie einfach ins Wasser und lernen Sie schwimmen, wenn Sie ein Programmierer sein wollen, beginnen Sie einfach mit einer Idee zu programmieren und lernen Sie das Programmieren.

Ich glaube, dass Peter Norvigs Essay hier relevant ist: Bringen Sie sich das Programmieren in 10 Jahren bei

18 Bytes
quelle
2
Gute Antwort! Ich habe zwei Freunde, die ständig Bücher über das Programmieren lasen (zu lesen anfingen) in der Hoffnung, dass sie sich eines Tages bereit fühlen würden , mit dem Programmieren zu beginnen. Das wirst du nie spüren. Einfach ins kalte Wasser springen und an einem richtigen Projekt arbeiten. Wenn Sie der Meinung sind, dass es zu komplex ist, wählen Sie eine kleinere. Arbeiten Sie daran, bis es fertig ist. Suchen Sie während des Projekts nach Büchern und Lesungen, die den offenen Fragen entsprechen, die bei Ihnen auftauchen.
Giorgio
1

Klingt so, als würden Sie sich zu sehr auf die Implementierungsaspekte von Software konzentrieren, die nur einen Bruchteil des gesamten Softwareentwicklungsprozesses ausmachen (siehe SDLC). Möglicherweise müssen Sie sich einige Softwaremethoden ansehen und lernen, eine zu verwenden, die Ihnen gefällt. Lesen Sie ansonsten Fallstudien, und finden Sie die Vor- und Nachteile der einzelnen Tools heraus, die Sie möglicherweise auch in Ihrer Software verwenden, und bewerten Sie sie. Nach einem kurzen Durchlesen Ihrer Frage müssen Sie sich möglicherweise auf die Analyse- und Entwurfsbereiche der Software konzentrieren und sich mit UML, Dekomposition und möglicherweise einigen Entwurfsmustern vertraut machen.

Hoffe das hilft..

Steve Rathbone
quelle
0

Kurze Antwort, Ziele setzen und loslegen.

Es gibt kein Buch oder eine Möglichkeit, Ihnen dies beizubringen, sondern praktische Erfahrungen.

Sie werden viele Fehler machen und nach und nach Erfahrungen sammeln. Wenn Sie also auf ein Problem stoßen, überlegen Sie es sich und versuchen Sie, eine Lösung zu finden. Wenn Sie es nicht schaffen, gehen Sie zu Stackoverflow und holen Sie sich Hilfe. Lassen Sie auch Code-Reviews so früh und so viel wie möglich durchführen.

Nachdem Sie Ihr erstes Projekt abgeschlossen haben und die technischen Probleme gut verstanden haben, sollten Sie sich mit abstrakteren und übergeordneten Themen des Software-Engineerings befassen.

Mit Ihrem neu gewonnenen Bewusstsein für häufig auftretende Probleme erhalten Sie in den Büchern abstrakte Konzepte für sauberen und entkoppelten Code, da Ihr erstes Projekt ein unhaltbares Durcheinander sein wird.

Bücher (übliche Verdächtige):

OliverS
quelle
0

An diesem Punkt müssen Sie aufhören, über das Programmieren zu lesen, und mit dem Programmieren beginnen. Wenn Sie eine Website erstellen möchten, lesen Sie ein Tutorial für das Framework Ihrer Wahl. Wählen Sie einfach eine, die Sie anspricht. In diesem Lernprogramm erfahren Sie, wie Sie das Framework verwenden. Erstellen Sie anschließend Ihre eigene Webanwendung.

Nachdem Sie Code geschrieben haben, haben Bücher über Programmiertechniken eine viel größere Bedeutung.

Kevin Cline
quelle