"तो, मैं आपको Agile और Scrum के बारे में बताना चाहता हूँ ।"
"21 वीं सदी की शुरुआत में, जिस तरह से लोगों ने प्रोग्रामिंग के बारे में सोचा था वह उल्टा हो गया था।"
"हर कोई आश्वस्त था कि दीर्घकालिक योजना काम नहीं कर रही थी, इसलिए उन्होंने इसे पूरी तरह छोड़ने का फैसला किया।"
"उन्होंने ऐसा कैसे किया?"
"ऐसे।"
"उन्होंने संभव सबसे लचीली परियोजना प्रबंधन दृष्टिकोण का आविष्कार किया।"
फुर्तीले विकास के पीछे मुख्य विचार इस प्रकार हैं :"
- प्रक्रियाओं और उपकरणों की तुलना में लोग और संचार अधिक महत्वपूर्ण हैं;
- संपूर्ण दस्तावेज़ीकरण की तुलना में एक कार्यशील उत्पाद अधिक महत्वपूर्ण है;
- अनुबंध की शर्तों को पूरा करने की तुलना में ग्राहक के साथ सहयोग करना अधिक महत्वपूर्ण है;
- बदलने की इच्छा मूल योजना पर टिके रहने से कहीं अधिक महत्वपूर्ण है।
यहाँ तीव्र विकास के सिद्धांत हैं:
- शुरुआती और लगातार मूल्यवान सॉफ़्टवेयर की आपूर्ति करके ग्राहक को संतुष्ट करें;
- विकास के अंत में भी आवश्यकताओं में परिवर्तन का स्वागत करें (इससे अंतिम उत्पाद की प्रतिस्पर्धात्मकता बढ़ सकती है);
- काम करने वाले सॉफ़्टवेयर को बार-बार वितरित करें (हर महीने या सप्ताह या अधिक बार);
- संपूर्ण परियोजना के दौरान ग्राहक और विकासकर्ताओं के बीच घनिष्ठ दैनिक संचार;
- परियोजना पर प्रेरित व्यक्तियों द्वारा काम किया जाता है जिन्हें आवश्यक कार्य परिस्थितियों, समर्थन और विश्वास के साथ प्रदान किया जाता है;
- सूचना संप्रेषित करने के लिए पसंदीदा तरीका एक व्यक्तिगत (आमने-सामने) बातचीत है;
- काम करने वाला सॉफ्टवेयर प्रगति का सबसे अच्छा उपाय है;
- प्रायोजकों, विकासकर्ताओं और उपयोगकर्ताओं को अनिश्चित काल के लिए निरंतर गति बनाए रखने में सक्षम होना चाहिए;
- तकनीकी उत्कृष्टता और उपयोगकर्ता के अनुकूल डिजाइन में सुधार पर निरंतर ध्यान;
- सादगी फालतू काम न करने की कला है;
- सर्वोत्तम तकनीकी आवश्यकताएं, डिजाइन और वास्तुकला एक स्व-संगठित टीम से आती हैं;
- बदलती परिस्थितियों के लिए निरंतर अनुकूलन।
"सॉफ्टवेयर विकास के साथ मुख्य समस्या यह थी कि किसी भी स्तर पर प्रतिभागियों में से किसी को भी पूरी जानकारी नहीं थी कि क्या करना है।"
"ग्राहक आपको बता सकता है कि वह कार्यक्रम की कल्पना कैसे करता है, लेकिन वह कुछ छोड़ देगा या कुछ मान लेगा।"
"प्रबंधक को आम तौर पर प्रोग्रामिंग शब्दजाल से लेकर ग्राहक की भाषा तक और फिर से आवश्यकताओं का अनुवाद करना पड़ता है।"
"बहुत अधिक अनिश्चितता है।"
"अक्सर ग्राहक की आवश्यकताएं इस तरह होती हैं: इसे किसी तरह से करें, फिर मुझे दिखाएं - अगर मुझे यह पसंद नहीं है, तो आप इसे फिर से कर सकते हैं।"
"उह ... यह भयानक है।"
"नए प्रतिमान के अनुसार, प्रोग्रामर अब कोई उत्पाद या प्रोग्राम विकसित नहीं कर रहे हैं। इसके बजाय, वे उस कार्यक्षमता को लागू कर रहे हैं जिसकी ग्राहक को आवश्यकता है।"
"क्या फर्क पड़ता है?"
"ठीक है, मान लीजिए कि उस कार्यक्रम के विकास में एक साल लग जाता था। और कुछ देखने के लिए छह महीने बीत जाते थे। यह एक बड़े घर के निर्माण की तरह है: पहले, आप नींव के लिए एक गड्ढा खोदते हैं, फिर नींव डालते हैं, दीवारों, छत, ट्रिम आदि का निर्माण करें।"
"लेकिन अब प्रोग्रामर जितनी जल्दी हो सके आवश्यक कार्यक्षमता जारी करने की कोशिश करते हैं। यह पहले एक झोपड़ी, फिर एक मोबाइल घर, फिर एक छोटा घर, और उसके बाद ही एक बड़ा घर - किस्तों द्वारा बनाने जैसा होगा।"
"यह देखते हुए कि ग्राहक को वास्तव में पता नहीं है कि वह क्या चाहता है, तो यह एक बहुत ही उचित दृष्टिकोण है।"
"मान लीजिए कि ग्राहक एक बड़ा शिकार लॉज चाहता है।"
"डेवलपर्स ने उसे एक छोटा घर बनाया है। वह सर्दियों के लिए उसमें रहता है। फिर वह फैसला करता है कि उसे लकड़ी के घर पसंद नहीं हैं। चलो एक ईंट बनाते हैं।"
"वह गर्मियों के लिए झील के पास रहता है, लेकिन मच्छर उसे जिंदा खा जाते हैं। उसने कहीं सुना था कि झीलें ठंडी होती हैं, और इसलिए उसे एक होने का शौक था। लेकिन अब उसे झील नहीं चाहिए। और इसे बनाना आसान हो जाएगा।" घर इस तरह: झील नहीं होने का मतलब बाढ़ का कोई खतरा नहीं है, और आप घर को स्टिल्ट्स के बजाय जमीन पर बना सकते हैं, जो 25% तेज होगा।"
"एक दिलचस्प सादृश्य। क्या ग्राहक वास्तव में अपनी आवश्यकताओं को अक्सर बदलते हैं?"
"हाँ, लेकिन समस्या ग्राहक नहीं है।"
"सबसे पहले, यह कल्पना करना बहुत मुश्किल है कि भविष्य में चीजें कैसे बदल जाएंगी। प्रबंधक, परीक्षक और प्रोग्रामर सभी ऐसा करते हैं। वे यह भी देखते हैं कि चीजें कैसे चलती हैं, इसके आधार पर वे अपना दिमाग बदलते हैं।"
"दूसरा, क्या ग्राहक की आवश्यकताएं नहीं हैं जो सबसे ज्यादा मायने रखती हैं? आखिरकार , इस सारे काम का बिंदु यह है कि ग्राहक को क्या चाहिए , न कि वह जो उसने शुरू में बनाने के लिए कहा था ।"
"वास्तव में, यह इस तरह काम करता था: व्यापार विश्लेषक सभी आवश्यकताओं की एक सूची बनाते थे। वे इस सूची को एक अनुबंध में शामिल करते थे, उस पर हस्ताक्षर करते थे, और सूची के अनुसार ही काम करते थे।"
"अगर सूची में कुछ ऐसा नहीं था जिसकी ग्राहक को वास्तव में जरूरत थी लेकिन वह भूल गया था, तो कोई भी इसके बारे में कुछ नहीं करेगा।"
"मैं देख रहा हूँ। एक योजना का पालन करना आसान है, लेकिन एक योजना के अनुसार सब कुछ नहीं किया जा सकता है!"
"बिल्कुल।"
"यही कारण है कि फुर्तीली विकास विधियों का आविष्कार किया गया था।"
"और आज मैं आपको स्क्रम के बारे में बताने जा रहा हूँ - उनमें से सबसे लोकप्रिय।
"स्क्रम की प्राथमिक विशेषता परियोजना के विकास को छोटे पुनरावृत्तियों में विभाजित करना है - आमतौर पर 2-4 सप्ताह लंबा। प्रत्येक पुनरावृत्ति को स्प्रिंट कहा जाता है।"
"स्प्रिंट की शुरुआत में, स्प्रिंट प्लानिंग मीटिंग आयोजित की जाती है। यह 3-4 घंटे तक चलती है।"
"अंत में, सभी पूर्ण पूर्ण कार्यों का प्रदर्शन होता है।"
"यहां बताया गया है कि आमतौर पर सब कुछ कैसे काम करता है:"
"पहले स्प्रिंट से पहले, ग्राहक (या ग्राहक का प्रतिनिधि) आवश्यकताओं की एक सूची बनाता है, यानी उन चीजों का सेट जो प्रोग्राम को करने में सक्षम होना चाहिए। इन आवश्यकताओं को आमतौर पर उपयोगकर्ता कहानियां कहा जाता है, और ग्राहक आमतौर पर उत्पाद के मालिक को बुलाया ।"
"उसे उत्पाद स्वामी कहा जाता है, क्योंकि उत्पाद उसके लिए लिखा गया है। वह, और वह अकेला ही, आवश्यकताओं की सूची को परिभाषित करता है — क्या, कब और किस क्रम में।"
"इसके अतिरिक्त, उत्पाद स्वामी आमतौर पर कार्य प्राथमिकताओं को निर्दिष्ट करता है। सर्वोच्च प्राथमिकता वाले कार्यों को पहले लागू किया जाएगा। आवश्यकताओं की पूरी सूची को उत्पाद बैकलॉग भी कहा जाता है ।"
"जब एक स्प्रिंट शुरू होता है, तो हर कोई मीटिंग के लिए इकट्ठा होता है। स्क्रम मास्टर , आम तौर पर टीम का सदस्य होता है, आमतौर पर मीटिंग का नेतृत्व करता है। मीटिंग का लक्ष्य वर्तमान स्प्रिंट (विकास की पुनरावृत्ति) के लिए कार्यों ( उपयोगकर्ता कहानी ) का चयन करना है। "
"सबसे पहले, टीम प्रत्येक कार्य को अमूर्त मानव-दिनों में एक मोटा अनुमान देती है, जिसे कहानी बिंदुओं के रूप में भी जाना जाता है। फिर टीम यह तय करती है कि स्प्रिंट के दौरान उनके पास कितने कार्य पूरे करने का समय होगा।"
"फिर से, यह टीम ही है जो यह तय करती है कि स्प्रिंट के दौरान उनके पास कितने कार्य पूरे करने का समय होगा।"
"मान लें कि उत्पाद स्वामी ने टीम से पहले 7 कार्यों का चयन करने की अपेक्षा की थी, लेकिन उसने केवल 5 का चयन किया, फिर कार्य 6 और 7 को अगले स्प्रिंट के लिए स्थगित कर दिया गया। यदि वह उत्पाद स्वामी के अनुरूप नहीं है, तो वह कार्यों की प्राथमिकता बढ़ा सकता है 6 और 7 यह सुनिश्चित करने के लिए कि वे चुने गए हैं, लेकिन फिर कुछ अन्य कार्य स्प्रिंट से बाहर हो जाएंगे।"
" स्क्रैम मास्टर कुछ कार्यों को छोटे कार्यों में तोड़ने का प्रस्ताव भी दे सकता है और उत्पाद के मालिक को यथासंभव खुश करने के लिए उनके लिए अलग-अलग प्राथमिकताएं निर्धारित कर सकता है।"
"बैठक का यही बिंदु है: कार्यों को बदला जा सकता है और विभाजित किया जा सकता है, प्राथमिकताओं को बदला जा सकता है, आदि। यह वह कार्य है जो शुरुआत में दिखाई नहीं देता था, लेकिन जो बहुत अधिक मूल्य लाता है।"
"समझ गया। यह एक कार चलाने जैसा है। यहां तक कि अगर आपको शुरू में लगता है कि आपको बस सीधे जाने की जरूरत है, तो वास्तविकता यह है कि आपको लगातार गड्ढों से बचने, दाएं और बाएं चलाने और दूसरों को पास करने या उन्हें अपने पास जाने देने की जरूरत है।"
"हाँ कुछ इस तरह से।"
"स्प्रिंट के लिए चुने गए कार्यों की सूची को स्प्रिंट बैकलॉग कहा जाता है ।"
"प्रोग्रामर तय करते हैं कि कौन क्या करेगा, और उसके बाद ही वे काम पर लग जाते हैं।" दक्षता में सुधार करने के लिए, स्क्रम का सुझाव है कि हर दिन 5-15 मिनट की बैठक आयोजित की जाए, जहाँ हर कोई एक दूसरे को बता सके कि उन्होंने कल क्या किया और वे क्या कर रहे हैं। आज करने जा रहा हूँ।"
"टीम वर्क। मैं इसका सम्मान कर सकता हूं!"
"चीजों को कल्पना करना आसान बनाने के लिए, आमतौर पर एक विशेष बोर्ड पर वर्तमान स्प्रिंट स्थिति प्रदर्शित करने की अनुशंसा की जाती है:"
"बाईं ओर के तीन स्तंभों पर ध्यान दें।"
"संक्षिप्त कार्य नाम स्टिकी नोट्स पर लिखे गए हैं। और स्टिकी नोट्स को उनकी स्थिति (योजनाबद्ध, प्रगति पर, पूर्ण) के आधार पर अलग-अलग कॉलम में रखा गया है।"
"दाईं ओर, आप एक बर्नडाउन चार्ट देख सकते हैं। प्रत्येक दिन के लिए, यह चार्ट उन कार्यों को सूचीबद्ध करता है जो अभी भी पूर्ववत हैं। आदर्श रूप से, अधूरे कार्यों की संख्या स्प्रिंट के दौरान शून्य हो जाती है।"
"जब स्प्रिंट खत्म हो जाता है, तो स्क्रम-मास्टर पूरी तरह समाप्त हो चुके सभी चीजों की सूची दिखाने के लिए एक डेमो देता है।"
"फिर वह स्प्रिंट पूर्वव्यापी बैठक आयोजित करता है, जो कुछ घंटों तक चलती है। इस बैठक के दौरान, प्रतिभागी आमतौर पर यह पता लगाने की कोशिश करते हैं कि क्या अच्छा हुआ और क्या (और कैसे) चीजें बेहतर हो सकती थीं।"
"आमतौर पर 2-3 स्प्रिंट के बाद, आप टीम को अधिक कुशलता से काम करने से रोकने वाली मुख्य समस्याओं की पहचान कर सकते हैं और उन्हें समाप्त कर सकते हैं। इससे टीम के वर्कलोड को बढ़ाए बिना अधिक उत्पादकता मिलती है। चुस्त पद्धतियों के युग से पहले यह संभव नहीं था। "
"कभी-कभी स्प्रिंट के दौरान एक ग्रूमिंग मीटिंग भी आयोजित की जाती है। इसका उद्देश्य अगले स्प्रिंट की योजना बनाना है। प्रतिभागी आमतौर पर इस मीटिंग में कार्य प्राथमिकताओं को स्पष्ट करते हैं। वे कुछ कार्यों को भागों में विभाजित कर सकते हैं और/या उत्पाद बैकलॉग में नए कार्य जोड़ सकते हैं । "
"ठीक है, मूल रूप से मेरे पास बस इतना ही है। यह सिर्फ एक सिंहावलोकन है। इसे केवल कुछ शब्दों में समझाना असंभव है, लेकिन आप इस विषय पर एक अच्छा लेख यहां पढ़ सकते हैं:"
GO TO FULL VERSION