आप जिस बारे में बात कर रहे हैं, वह प्रोग्रामिंग से अधिक सॉफ्टवेयर इंजीनियरिंग है। यह थोड़ा सा आर्किटेक्चर है, थोड़ा सा "बेस्ट प्रैक्टिस" और "डिजाइन पैटर्न", दूसरों के साथ थोड़ा सा काम करना। जबकि ऐसी किताबें हैं जो मदद कर सकती हैं, ज्यादातर यह अनुभव से आती है। Microsoft Word, कोई भी लिखना शुरू नहीं करता है ।
एक बड़े, "वास्तविक" कार्यक्रम के बारे में सोचें जिसे आप लिखना चाहते हैं। अब विभिन्न टुकड़ों के बारे में सोचें जिन्हें बनाने के लिए आपको अपनी इच्छानुसार काम करना होगा। उदाहरण के लिए, एक आधुनिक प्रथम-व्यक्ति के खेल में आपको 3D ग्राफिक्स इंजन, गैर-खिलाड़ी-चरित्र AI, एक संगीत / ध्वनि मॉड्यूल, एक भौतिकी इंजन और एक शीर्ष-स्तरीय मॉड्यूल की आवश्यकता होगी जो खेल के नियमों को लागू करता है (जानता है) "नक्शा", विभिन्न अक्षर कैसे बातचीत करते हैं, आदि)। और फिर कलाकृति और चरित्र डिजाइन और संगीत है, जिनमें से कोई भी कोड नहीं है, लेकिन जो खेल को पूरा करने के लिए आवश्यक हैं।
अब: आप इनमें से किसे अपना बना लेंगे और जो आपको कहीं और मिलेगा? अधिकांश बड़े सॉफ्टवेयर प्रोजेक्ट्स को स्क्रैच से प्रोग्राम नहीं किया जाता है। शायद आप एक ऑफ-द-शेल्फ 3D इंजन और संगीत / ध्वनि मॉड्यूल का उपयोग करेंगे और केवल उन चीजों को प्रोग्राम करेंगे जो आपके गेम को अद्वितीय बनाते हैं। ठीक है, इसलिए आपको यह पता लगाना होगा कि आप किस थर्ड-पार्टी मॉड्यूल का उपयोग करने जा रहे हैं, जिसमें लागत जैसे कारक शामिल होंगे, वे किन भाषाओं के साथ काम करते हैं, उनके पास कौन-कौन सी सुविधाएँ होती हैं, उनका एपीआई कैसे बनाया जाता है (यह कैसे पूरा होता है) कितनी अच्छी तरह से, यह आपकी व्यक्तिगत प्रोग्रामिंग शैली, आदि के साथ फिट बैठता है)। हो सकता है कि आप विभिन्न तीसरे पक्ष के मॉड्यूल के लिए एक या दो उम्मीदवारों का उपयोग करके "अवधारणा के सबूत" या परीक्षण कार्यक्रम लिखेंगे, यह सुनिश्चित करने के लिए कि वे आपकी ज़रूरत के सभी काम करेंगे और आपके लिए उपयोग करना आसान है।
इसके अलावा, यहां तक कि जिस कोड को आप स्वयं लिखना चाहते हैं, वह आपके लिए बहुत बड़ा काम हो सकता है, जो आपके मन में आने वाले समय सीमा में पूरा हो सकता है। आपको प्रोजेक्ट पर काम करने के लिए कितने अन्य प्रोग्रामर की आवश्यकता है? नौकरी कैसे बंटेगी? विभिन्न मॉड्यूल कैसे डिज़ाइन किए जाएंगे ताकि वे सभी अलग-अलग लोगों द्वारा लिखे जाने के बावजूद एक साथ फिट हों? आप सभी एक ही स्रोत कोड पर एक-दूसरे के बदलावों को मिटाए बिना कैसे काम करेंगे (उत्तर: संस्करण नियंत्रण, जो तब अत्यंत उपयोगी होता है जब आप अकेले काम कर रहे हों लेकिन दूसरों के साथ काम करते समय अपरिहार्य हो)।
एक बार जब आपको पता चल जाता है कि आप घर में कौन से मॉड्यूल लिखना चाहते हैं, तो आप उसी प्रक्रिया को करते हैं। प्रत्येक मॉड्यूल के टुकड़ों को देखें, उन्हें एक साथ कैसे फिट होना चाहिए, और जो आप खुद लिखेंगे और जो आपको कहीं और मिलेगा। जब तक प्रत्येक टुकड़ा आपके दिमाग में रखने के लिए पर्याप्त न हो जाए, तब तक चीजों को तोड़ना जारी रखें, जब तक कि आप यह कहने के लिए, "हाँ, मैं ऐसा कर सकता था!" और फिर ऐसा करें। जैसा कि आप करते हैं, आप अप्रत्याशित बाधाओं का सामना करेंगे कि आपके कार्यक्रम के विभिन्न टुकड़े एक साथ कैसे फिट होते हैं। ये निराशाजनक होंगे, लेकिन वे आपके लिए अपने शिल्प के बारे में अधिक जानने के अवसर हैं, और इस तरह से देखा जाना चाहिए।
प्रारंभ में, आप केवल अपने कार्यक्रम के बहुत छोटे टुकड़े - जैसे, व्यक्तिगत कार्य - अपने दिमाग में, और इसलिए आपको कोडिंग शुरू करने से पहले बहुत सी चीजों को तोड़ना होगा। जैसा कि आप अनुभव प्राप्त करते हैं, आप कार्यों के बारे में सोचने और वस्तुओं के बारे में सोचने के बजाय कार्यों में सोचेंगे । और फिर आप वस्तुओं में सोच रहे होंगे और बड़े मॉड्यूल के बारे में सोच रहे होंगे । अंत में, आप मॉड्यूल में सोच रहे होंगे और पूरे, बड़े, वास्तविक कार्यक्रमों के बारे में सोच रहे होंगे ।
और तब आपको पता चलेगा कि आपको अभी भी बहुत कुछ सीखना बाकी है ... लेकिन ऐसा चलता है। यदि, एक प्रोग्रामर के रूप में, आपने कभी सीखना बंद कर दिया है, तो आप अप्रचलित हैं और एक नए मॉडल के साथ बदल दिया जाएगा।
वैसे भी, डरो मत, और चिंता मत करो अगर यह लगता है ... भयानक या असंभव और आप वास्तव में एक प्रोग्रामर नहीं बनना चाहते हैं। यह सभी के लिए नहीं है। मुझे संगीत और मिठाइयाँ बहुत पसंद हैं, और मैं चाबियों को थोड़ा खेल सकता हूँ और कुछ व्यंजन बना सकता हूँ, लेकिन मैं एक महान संगीतकार या मास्टर शेफ बनने में लगने वाले समय के लिए तैयार नहीं हूँ।
यदि यह पता चलता है कि आप बड़े, वास्तविक, डेस्कटॉप एप्लिकेशन लिखने वाले प्रोग्रामर नहीं बनना चाहते हैं, तो अन्य प्रकार की प्रोग्रामिंग नौकरियां हैं। आप एक एम्बेडेड प्रोग्रामर बन सकते हैं, उदाहरण के लिए। एम्बेडेड प्रोग्राम लिखने में निश्चित, दिलचस्प चुनौतियां शामिल हैं, और आप उपयोगी काम कर रहे हैं, लेकिन आम तौर पर प्रोग्राम डेस्कटॉप अनुप्रयोगों की तुलना में छोटे होते हैं। या आप वेब एप्लिकेशन लिख सकते हैं। वेब पर, एक साथ कार्यक्षमता के छोटे बिट्स को गोंद करना आसान है, इसलिए आप एक वेब टिप्पणी प्रणाली लिख सकते हैं (उदाहरण के लिए) और यह तब भी उपयोगी होगा जब यह एक संपूर्ण वेब अनुप्रयोग न हो। वेब पर सामान को बढ़ाना आसान है, इसलिए, आप एक बेसिक वेब मेल क्लाइंट के साथ शुरू (कह) सकते हैं और समय के साथ इसे जीमेल जैसी किसी चीज में विकसित कर सकते हैं। (लेकिन ऐसा मत करो, क्योंकि तब आप जीमेल के साथ प्रतिस्पर्धा करेंगे।)
यदि आप बिल्कुल प्रोग्रामर नहीं बनना चाहते हैं, लेकिन फिर भी कंप्यूटर के साथ काम करना चाहते हैं, तो संभवतः आप आईटी या किसी अन्य तकनीकी क्षेत्र में जा सकते हैं। इन मामलों में, आपके द्वारा पहले से की गई प्रोग्रामिंग को जानना बहुत उपयोगी है, क्योंकि आपके साथियों के पास इतना भी नहीं हो सकता है। या, आप जानते हैं, अगर वह अपील करता है तो एक संगीतकार बनें, क्योंकि (अधिकांश क्षेत्रों की तरह) इसमें आज कंप्यूटर शामिल हैं। छोटे कार्यक्रमों को लिखें जो विभिन्न चतुर तरीकों से ऑडियो या मिडी फ़ाइलों में हेरफेर करते हैं, इस प्रकार आपको एक बेहतर संगीतकार बनाते हैं। आप पाएंगे कि आपके पास जो भी प्रोग्रामिंग कौशल है, वह आपकी नौकरी में बेहतर बनाने के लिए बहुत सारे क्षेत्रों में लागू किया जा सकता है।