जैसा कि कुछ 20 साल पहले पीपुलवेयर में डेमार्को और लिस्टर द्वारा कहा गया था, असफल सॉफ्टवेयर परियोजनाओं का अधिकांश हिस्सा तकनीकी चुनौतियों के कारण नहीं, बल्कि समाजशास्त्रीय समस्याओं के कारण विफल हो जाता है । यह पिछले दशकों में नहीं बदला है, चाहे हमारे टूल में कितना भी सुधार हुआ हो।
कुप्रबंधन, अवास्तविक अपेक्षाएँ, नौकरी के लिए सही लोगों को पाने में असफल होना, और / या उन्हें अपना काम नहीं करने देना, फलस्वरूप उन्हें रखने में असफल होना; कार्यस्थल और उपकरण जो SW विकास कार्य के लिए उपयुक्त नहीं हैं; व्यक्तिगत विवादों को दूर करना; राजनीति ; ये केवल कुछ विशिष्ट समस्याएं हैं जो शुरू से ही एक परियोजना को बर्बाद कर सकती हैं।
अच्छा कोड लिखना कठिन क्यों है?
मुझे यकीन नहीं है कि दशकों पहले की तुलना में अब अच्छा कोड लिखना वास्तव में कठिन है। वास्तव में, मशीन कोड या असेंबली की तुलना में, हमारे पास अब जो कुछ भी है वह मुख्यधारा में संभालना आसान है। बस हमें इसके अधिक उत्पादन की आवश्यकता हो सकती है।
क्या यह केवल उल्लेख कारकों, समय और जटिलता के कारण है?
हां, हमारे उपकरणों की शक्ति बढ़ने के साथ साध्य जटिलता निश्चित रूप से बढ़ी है (और बढ़ रही है)। दूसरे शब्दों में, हम सीमाओं को आगे बढ़ाते हैं। मेरे लिए जो अनुवाद करता है ताकि आज की सबसे बड़ी चुनौतियों को हल करना उतना ही कठिन हो जितना 30 साल पहले उस दिन की सबसे बड़ी चुनौतियों को हल करना था।
OTOH के बाद से क्षेत्र इतना बड़ा हो गया है, वहाँ और अधिक "छोटी" या "ज्ञात" समस्याएं हैं जो 30 साल पहले थी। ये समस्याएँ तकनीकी रूप से (होनी चाहिए) अब एक चुनौती नहीं हैं, लेकिन ... यहाँ उपरोक्त कहावत है :-(
इसके अलावा प्रोग्रामर की संख्या काफी बढ़ गई है। और कम से कम मेरी व्यक्तिगत धारणा यह है कि अनुभव और ज्ञान के औसत स्तर में गिरावट आई है, सिर्फ इसलिए कि क्षेत्र में लगातार अधिक जूनियर वहां आ रहे हैं, जहां वे वरिष्ठ हैं जो उन्हें शिक्षित कर सकते हैं।
क्या यह है कि कार्यप्रणाली सही तरीके से प्रचलित नहीं है?
IMHO निश्चित रूप से नहीं। डी-मार्को और लिस्टर में बड़े-एम तरीकों के बारे में कुछ कठोर शब्द हैं। वे कहते हैं कि कोई भी कार्यप्रणाली किसी परियोजना को सफल नहीं बना सकती - केवल टीम के लोग ही कर सकते हैं। OTOH की वे छोटे-छोटे तरीके हैं जिनकी हम प्रशंसा करते हैं जो अब हम "फुर्तीले" के रूप में जानते हैं, जो व्यापक रूप से फैल रहा है (एक अच्छे कारण के लिए IMHO)। यूनिट परीक्षण और रीफैक्टरिंग जैसी अच्छी प्रथाओं का उल्लेख नहीं करना चाहिए, जो कि केवल 10 साल पहले व्यापक रूप से ज्ञात नहीं थे, और आजकल भी कई स्नातक इनको जानते हैं।