चंचल कार्यप्रणाली: जल्दी और गंदी या योजना पहले?


10

चुस्त सवाल: क्या फुर्तीली चीजों को "जल्दी और गंदे तरीके" से चलाने में विश्वास करती है - या फुर्तीली जमीन से ठोस रूप से निर्माण करना पसंद करती है? या यह एक कार्यप्रणाली का सवाल नहीं है, और इससे अधिक सवाल यह है कि आप मामले के मामले का मूल्यांकन करते हैं?

मैं तकनीकी रूप से "रीमेकिंग" प्रणाली की नींव रखता हूं, क्योंकि मैंने पहले से ही बहुत सारी संरचना का निर्माण किया है ... यह काम की एक बड़ी मात्रा में नहीं है ... फुर्तीला मुझे पहले पूरे प्रवाह को निर्दिष्ट करना चाहता था, इसका विश्लेषण करता हूं, " यह tweak, और फिर निर्माण? मुझे लगता है कि एक तरह से यह इस तरह से बेहतर है ... एक बार जब मैं एक गन्दा सिस्टम लगाता हूं तो मुझे बेहतर होता है कि इसे कैसे किया जाना चाहिए ... दूसरी तरफ यह इतना संगठित नहीं है ... बस उत्सुक है कि सबसे अच्छा विकास क्या है अभ्यास इस संबंध में है।

मेरा मानना ​​है कि यह सवाल फुर्तीले और प्रोटिपिंग से कुछ अलग है क्योंकि मैं प्रोटोटाइप और थ्रोअवे कोड के बारे में नहीं पूछ रहा हूं; मैं प्रोडक्शन-ग्रेड कोड के लिए फुर्तीली हूं।




7
मैंने बहुत बार देखा है कि प्रबंधक एक 'पारंपरिक' प्रोजेक्ट प्लान पर सभी परीक्षण और नियोजन समय को देखते हैं, और पूछते हैं कि "क्या हम सभी को काट नहीं सकते हैं और इसके बजाय एजाइल का उपयोग कर सकते हैं" ... जो एक विस्तृत बिंदु को याद करता है। मार्जिन।
जेफुक

1
यह मदद कर सकता है। i.redd.it/bxsitfsewho01.png
JeffUK

जवाबों:


46

चुस्त कार्यप्रणाली पहले योजना है। यह सब कुछ पहले की योजना नहीं है। वास्तव में आप आवश्यकताओं, डिजाइन, कोड, परीक्षण, तैनाती और वर्तमान को इकट्ठा करते हैं। आप सबसे कम सुविधा में एक पखवाड़े (दे या ले) से कम में वह सब कर सकते हैं, जिसके बारे में आप तैनात कर सकते हैं और प्रतिक्रिया प्राप्त कर सकते हैं। तो फिर तुम यह सब फिर से एक और सुविधा जोड़ने या एक पुराने एक tweaking करते हैं।

कुंजी कोड लिखना है जो परिवर्तन को स्वीकार करता है ताकि जब आप अंत में "कैसे पूरे प्रवाह को देख सकें" तो आप ऐसा करने के लिए कोड को बदल सकते हैं। इस तरह जब "जिस तरह से प्रवाह को जाना चाहिए" (या जो कुछ भी) फिर से बदलता है, वह दर्दनाक नहीं है।

आप जल्दी और गंदा नहीं लिख सकते। क्विक और डर्टी आपको रेकगिड कोड देता है। छोटे काम करके उपवास करें। ज्ञान का प्रसार न करके लचीले बने रहें । आदर्श रूप से किसी भी एकल सुविधा परिवर्तन को कोड में केवल एक ही स्थान पर प्रभावित करना चाहिए।

आप कुछ भी करने के अलावा कुछ भी नहीं कर सकते हैं। आप योजना बना सकते हैं लेकिन आपको योजना को बदलने में सक्षम होना चाहिए। योजना को बदलने के लिए आपको जल्दी से कारणों की खोज करने की आवश्यकता है। जब योजना सुचारू रूप से चल रही होती है, तो इससे कोई आश्चर्य की बात नहीं है, वह यह है कि योजना बहुत लंबे समय तक चली है। योजना और कोडिंग को एक दूसरे के करीब होना चाहिए। यदि आप सीख रहे हैं, तो पुरानी योजना, यह कितना कठिन है।

लॉन्ग टर्म में, आपको होशियार होने की योजना बनानी चाहिए। लचीला कोड लिखें। फिर होशियार होने से पछतावा नहीं होता।


1
+1, लेकिन मैं विशेष ध्यान देना चाहता हूं कि "लचीला" का अर्थ "अधिक सार" नहीं है। तरीके लचीलापन बढ़ाने के लिए में से एक यकीन है कि कोड है बनाने के लिए है सुलभ (पठनीय, सरल समझने के लिए)।
jpmc26

1
नहीं, आधुनिक "ढोंग फुर्तीली" तरीका सभी नियोजन के बारे में है। असली फुर्तीली जल्दी और गंदे और निरंतर चलना और सुधार के बारे में है। आप कुछ के साथ शुरू करते हैं जो (ईश) काम करता है और फिर इसे बेहतर बनाने के लिए पुनरावृति करता है। फुर्तीली योजना की तरह आप "बहुत सारे झरने" कहने का एक तरीका है।
gbjbaanb

5
+1 फुर्तीला बस लेखन को जिम्मेदार और लचीला कोड महसूस करने के लिए पर्याप्त योजना बनाने के बारे में है । किसी भी अधिक संसाधनों की बर्बादी है। यह "नो प्लानिंग" नहीं है, और यह "सब कुछ" प्लान नहीं है, लेकिन कहीं बीच में है।
एरिक किंग

23

मुझे पसंद है कि ज्यादातर लोगों के लिए यह या तो "त्वरित और गंदे" या "बड़े डिजाइन सामने" है। वे यह भी नहीं मानते कि अन्य विकल्प हैं।

चंचल एक प्रणाली के निर्माण के बारे में है, जहां परिवर्तन, यहां तक ​​कि विकास में देर हो चुकी है, तुच्छ है। यह छोटे, वृद्धिशील विखंडू में सॉफ्टवेयर के निर्माण और मजबूत स्वचालित परीक्षणों के साथ उन विखंडू के व्यवहार को बंद करके किया जाता है। और उन परिवर्तनों के मूल्य को मान्य करने के लिए उत्पादन में लगातार, स्वचालित तैनाती का उपयोग करना।

मजबूत स्वचालित परीक्षण होने से, यह वास्तुकला के सबसे कठिन हिस्सों को बदलने के लिए भी तुच्छ हो जाता है, समय की लंबी अवधि के लिए वृद्धिशील refactoring द्वारा। इसलिए, भले ही आपको एहसास हो कि परियोजना के माध्यम से आपके आर्किटेक्चर को बेहतर तरीके से आधा किया जा सकता है, परिवर्तन को अपेक्षाकृत जल्दी करना वास्तविक रूप से संभव है।

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

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


6

न तो।

जब आप साथ चलते हैं तो यह "सरल शुरू करें और सुधारें"।

त्वरित और गंदा भंगुर है, लेकिन तेजी से (यदि परियोजना पर्याप्त रूप से छोटी और छोटी रहती है)।

पहले योजना कठोर है, लेकिन स्थिर है (यदि वित्तीय या अस्थायी बाधाओं में चलने से पहले परियोजना पूरी हो जाती है)।

चंचल ऊपर 2 के लिए एक विकल्प है। यह एक पुनरावृत्त दृष्टिकोण पर निर्भर करता है, जहां सुविधाओं को एक समय में पूरा किया जाता है, सुविधा द्वारा फीचर किया जाता है, और कार्यक्रम के इन पूरी तरह कार्यात्मक टुकड़ों को पूरा करते समय प्राप्त ज्ञान का उपयोग विकास के विकास के रूप में योजना को समायोजित करने और समायोजित करने के लिए किया जाता है। ऐसा करने के लिए सामने वाले को कुछ प्लानिंग की आवश्यकता होती है - आपको यह अनुमान लगाने में कम से कम पर्याप्त प्लानिंग की आवश्यकता होती है कि व्यक्तिगत विशेषताओं को कितने काम करने की आवश्यकता है - लेकिन चूँकि चंचलता में बदलाव की उम्मीद है, अत्यधिक प्लानिंग बेकार हो जाती है।


2

एजाइल की मुख्य विशेषताओं में से एक लघु पुनरावृत्तियों को करना है और फिर आश्वस्त करना है। आप नए क्षेत्र का पता लगाने के लिए आगे बढ़ते हैं, उससे सीखते हैं, और फिर एक योजना बनाते हैं। इस तरह आपकी योजना बेहतर होगी। और यदि आप असफल हो जाते हैं (अपना पाठ्यक्रम विचार काम नहीं करता है), तो आपके पास "तेजी से असफल" होगा, जो अच्छा है।

तो आपका दृष्टिकोण ठीक है। हालांकि खतरा यह है कि "नाइस, यह काम करता है, मैं कर रहा हूँ। आगे क्या है?" आप नहीं कर रहे हैं, वहाँ बहुत सारे कोनों को सीधा करने के लिए काट दिया गया है और आपको इसे ठीक से करने के लिए समय लेना चाहिए / एक बार यह स्पष्ट हो जाता है कि आपका दृष्टिकोण एक कार्यशील और व्यावहारिक प्रणाली पैदा करता है। यह परीक्षण, दस्तावेज़, स्टाइलकॉप, अनुकूलन, आपके द्वारा किए गए और आपने इसे कैसे किया, इस बारे में शिक्षित करने, समीक्षा करने, आदि की समीक्षा करने के लिए हो सकता है।


1

उपरोक्त उत्तरों को जोड़ने के लिए, एक प्रमुख सिद्धांत YAGNI है । यदि आपका अप-फ्रंट डिज़ाइन और नियोजन अगले चरण को सक्षम करता है, तो ठीक है। लेकिन अगर यह एक काल्पनिक भविष्य के कदम को सक्षम करता है जिसे आप साबित नहीं कर सकते हैं , तो YAGNI मान लें।

बहुत डिजाइन, दोनों ऊपर-नीचे और नीचे-ऊपर, मानता है कि महत्वपूर्ण कोड का पुन: उपयोग होगा। अनुभव कहता है कि कोड का पुन: उपयोग बस इतना सामान्य नहीं है, क्योंकि आप शायद ही कभी एक ही समस्या को हल कर रहे हैं। यदि आपको भविष्य में उस समस्या के एक प्रकार को हल करने की आवश्यकता है, तो भविष्य में उस संस्करण को जोड़ने के लिए अपने डिज़ाइन को फिर से फ़िल्टर करें, लेकिन अभी इस पर विचार न करें

दूसरे शब्दों में, तत्काल कार्य के लिए योजना बनाएं, लेकिन आगे की किसी भी चीज़ की योजना न बनाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.