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