जैसा कि लोग आमतौर पर इंगित करने के लिए बहुत जल्दी होते हैं, सॉफ़्टवेयर का एक लाभ यह है कि हार्डवेयर की तुलना में इसे बदलना आसान और अपेक्षाकृत सस्ता माना जाता है। यह विशेष रूप से महत्वपूर्ण है जब आपका देर से एहसास होता है कि आपको मौलिक रूप से कुछ गलत मिला है। हार्डवेयर के साथ भी ऐसा ही करें, और आप एक मिलियन डॉलर खो देते हैं, इसलिए जैसा कि आपने कहा है, आप अपने सिमुलेटर आदि का उपयोग करते हैं, और आप इसे से बाहर निकलने का परीक्षण करते हैं। मुझे लगता है कि जहां आप सॉफ्टवेयर में शिफ्ट होते हैं, वहां कुछ हद तक असफल हो जाता है।
औसत सॉफ़्टवेयर डेवलपर के सिर में जाओ, और आपके पास जो भी है वह एक अविश्वसनीय रूप से तंग समय सीमा के साथ बहुत व्यस्त व्यक्ति है। उनका प्रबंधक कह रहा है कि कुछ कीड़े छोड़ना ठीक है क्योंकि आप इसे बाद में ठीक कर सकते हैं। टेस्ट अक्सर एक बाद होते हैं, लेकिन एक परीक्षण-संचालित परिदृश्य में भी, परीक्षणों को न्यूनतम रखा जाता है और कोड को न्यूनतम परीक्षणों के लिए लिखा जाता है, और अक्सर शॉर्टकट लिए जाते हैं ताकि सीमा के कई मामलों को याद किया जा सके। इस प्रणाली का पूरी तरह से परीक्षण किया जा सकता है, फिर भी शायद ही कभी पूरी तरह से कठोरता से परीक्षण किया जाता है, और जैसा कि शायद ही कभी किसी भी महान डिग्री के लिए तनाव का परीक्षण किया जाता है। इसे इसमें जोड़ें कि आप खरोंच से सॉफ्टवेयर लिखते हैं, और सॉफ्टवेयर को लिखने से पहले उसे कम करने का अवसर कम है, मुख्य रूप से क्योंकि हम उसी तरह के ठीक-ठीक इमारत ब्लॉकों से सॉफ्टवेयर लिखते हैं जो आपको हार्डवेयर में मिलेगा।
वापस ओपी के सवाल पर। सकता है आप अपने सभी सॉफ़्टवेयर को प्राप्त करने के लिए ब्लॉक बनाने की एक प्रणाली को परिभाषित सकते हैं? संभवतः। क्या यह बहुत प्रभावी होगा? शायद नहीं, क्योंकि जब तक आप अपने आदर्श का समर्थन करने के लिए घटकों, परीक्षणों और अन्य पैराफर्नेलिया की एक मजबूत पर्याप्त प्रणाली विकसित करने के लिए चारों ओर हो जाते हैंप्रोग्रामिंग की प्रणाली, आप पाएंगे कि आपकी प्रतियोगिता ने आपको पहले ही बाजार में हरा दिया होगा, और इससे भी बदतर, औसत प्रोग्रामर के दृष्टिकोण से आपको शायद प्रोग्रामिंग सिस्टम की "कुकी-कटर" शैली बहुत सीमित और अधिक संभावना होगी। उबाऊ। मैं व्यक्तिगत रूप से एक एपीआई पर काम करता हूं, जहां मॉड्यूल कोड के थोक को परिष्कृत और पूरी तरह से मानकीकृत किया गया है, जो अब मैं करता हूं कि एक कोड टेम्पलेट उत्पन्न होता है और रिक्त स्थान को भरता है। मेरा ज्यादातर समय साधारण कनेक्टर कोड लिखने में खर्च हो सकता है, और जितनी जल्दी हो सके दरवाजे के बाहर मॉड्यूल प्राप्त करना। यह गंभीर रूप से दिमाग सुन्न है। एक ही तरह की चीजों को बार-बार कोड करने से बहुत कम अवसर होता है, इसलिए जब एक और परियोजना का अवसर आता है, तो मैं किसी और चीज को करने में सक्षम होने का मौका देता हूं।
तो आप उच्च गुणवत्ता और अच्छी तरह से तथ्यात्मक सॉफ्टवेयर देने के लिए कैसे प्राप्त कर सकते हैं, और फिर भी वास्तव में इसे करने का आनंद लें? मेरा मानना है कि यह आपकी पसंद के उपकरण और कार्यप्रणाली के लिए नीचे आता है। मेरे लिए उत्तर एक अच्छा बीडीडी एपीआई के उपयोग को नियोजित करने के लिए है, क्योंकि इसने मुझे पढ़ने में बहुत आसान बनाने की अनुमति दी है, फिर भी अत्यधिक दानेदार कोड। मैं कम से कम पुन: प्रयोज्य विधियों में से परीक्षणों का एक सूट बना सकता हूं, और विनिर्देशों की भाषा में अपने परीक्षणों का वर्णन कर सकता हूं। इस तरह, मैं एक अधिक घटक-ized विकास दृष्टिकोण के करीब आता हूं, इस तथ्य को छोड़कर कि मैं बिल्डिंग ब्लॉकों को डिजाइन करने और जांचने के लिए जिम्मेदार हूं। इसके अतिरिक्त, परीक्षण आउटपुट परीक्षण के सटीक भाग को इंगित करता है जहां विफलता होती है, ताकि मुझे यह अनुमान न लगाना पड़े कि क्या विफलताएं सेटअप में हैं या अभिकथन।
आपकी कार्यप्रणाली को ट्यून करने से भी मदद मिलती है। मैं दुबला विकास प्रधानों को लागू करने के लिए एक बड़ा वकील हूं, और उन्हें कई अन्य तकनीकों और प्रिंसिपलों के साथ जोड़ रहा हूं जो कि अब से कई वर्षों से चुस्त-दुरुस्त आंदोलन कर रहे हैं। अधिकांश व्यर्थ प्रथाओं को समाप्त करने से जो मुझे बहुत निराशा होती थी, ने विकास को अधिक सुखद गतिविधि बनाने में बहुत मदद की है। मैं अभी भी इस मुद्दे को छोड़ रहा हूं कि कभी-कभी - लेकिन उम्मीद है कि बहुत बार नहीं - कीड़े मेरे कोड में दिखाई देंगे, हालांकि अब मैं खुद को और अधिक समय के साथ पाता हूं, और अधिक मजबूत परीक्षण लिखने के लिए और अधिक समय बिताने के लिए और भी प्रोत्साहन, और 100 के लिए लक्ष्य कर रहा हूं % परीक्षण कवरेज। इससे भी बेहतर यह है कि मेरे दिन के अंत में उन सभी हरी बत्तियों को देखना बहुत अच्छा लगता है,