Sie sprechen von mehr Software-Engineering als von Programmierung. Es ist ein bisschen Architektur, ein bisschen "Best Practices" und "Design Patterns", ein bisschen mit anderen zusammenarbeiten. Es gibt zwar Bücher, die helfen können, aber das meiste kommt aus der Erfahrung. Niemand fängt an zu schreiben, sagen wir Microsoft Word.
Denken Sie an ein großes, "echtes" Programm, das Sie gerne schreiben würden. Denken Sie nun über die verschiedenen Teile nach, die Sie bauen müssen, damit es so funktioniert, wie Sie es möchten. Zum Beispiel benötigen Sie in einem modernen Ego-Spiel eine 3D-Grafik-Engine, eine KI ohne Spielercharakter, ein Musik- / Soundmodul, eine Physik-Engine und ein Top-Level-Modul, das die Spielregeln durchsetzt (weiß) die "Karte", wie die verschiedenen Charaktere interagieren, etc.). Und dann ist da noch das Artwork und Character Design und die Musik, von denen keine Code sind, die aber notwendig sind, damit das Spiel vollständig ist.
Nun: Welche davon wirst du selbst bauen und welche wirst du woanders bekommen? Die meisten großen Softwareprojekte werden nicht von Grund auf neu programmiert. Vielleicht werden Sie eine handelsübliche 3D-Engine und ein Musik- / Soundmodul verwenden und nur die Dinge programmieren, die Ihr Spiel einzigartig machen. OK, Sie müssen also herausfinden, welche Module von Drittanbietern Sie verwenden, was Faktoren wie die Kosten, die Sprachen, die Funktionen und das Design der API (dh die Vollständigkeit) mit sich bringt ist, wie gut es zu Ihrem persönlichen Programmierstil passt, etc.). Vielleicht schreiben Sie "Proofs of Concept" oder testen Programme mit einem oder zwei Kandidaten für die verschiedenen Module von Drittanbietern, um sicherzustellen, dass sie alle erforderlichen Funktionen ausführen und für Sie einfach zu bedienen sind.
Selbst der Code, den Sie selbst schreiben möchten, ist möglicherweise zu umfangreich, als dass Sie ihn in der von Ihnen geplanten Zeit alleine ausführen könnten. Wie viele andere Programmierer benötigen Sie für das Projekt? Wie werden Sie den Job aufteilen? Wie werden die verschiedenen Module gestaltet, damit sie alle zusammenpassen, obwohl sie von verschiedenen Personen geschrieben wurden? Wie werden Sie alle am selben Quellcode arbeiten, ohne die Änderungen der anderen zu verwischen (Antwort: Versionskontrolle, die äußerst nützlich ist, wenn Sie alleine arbeiten, aber unverzichtbar, wenn Sie mit anderen arbeiten)?
Sobald Sie herausgefunden haben, welche Module Sie intern schreiben möchten, führen Sie denselben Prozess durch. Finden Sie heraus, welche Teile jedes Moduls zusammenpassen sollten, welche Sie selbst schreiben und welche Sie woanders bekommen. Brechen Sie die Dinge so lange auf, bis jedes Stück klein genug ist, dass Sie es im Kopf behalten und sagen können: "Ja, das könnte ich schreiben!" Und dann tu es. Dabei stoßen Sie auf unvorhergesehene Hindernisse, wie die verschiedenen Teile Ihres Programms zusammenpassen. Dies wird frustrierend sein, bietet Ihnen jedoch die Möglichkeit, mehr über Ihr Handwerk zu erfahren, und sollte auch so gesehen werden.
Anfänglich können Sie nur sehr kleine Teile Ihres Programms - zum Beispiel einzelne Funktionen - im Kopf behalten, und müssen daher vor dem Codieren viel aufteilen. Wie Sie Erfahrungen sammeln, werden Sie denken in Funktionen statt , um zu denken , über Funktionen und sich Gedanken über Objekte. Und dann werden Sie in Objekten denken und über größere Module nachdenken . Schließlich werden Sie in Modulen denken und über ganze, große, echte Programme nachdenken .
Und dann werden Sie feststellen, dass Sie noch viel zu lernen haben ... aber so geht es. Wenn Sie als Programmierer jemals aufhören zu lernen, sind Sie veraltet und werden durch ein neueres Modell ersetzt.
Hab sowieso keine Angst und mach dir keine Sorgen, ob das schrecklich oder unmöglich klingt und du eigentlich doch kein Programmierer sein willst. Es ist nicht jedermanns Sache. Ich liebe Musik und Desserts, und ich kann ein bisschen auf den Tasten spielen und ein paar Gerichte kochen, aber ich bin nicht bereit, die Zeit zu investieren, die nötig ist, um ein großartiger Musiker oder ein Meisterkoch zu werden.
Wenn sich herausstellt, dass Sie kein Programmierer sein möchten, der große, echte Desktop-Anwendungen schreibt, gibt es andere Arten von Programmieraufträgen. Sie könnten zum Beispiel ein Embedded-Programmierer werden. Das Schreiben von eingebetteten Programmen ist mit bestimmten interessanten Herausforderungen verbunden, und Sie leisten nützliche Arbeit. In der Regel sind die Programme jedoch kleiner als Desktopanwendungen. Oder Sie könnten Webanwendungen schreiben. Im Web ist es einfach, kleine Teile der Funktionalität zusammenzufügen, sodass Sie (z. B.) ein Webkommentarsystem schreiben können, das auch dann nützlich ist, wenn es sich nicht um eine ganze Webanwendung handelt. Es ist auch einfach, Dinge im Web schrittweise zu verbessern, sodass Sie mit einem einfachen Web-Mail-Client beginnen und ihn im Laufe der Zeit in etwas wie Google Mail umwandeln können. (Tun Sie dies jedoch nicht, da Sie dann mit Google Mail konkurrieren.)
Wenn Sie kein Programmierer sein möchten, aber dennoch mit Computern arbeiten möchten, können Sie sich möglicherweise der IT oder einem anderen technischen Gebiet widmen. In diesen Fällen ist es sehr nützlich, so viel wie möglich zu programmieren, da Ihre Kollegen möglicherweise nicht einmal so viel haben. Oder, wissen Sie, Musiker werden, wenn das gefällt, weil es (wie in den meisten Bereichen) heutzutage Computer betrifft. Schreiben Sie kleine Programme, die Audio- oder MIDI-Dateien auf clevere Weise bearbeiten und Sie so zu einem besseren Musiker machen. Sie werden feststellen, dass Ihre Programmierkenntnisse in vielen Bereichen angewendet werden können, um Sie bei Ihrer Arbeit zu verbessern.