"हाय, अमीगो!"

"हाय, बिलाबो!"

"आज मैं आपको बताने जा रहा हूँ कि आम तौर पर कार्यक्रम कैसे विकसित किए जाते हैं।"

"20वीं सदी में, जब आधुनिक आईटी अपनी प्रारंभिक अवस्था में था, हर कोई यह सोचता था कि प्रोग्रामिंग निर्माण या निर्माण की तरह है।"

"चीजें आमतौर पर कुछ इस तरह होती थीं:"

" ग्राहक उस प्रकार के कार्यक्रम की व्याख्या करेगा जिसकी उसे आवश्यकता है - उसे क्या करना चाहिए और उसे कैसे करना चाहिए।"

" व्यापार विश्लेषक उनकी बात सुनेंगे और उन्होंने जो कहा उसके आधार पर कार्यक्रम की आवश्यकताओं की पूरी सूची बनाएंगे।"

"तब परियोजना प्रबंधक इन आवश्यकताओं को कार्यों में विभाजित करेंगे, और यह भी निर्धारित करेंगे कि कौन सा प्रोग्रामर किस कार्य को और किस क्रम में करेगा।"

"तब प्रोग्रामर काम पर लग जाते थे। कभी-कभी वे कई साल (!) काम करते थे।"

"जब वे समाप्त हो गए, तो कार्यक्रम परीक्षकों को दिया गया।"

" परीक्षक यह सत्यापित करने के लिए कार्यक्रम की प्रत्येक आवश्यकता से गुजरेंगे कि उन्हें लागू किया गया था और यह कि कार्यक्रम उसी तरह काम करता है जैसा उसे करना चाहिए था।"

"अगर कुछ गलत हुआ, तो परीक्षक बग लॉग करेंगे और उन्हें प्रोग्रामर को भेज देंगे।"

"फिर प्रोग्रामर बग्स को ठीक कर देंगे और निश्चित प्रोग्राम को परीक्षकों को वापस भेज देंगे। और चक्र दोहराएगा।"

"जब मुख्य बग्स को ठीक किया गया, तो प्रोग्राम को ग्राहक को दे दिया गया।"

"वास्तव में चीजें कैसे चली गईं?"

"ठीक है, बेशक, मैंने बहुत कुछ सरल किया है, लेकिन यह बहुत करीब है कि चीजें कैसे की गईं।"

"और एक परियोजना को पूरा होने में वास्तव में डेढ़ से दो साल लग सकते हैं?"

"कभी-कभी यदि किसी परियोजना का विकास वास्तव में लंबा था, तो वे इसे अलग-अलग रिलीज में तोड़ देते थे। हर 3-6 महीने में, डेवलपर्स को प्रोग्राम की कार्यक्षमता का एक विशिष्ट हिस्सा बनाना होता था, इसका परीक्षण करना होता था, इसके सभी बग्स को ठीक करना होता था, और इसे दर्शकों को दिखाना होता था। ग्राहक।"

"सबसे पहले, ताकि वह अपने इंप्रेशन साझा कर सके। और दूसरा, और इससे भी महत्वपूर्ण बात, ताकि वह कार्यक्रम के विकास के लिए भुगतान करते रहें।"

"भुगतान करते रहो?"

"इसके बाद, विकास में अक्सर नियोजित की तुलना में 2-3 गुना अधिक समय लगता था। और क्योंकि प्रोग्रामर को अक्सर प्रति घंटा भुगतान किया जाता था, कार्यक्रम 2-3 गुना अधिक महंगा हो गया। क्या अधिक है, लाभ भी कम हो गए। आखिरकार, ग्राहक आज क्या चाहता है $100,000 की आवश्यकता 3 वर्षों में नहीं हो सकती है - विशेष रूप से तीन गुना कीमत पर।"

"क्या ग्राहक अक्सर भुगतान करने से मना कर देते हैं?"

"हाँ। उन्होंने बाद में अनुबंध में दंड जोड़ना शुरू कर दिया, लेकिन इससे स्थिति में सुधार नहीं हुआ। सॉफ्टवेयर विकास में और देरी हुई। और कोई भी इसके बारे में कुछ भी नहीं कर सकता था, भले ही वे चाहते थे।"

"लेकिन क्यों?"

"ठीक है, सबसे पहले, नियोजन चरण के दौरान बहुत कम जानकारी होती है। शुरुआत में अक्सर, कोई भी उन समस्याओं की भविष्यवाणी नहीं कर सकता था जिनका प्रोग्रामर सामना करेंगे।"

"लेकिन अनुभवी प्रोग्रामर को सब कुछ देखने में सक्षम होना चाहिए, है ना?"

"क्या आप देख सकते हैं कि प्रोग्रामिंग एक अनूठा पेशा है।"

"एक साधारण कार्यकर्ता बार-बार एक ही काम करता है। चौकीदार घड़ियाँ बनाते हैं, खाना पकाते हैं, शिक्षक पढ़ाते हैं, डॉक्टर इलाज करते हैं, आदि।"

"इनमें से प्रत्येक पेशेवर मूल रूप से दिन और दिन एक ही काम करता है। नतीजतन, वे अपनी नौकरियों में बेहतर और बेहतर होने लगते हैं।"

"प्रोग्रामिंग में, दृष्टिकोण अलग है। जैसे ही एक प्रोग्रामर को हर दिन एक ही कार्य का सामना करना पड़ता है, वह इसे करने के लिए एक फ़ंक्शन, मॉड्यूल या प्रोग्राम लिखता है, और फिर कभी वापस नहीं आता है।"

"प्रत्येक प्रोग्रामर आमतौर पर अपने जीवनकाल में एक बार प्रत्येक कार्य को हल करता है।"

"वैज्ञानिकों या डिजाइन इंजीनियरों की तरह कुछ जो चीजों का आविष्कार करते हैं।"

"आह, एक परियोजना में सबसे महत्वपूर्ण भूमिका क्या है?"

"हम्म, मुझे इसका जवाब कैसे देना चाहिए। यह कहना आसान है कि कौन सा सबसे महत्वपूर्ण है, लेकिन सबसे कम महत्वपूर्ण की पहचान करना मुश्किल है।"

" एक परीक्षक ( क्यू क्वालिटी  एश्योरेंस, क्यूए ) का प्राथमिक काम  एक प्रोग्राम की स्थिति की निगरानी करना और तुरंत बग की रिपोर्ट करना है। एक परीक्षक जितनी जल्दी बग ढूंढता है, उतना ही अधिक उसे ठीक किया जा सकता है।  एक अच्छा परीक्षक उत्पाद की गुणवत्ता को प्रभावित करता है। एक अच्छा प्रोग्रामर करता है ।"

"प्रोग्रामर अपने प्रोग्राम का परीक्षण क्यों नहीं कर सकते। आखिरकार, क्या वे परीक्षकों से बेहतर नहीं जानते कि क्या काम करता है और क्या नहीं?"

"एक अच्छा प्रोग्रामर केवल एक अच्छा परीक्षक होने में असमर्थ है। एक प्रोग्रामर जानता है कि प्रोग्राम वास्तव में अच्छी तरह से कैसे काम करता है, इसलिए वह हमेशा इसे एक निश्चित तरीके से उपयोग करता है। सामान्य उपयोगकर्ताओं के विपरीत जो प्रोग्राम का उपयोग करते हैं, हालांकि वे चाहते हैं। "

"इसके अतिरिक्त, परीक्षक परीक्षण नहीं करते हैं जो अभी तक काम नहीं करता है। परीक्षक प्रोग्राम की कार्यक्षमता या भागों का परीक्षण करता है जो प्रोग्रामर कहता है कि पहले से ही लगभग पूरी तरह से काम कर रहा है।"

"और जब परीक्षक उस कार्यक्षमता में टन की बग पाता है, और प्रोग्रामर उन्हें ठीक करता है, तो उत्पाद वास्तव में पूर्णता के करीब हो जाता है।"

" एक प्रोग्रामर ( एस ऑफ़्टवेयर  डी डेवलपर  इंजीनियर,  डी डेवलपरएसडीई ) का प्राथमिक कार्य नई कार्यक्षमता को लागू करना है। या, अधिक सरल शब्दों में कहें, तो उसे सौंपे गए कार्यों को पूरा करना। जब प्रोग्रामर को नई सुविधाओं के साथ कार्य सौंपे जाते हैं। , वे उनका प्रदर्शन करते हैं। जब उन्हें बग सौंपे जाते हैं, तो वे बग ठीक कर देते हैं।"

"लेकिन कभी-कभी अधिक चुनौतीपूर्ण कार्य होते हैं, उदाहरण के लिए, कार्यक्रम या उसके कुछ हिस्सों के लिए आर्किटेक्चर के साथ आना। प्रस्तावित आर्किटेक्चर जितना बेहतर होगा, भविष्य में काम करना उतना ही आसान होगा।"

"समस्या यह है कि आर्किटेक्चर को शुरुआत में ही चुना जाना चाहिए, लेकिन यह तब तक नहीं है जब तक आप विकास के बीच में नहीं हैं कि यह स्पष्ट है कि आपने सही आर्किटेक्चर चुना है या नहीं।"

"इसके अतिरिक्त, यदि वास्तुकला सफल है और कार्यक्रम बहुत अच्छा निकला है, तो ग्राहक शायद इसे कार्यक्रम के नए संस्करणों के आधार के रूप में उपयोग करना चाहेंगे।"

"यहाँ मुझे क्या मिल रहा है।"

"आप जो भी आर्किटेक्चर चुनते हैं, वहां हमेशा बदलावों, परिवर्धन और नई सुविधाओं का एक समूह होगा, जो आर्किटेक्चर के लिए जिम्मेदार नहीं है।"

"यहाँ एक अच्छा उदाहरण है।"

"एक ग्राहक आपसे 5 मंजिला इमारत बनाने के लिए कहता है, तो आप एक वास्तुकला तैयार करते हैं और घर बनाते हैं।"

"फिर ग्राहक एक और कहानी जोड़ने के लिए कहता है, और फिर एक और, और इसी तरह।"

"लेकिन पहली मंजिल की दीवारें इतने वजन के लिए डिज़ाइन नहीं की गई थीं, और न ही नींव थी। इसलिए सब कुछ फिर से करना होगा।"

"लेकिन 5 मंजिला इमारत बनने के बाद, क्या होगा अगर ग्राहक तुरंत फैसला करता है कि वह 50 मंजिला इमारत चाहता है?"

"मौजूदा ढांचे को ध्वस्त करना और खरोंच से सब कुछ फिर से बनाना आसान होगा ..."

"लेकिन वास्तुकला के संबंध में मेरे पास आपके लिए एक सलाह है।"

"एक एप्लिकेशन की वास्तुकला, सबसे पहले और सबसे महत्वपूर्ण, लचीली होनी चाहिए, जिसका अर्थ है कि यदि आप एप्लिकेशन के आधे हिस्से को फिर से करने का निर्णय लेते हैं तो आपको स्क्रैच से शुरू नहीं करना पड़ेगा। इस प्रकार की वास्तुकला को आमतौर पर लचीला और मॉड्यूलर कहा जाता है "

" प्रोजेक्ट मैनेजर का प्राथमिक काम निर्णय लेना है। प्रोजेक्ट मैनेजर वह है जो बड़ी तस्वीर देखता है और उस परिप्रेक्ष्य के आधार पर निर्णय लेता है।"

"मान लीजिए कि विकास के दौरान यह स्पष्ट हो जाता है कि योजना के अनुसार एक निश्चित कार्य पूरा नहीं होगा। परियोजना प्रबंधक तब कर सकता है:"

" ए)  कार्य को संशोधित करने के लिए ग्राहक के साथ बातचीत करने का प्रयास करें"

" बी)  कार्य के लिए अधिक समय आवंटित करें"

" सी)  अन्य परियोजनाओं से अधिक अनुभवी प्रोग्रामर लाएं।"

"और कई अन्य संभावनाएं हैं।"

"प्रत्येक विकल्प के लिए आपको कुछ बलिदान करने की आवश्यकता होती है, और प्रबंधक का काम इन बलिदानों से होने वाले कुल नुकसान को कम करना है। "

"उदाहरण के लिए, मान लीजिए कि प्रतियोगी लीड प्रोग्रामर को दो बार ज्यादा पैसे देकर चोरी करते हैं।"

"परियोजना प्रबंधक कर सकते हैं:"

" ए)  कुछ नहीं करें। प्रोग्रामर छोड़ देगा, और परियोजना के पीछे गिरने और दंड लगने की संभावना है।"

" बी)  उसका वेतन दोगुना करें। फिर टीम के बाकी सभी लोग भी वृद्धि चाहेंगे। यदि आप उन सभी को अधिक पैसा देते हैं, तो परियोजना की लागत बढ़ जाएगी और यह लाभहीन हो सकती है।"

" सी)  कोई अन्य विकल्प जो आप सोचते हैं।"

"अच्छा ऐसा है।"

"एक खराब परियोजना प्रबंधक के साथ, एक अच्छी टीम आमतौर पर एक परियोजना को लंबा करती है, लेकिन हमेशा नहीं।"

"औसत प्रोग्रामर की एक टीम के साथ एक अच्छा प्रबंधक उत्कृष्ट प्रोग्रामर की टीम के साथ खराब प्रबंधक की तुलना में लगभग हमेशा एक परियोजना को तेजी से पूरा करेगा।"

"अच्छा ऐसा है।"

"ठीक है, चलो एक छोटा ब्रेक लेते हैं, और फिर हम जारी रखेंगे।"