あなたが話しているのは、プログラミングよりもソフトウェア工学です。それは少しアーキテクチャであり、少し「ベストプラクティス」と「デザインパターン」であり、他の人と少し働いています。役立つ本はありますが、そのほとんどは経験に基づいています。Microsoft Wordのように、誰も執筆を始めません。
あなたが書きたいと思う大きな「本物の」プログラムについて考えてください。次に、必要な方法で機能させるために構築する必要があるさまざまな要素について考えます。たとえば、現代の一人称ゲームでは、3Dグラフィックエンジン、非プレイヤーキャラクターAI、音楽/サウンドモジュール、物理エンジン、およびゲームのルールを強制するトップレベルモジュールが必要です(知っている「マップ」、さまざまなキャラクターの相互作用など)。そして、アートワーク、キャラクターデザイン、音楽があります。いずれもコードではありませんが、ゲームを完成させるために必要なものです。
さて、これらのうちどれを自分で構築し、他のどこで取得しますか?ほとんどの大規模なソフトウェアプロジェクトは、ゼロからプログラムされていません。おそらく、市販の3Dエンジンと音楽/サウンドモジュールを使用して、ゲームをユニークにするものだけをプログラムするでしょう。それでは、使用するサードパーティモジュールを把握する必要があります。これには、コスト、使用する言語、使用する機能、APIの設計方法(完成度など)が含まれます。それはあなたの個人的なプログラミングスタイルなどにどれだけうまく適合しているかなどです)。さまざまなサードパーティモジュールの候補を1つまたは2つ使用して、「概念実証」を作成するか、プログラムをテストして、必要なすべてのことを実行し、使いやすいことを確認します。
また、自分で書きたいコードでさえ、自分だけが考えている時間枠で完了するには仕事が大きすぎるかもしれません。他に何人のプログラマーがプロジェクトに取り組む必要がありますか?どのように仕事を分割しますか?さまざまなモジュールがどのように設計されていて、それらが異なる人によって書かれたとしても、それらがすべて一緒に収まるように設計されますか?お互いの変更を一掃することなく、同じソースコードですべての作業を行う方法(回答:バージョン管理。単独で作業しているときは非常に便利ですが、他の人と作業するときは不可欠です)。
社内で作成するモジュールを決定したら、同じプロセスを実行します。各モジュールの断片、それらがどのように組み合わされるべきか、そしてあなたが自分で書いて、他のどこで手に入れるかを考えてください。それぞれのピースがあなたが心に留めるのに十分な小ささになるまで、物事を分解し続け、あなたが「はい、私はそれを書くことができます!」そして、そうします。あなたがそうするように、あなたはあなたのプログラムの様々な部分がどのように適合するかについて予期せぬ障害に遭遇するでしょう。これらはいらいらしますが、あなたのクラフトについてもっと学ぶ機会であり、そのように見られるべきです。
最初は、プログラムのごく一部(たとえば、個々の機能)を念頭に置いておくことができるため、コーディングを開始する前に多くのことを分解する必要があります。経験を積むと、関数について考える必要がなく、関数について考える必要がなくなり、オブジェクトについて考えるようになります。そして、あなたは考えるだろうにオブジェクトや思考について、より大きなモジュール。最後に、あなたが考えているだろうにモジュールや思考についての全体、大規模な、実際のプログラム。
そして、あなたはまだ学ぶべきことがたくさんあることを発見するでしょう...しかし、それは行きます。プログラマーとして学習をやめると、あなたは時代遅れになり、新しいモデルに置き換えられます。
とにかく、怖がらないでください、そして、これが聞こえるかどうか心配しないでください...ひどくまたは不可能であり、結局プログラマーになりたくないのです。それは皆のためではありません。私は音楽とデザートが大好きで、鍵を少し弾いて料理を作ることもできますが、素晴らしいミュージシャンやマスターシェフになるのにかかる時間を費やすつもりはありません。
大規模で実際のデスクトップアプリケーションを作成するプログラマになりたくない場合は、他の種類のプログラミングジョブがあります。たとえば、組み込みプログラマになることができます。組み込みプログラムの作成には明確で興味深い課題があり、有用な作業を行っていますが、通常、プログラムはデスクトップアプリケーションよりもかなり小さくなっています。または、Webアプリケーションを作成することもできます。Web上では、少しの機能を簡単に接着することができるため、Webコメントシステムを作成することができます(Webアプリケーション全体ではない場合でも便利です)。Web上のものも少しずつ改善するのは簡単なので、基本的なWebメールクライアントから始めて、時間の経過とともにGmailのようなものに進化させることができます。(ただし、Gmailと競合するため、そうしないでください。)
プログラマーになりたくないが、それでもコンピューターで作業したい場合は、ITまたは他の技術分野に進むことができます。これらの場合、あなたが既にしているのと同じくらい多くのプログラミングを知ることは非常に便利です。なぜなら、あなたの仲間はそれほど多くないかもしれないからです。または、それが魅力的であればミュージシャンになります。それは(ほとんどの分野と同様に)今日のコンピューターに関係しているからです。オーディオまたはMIDIファイルをさまざまな巧妙な方法で操作する小さなプログラムを作成して、より優れたミュージシャンにしましょう。あなたが持っているどんなプログラミングスキルでも、あなたの仕事をより良くするために多くの分野に適用できることがわかります。