Bahsettiğiniz şey, programlamadan çok yazılım mühendisliğidir. Biraz mimarlık, biraz "en iyi uygulamalar" ve "tasarım desenleri", biraz diğerleri ile çalışıyor. Yardımcı olabilecek kitaplar olsa da, çoğu deneyimden geliyor. Kimse Microsoft Word’ü yazmaya başlamaz .
Yazmak istediğiniz büyük, "gerçek" bir program düşünün. Şimdi, istediğiniz şekilde çalışmasını sağlamak için inşa etmeniz gereken çeşitli parçaları düşünün. Örneğin, modern bir birinci şahıs oyunda bir 3D grafik motoruna, oyuncu olmayan karakter AI'sine, müzik / ses modülüne, fizik motoruna ve oyunun kurallarını uygulayan üst seviye bir modüle ihtiyacınız olacak (bilir) "harita", çeşitli karakterlerin nasıl etkileşime girdiği vs. Ve sonra sanat eseri, karakter tasarımı ve müzik var, bunların hiçbiri kod değil ancak oyunun tamamlanması için gerekli.
Şimdi: Bunlardan hangisini kendini inşa edeceksin ve hangisini başka bir yere alacaksın? Çoğu büyük yazılım projesi sıfırdan programlanmamıştır. Belki de hazır bir 3B motoru ve müzik / ses modülünü kullanacak ve yalnızca oyununuzu benzersiz kılan şeyleri programlayacaksınız. Tamam, yani hangi üçüncü taraf modüllerini kullanacağınızı, maliyet, hangi dillerle çalıştıklarını, hangi özelliklere sahip olduklarını, API'lerinin nasıl tasarlandıklarını (yani, ne kadar tamamlayacağınızı) içerecek şekilde belirlemelisiniz. kişisel programlama tarzınıza ne kadar uyduğunu vs.) Belki ihtiyaç duyduğunuz her şeyi yapacaklarını ve kullanımlarını kolaylaştırdıklarından emin olmak için çeşitli üçüncü taraf modüller için bir veya iki aday kullanarak "kavram kanıtları" yazacak veya programları test edeceksiniz.
Ayrıca, kendinize yazmak istediğiniz kod bile, aklınızdaki zaman diliminde tek başına sizin için tamamlayamayacağınız bir iş olabilir. Projede çalışmak için başka kaç programlayıcıya ihtiyacınız var? İşi nasıl böldün? Farklı modüller nasıl yazılsalar da, farklı modüller tarafından yazılmış olsalar bile, birbirlerine nasıl uyacaklar? Hepiniz birbirlerinin değişikliklerini silmeden aynı kaynak kod üzerinde nasıl çalışacaksınız (cevap: yalnız çalıştığınızda son derece kullanışlıdır ancak başkalarıyla çalışırken vazgeçilmez olan sürüm kontrolü).
Hangi modülleri kendi bünyesinde yazmak istediğinizi öğrendikten sonra aynı işlemi yaparsınız. Her modülün parçalarını, nasıl bir araya gelmeleri gerektiğini, hangilerini kendinizin yazacağını ve hangilerini başka bir yere alacağınızı belirleyin. Her bir parça zihninizde tutulacak kadar küçük olana kadar işleri parçalamaya devam edin, "evet, bunu yazabilirim!" Ve sonra öyle yap. Sizin yaptığınız gibi, programınızın çeşitli parçalarının birbirine nasıl uyduğuna dair öngörülemeyen engellerle karşılaşacaksınız. Bunlar sinir bozucu olacak, ama sizin mesleğiniz hakkında daha fazla şey öğrenmek için fırsatlar ve bu şekilde görülmeleri gerekiyor.
Başlangıçta, programınızın sadece küçük parçalarını tutabileceksiniz - mesela bireysel fonksiyonlar - aklınızda, ve böylece kodlamaya başlamadan önce işleri parçalamak zorunda kalacaksınız. Deneyim kazandıkça, sence olacak içinde yerine düşünmek gerek daha fonksiyonları hakkında işlevleri ve düşünmeye başlamak hakkında nesneler. Ve sonra düşünmeye olacak içinde nesneler ve düşünme hakkında daha geniş modüllerin. Son olarak, düşünme olacak içinde modülleri ve düşünme konusunda bütün, büyük, gerçek programlara.
Ve sonra öğrenecek çok şeyin olduğunu keşfedeceksin ... ama öyle gidiyor. Bir programcı olarak öğrenmeyi bıraktıysanız, modası geçmiş olursunuz ve daha yeni bir modelle değiştirilirseniz.
Her neyse, korkma, ve eğer kulağa kötü geliyorsa ya da imkansızsa endişelenme ve sonuçta programcı olmak istemezsin. Bu herkes için değil. Müziği ve tatlıları çok severim ve biraz anahtar çalabilir ve bazı yemekler pişirebilirim, ancak harika bir müzisyen ya da usta bir şef olmak için gereken zamanı koymak istemiyorum.
Anlaşılan, büyük, gerçek, masaüstü uygulamaları yazan bir programcı olmak istemiyorsanız, başka türden programlama işleri vardır. Örneğin gömülü bir programcı olabilirsiniz. Gömülü programlar yazarken kesin ve ilginç zorluklar var ve faydalı işler yapıyorsunuz, ancak genelde programlar masaüstü uygulamalarından daha küçük. Veya web uygulamaları yazabilirsiniz. Web'de küçük işlevsellik parçalarını birbirine yapıştırmak kolaydır, böylece bir Web yorum sistemi (örneğin) yazabilir ve tüm bir Web uygulaması olmasa bile faydalı olabilir. Web’deki öğeleri aşamalı olarak iyileştirmek de kolaydır, böylece temel bir Web posta istemcisiyle başlayabilir ve zaman içinde Gmail gibi bir şeye dönüştürebilirsiniz. (Ama bunu yapma, çünkü o zaman Gmail’le rekabet edeceksin.)
Eğer hiç bir programcı olmak istemiyorsanız, ancak yine de bilgisayarlarla çalışmak istiyorsanız, muhtemelen BT veya başka bir teknik alana girebilirsiniz. Bu gibi durumlarda, zaten yaptığınız kadar programlama bilmek çok faydalıdır, çünkü meslektaşlarınız o kadar fazla olmayabilir. Ya da bilirsin, eğer bir temyizde müzisyen olursun, çünkü (çoğu alan gibi) bugün bilgisayarları içerir. Sesi veya MIDI dosyalarını çeşitli akıllı yollarla işleyen ve böylece daha iyi bir müzisyen yapan küçük programlar yazın. Sahip olduğunuz programlama becerileri ne olursa olsun, işinizde daha iyi olmanız için birçok alanda uygulanabileceğini göreceksiniz.