Yang Anda bicarakan adalah lebih banyak rekayasa perangkat lunak daripada pemrograman. Ini sedikit arsitektur, sedikit "praktik terbaik" dan "pola desain," sedikit bekerja dengan orang lain. Meskipun ada buku yang dapat membantu, sebagian besar berasal dari pengalaman. Tidak ada yang mulai menulis, katakanlah, Microsoft Word.
Pikirkan tentang program besar, "nyata" yang ingin Anda tulis. Sekarang pikirkan tentang berbagai bagian yang Anda butuhkan untuk membuatnya berfungsi seperti yang Anda inginkan. Misalnya, dalam gim orang pertama modern Anda akan membutuhkan mesin grafis 3D, AI non-pemain-karakter, modul musik / suara, mesin fisika, dan modul tingkat atas yang menegakkan aturan main (tahu "peta", bagaimana berbagai karakter berinteraksi, dll.). Dan kemudian ada karya seni dan desain karakter dan musik, tidak ada yang kode tetapi yang diperlukan untuk permainan harus lengkap.
Sekarang: Manakah dari ini yang akan Anda bangun sendiri dan mana yang akan Anda dapatkan di tempat lain? Sebagian besar proyek perangkat lunak besar tidak diprogram dari awal. Mungkin Anda akan menggunakan mesin 3D dan modul musik / suara dan hanya memprogram hal-hal yang membuat permainan Anda unik. OK, jadi Anda harus mencari tahu modul pihak ketiga apa yang akan Anda gunakan, yang akan melibatkan faktor-faktor seperti biaya, bahasa apa yang mereka gunakan, fitur apa yang mereka miliki, bagaimana API mereka dirancang (yaitu, seberapa lengkapnya) adalah, seberapa cocok dengan gaya pemrograman pribadi Anda, dll.). Mungkin Anda akan menulis "proof of concept" atau program pengujian menggunakan satu atau dua kandidat untuk berbagai modul pihak ketiga untuk memastikan mereka akan melakukan semua hal yang Anda butuhkan dan mudah untuk Anda gunakan.
Juga, bahkan kode yang ingin Anda tulis sendiri mungkin merupakan pekerjaan yang terlalu besar untuk Anda selesaikan dalam kerangka waktu yang Anda pikirkan. Berapa banyak programmer lain yang perlu Anda kerjakan dalam proyek ini? Bagaimana Anda akan membagi pekerjaan? Bagaimana berbagai modul dirancang sehingga semuanya bisa saling cocok meskipun ditulis oleh orang yang berbeda? Bagaimana Anda semua bekerja pada kode sumber yang sama tanpa menghapus perubahan satu sama lain (jawaban: kontrol versi, yang sangat berguna ketika Anda bekerja solo tetapi sangat diperlukan ketika bekerja dengan orang lain).
Setelah Anda mengetahui modul apa yang ingin Anda tulis sendiri, Anda melakukan proses yang sama. Cari tahu bagian-bagian dari setiap modul, bagaimana mereka harus cocok bersama, dan mana yang akan Anda tulis sendiri dan yang akan Anda dapatkan di tempat lain. Lanjutkan memecah-mecah sampai setiap bagian cukup kecil untuk Anda pegang dalam pikiran Anda, untuk Anda katakan, "ya, saya bisa menulis itu!" Dan kemudian melakukannya. Ketika Anda melakukannya, Anda akan menemukan hambatan yang tidak terduga dalam bagaimana berbagai bagian dari program Anda cocok bersama. Ini akan membuat frustrasi, tetapi itu adalah kesempatan bagi Anda untuk mempelajari lebih lanjut tentang kerajinan Anda, dan harus dilihat seperti itu.
Pada awalnya, Anda hanya akan dapat memegang bagian yang sangat kecil dari program Anda - katakanlah, fungsi individu - di dalam pikiran Anda, dan karenanya Anda harus sering memecah banyak hal sebelum mulai coding. Ketika Anda mendapatkan pengalaman, Anda akan berpikir dalam fungsi daripada perlu berpikir tentang fungsi dan mulai berpikir tentang objek. Dan Anda akan berpikir dalam objek dan berpikir tentang modul yang lebih besar. Akhirnya, Anda akan berpikir dalam modul dan berpikir tentang keseluruhan, besar, program nyata.
Dan kemudian Anda akan menemukan bahwa Anda masih harus banyak belajar ... tetapi begitulah seterusnya. Jika, sebagai seorang programmer, Anda pernah berhenti belajar, Anda sudah usang dan akan diganti dengan model yang lebih baru.
Pokoknya, jangan takut, dan jangan khawatir jika ini terdengar ... mengerikan atau tidak mungkin dan Anda tidak benar-benar ingin menjadi seorang programmer. Ini bukan untuk semua orang. Saya suka musik dan makanan penutup, dan saya bisa memainkan kunci sedikit dan memasak beberapa hidangan, tetapi saya tidak mau menghabiskan waktu yang dibutuhkan untuk menjadi musisi yang hebat atau master chef.
Jika ternyata Anda tidak ingin menjadi programmer yang menulis aplikasi desktop yang besar dan nyata, ada beberapa jenis pekerjaan pemrograman lainnya. Anda bisa menjadi programmer yang tertanam, misalnya. Ada tantangan yang pasti dan menarik yang terlibat dalam penulisan program yang disematkan, dan Anda melakukan pekerjaan yang bermanfaat, tetapi biasanya programnya lebih kecil daripada aplikasi desktop. Atau Anda bisa menulis aplikasi web. Di Web, mudah untuk merekatkan sedikit fungsionalitas bersama-sama, sehingga Anda dapat menulis (misalnya) sistem komentar Web dan itu akan berguna bahkan jika itu bukan aplikasi Web secara keseluruhan. Sangat mudah untuk secara bertahap meningkatkan hal-hal di Web, sehingga Anda dapat mulai dengan (katakanlah) klien email Web dasar dan, seiring waktu, mengubahnya menjadi sesuatu seperti Gmail. (Tapi jangan lakukan itu, karena dengan begitu Anda akan bersaing dengan Gmail.)
Jika Anda tidak ingin menjadi programmer sama sekali, tetapi masih ingin bekerja dengan komputer, mungkin Anda bisa masuk ke IT atau bidang teknis lainnya. Dalam kasus ini, mengetahui pemrograman sebanyak yang sudah Anda lakukan sangat berguna, karena teman-teman Anda mungkin tidak memiliki sebanyak itu. Atau, Anda tahu, menjadi musisi jika itu menarik, karena (seperti kebanyakan bidang) itu melibatkan komputer saat ini. Menulis program kecil yang memanipulasi file audio atau MIDI dengan berbagai cara pintar, sehingga menjadikan Anda musisi yang lebih baik. Anda akan menemukan bahwa keterampilan pemrograman apa pun yang Anda miliki dapat diterapkan di banyak bidang untuk membuat Anda lebih baik dalam pekerjaan Anda.