स्टैकऑवरफ्लो और प्रोग्रामर एसई पर एक सॉफ्टवेयर आर्किटेक्ट (एसए) की भूमिका के बारे में अच्छे जवाब के साथ कई सवाल किए गए हैं । मैं उन लोगों की तुलना में थोड़ा अधिक केंद्रित सवाल पूछने की कोशिश कर रहा हूं। SA की परिभाषा बहुत व्यापक है, इसलिए इस प्रश्न के लिए SA को परिभाषित करें:
एक सॉफ्टवेयर आर्किटेक्ट एक परियोजना के समग्र डिजाइन का मार्गदर्शन करता है, कोडिंग प्रयासों के साथ शामिल होता है, कोड समीक्षा करता है, और उपयोग की जाने वाली तकनीकों का चयन करता है।
दूसरे शब्दों में, मैं SAs के शिखा (आगे तुकबंद शब्द) के प्रकार पर प्रबंधकीय आराम और बनियान के बारे में बात नहीं कर रहा हूं। अगर मैं किसी भी प्रकार की SA स्थिति का पीछा करता तो मैं कोडिंग से दूर नहीं होना चाहता। मैं ग्राहकों और व्यावसायिक विश्लेषकों आदि के साथ इंटरफ़ेस करने के लिए कुछ समय का बलिदान कर सकता हूं, लेकिन मैं अभी भी तकनीकी रूप से शामिल हूं और मुझे बैठकों के माध्यम से क्या हो रहा है, इसके बारे में पता नहीं है।
इन बिंदुओं को ध्यान में रखते हुए, SA को तालिका में क्या लाना चाहिए? क्या उन्हें "कानून को खत्म करने" (इसलिए बोलने के लिए) और "अपना रास्ता" फिट करने के लिए कुछ साधनों के उपयोग को लागू करने की मानसिकता के साथ आना चाहिए, यानी, दिशानिर्देशों, स्रोत नियंत्रण, पैटर्न, यूएमएल प्रलेखन, आदि को कोड करना? या फिर उन्हें प्रारंभिक दिशा और रणनीति को निर्दिष्ट करना चाहिए और फिर जहाज की दिशा को सही करने के लिए आवश्यकतानुसार वापस कूदना चाहिए?
संगठन के आधार पर यह काम नहीं कर सकता है। एक SA जो TFS पर निर्भर करता है वह सब कुछ लागू करने के लिए एक नियोक्ता पर अपनी योजना को लागू करने के लिए संघर्ष कर सकता है जो केवल StarTeam का उपयोग करता है। इसी तरह, एसए को परियोजना के चरण के आधार पर लचीला होना चाहिए। यदि यह एक नई परियोजना है, तो उनके पास अधिक विकल्प हैं, जबकि वे मौजूदा परियोजनाओं के लिए कम हो सकते हैं।
यहाँ कुछ SA कहानियाँ दी गई हैं, जिन्हें मैंने उम्मीद में कुछ पृष्ठभूमि साझा करने के तरीके के रूप में अनुभव किया है, जो मेरे सवालों के जवाब भी इन मुद्दों पर कुछ प्रकाश डाल सकते हैं:
मैंने एक SA के साथ काम किया है, जिसने कोड को टीम के कोड की हर एक पंक्ति की समीक्षा की। एसए केवल हमारी परियोजना के लिए नहीं बल्कि संगठन में अन्य परियोजनाओं के लिए ऐसा करेगा (इस पर खर्च किए गए समय की कल्पना करें)। पहले यह कुछ मानकों को लागू करने के लिए उपयोगी था, लेकिन बाद में यह अपंग हो गया। FxCop यह था कि SA मुद्दों को कैसे खोजेगा। मुझे गलत मत समझो, यह जूनियर डेवलपर्स को पढ़ाने और उन्हें अपने चुने हुए दृष्टिकोण के परिणामों के बारे में सोचने के लिए मजबूर करने का एक अच्छा तरीका था, लेकिन वरिष्ठ डेवलपर्स के लिए इसे कुछ हद तक गंभीर माना जाता था।
एक विशेष एसए एक निश्चित पुस्तकालय के उपयोग के खिलाफ था, यह दावा करते हुए कि यह धीमा था। इसने हमें कई चीजों को प्राप्त करने के लिए टन के कोड को लिखने के लिए मजबूर किया जबकि अन्य पुस्तकालय ने हमें बहुत समय बचाया होगा। परियोजना के अंतिम महीने के लिए तेजी से आगे और ग्राहकों को प्रदर्शन के बारे में शिकायत थी। एकमात्र उपाय यह था कि देवों से प्रारंभिक चेतावनी के बावजूद मूल रूप से उपेक्षित दृष्टिकोण का उपयोग करने के लिए कुछ कार्यक्षमता को बदलना। उस समय तक कोड का एक बहुत फेंक दिया गया था और पुन: प्रयोज्य नहीं था, जिससे ओवरटाइम और तनाव हो गया। अफसोस की बात है कि परियोजना के लिए इस्तेमाल किए जाने वाले अनुमान पुराने दृष्टिकोण पर आधारित थे, जो मेरी परियोजना का उपयोग करने से मना किया गया था, इसलिए यह अनुमान के लिए एक उपयुक्त संकेतक नहीं था। मैं पीएम को यह कहते सुनूंगा "हमने पहले भी ऐसा किया है,"
एसए जो सभी परियोजनाओं के लिए डीटीओ, डीओ, बीओ, सेवा परतों और इतने पर उपयोग को लागू करेगा। नए देवों को इस वास्तुकला और एसए को दृढ़ता से लागू किए गए दिशानिर्देशों को सीखना था। उपयोग दिशानिर्देशों के अपवाद तब बनाए गए थे जब दिशानिर्देशों का पालन करना बिल्कुल कठिन था। एसए उनके दृष्टिकोण में आधारित था। डीटीओ और सभी सीआरयूडी संचालन के लिए कक्षाएं कोडस्मिथ के माध्यम से उत्पन्न की गईं और डेटाबेस स्कीमा मोम की एक और समान गेंद थी। हालाँकि, इस सेटअप का उपयोग हर जगह होने के बाद, SA, LINQ to SQL या Entity फ्रेमवर्क जैसी नई तकनीकों के लिए खुला नहीं था।
मैं इस पोस्ट को वेंटिंग के लिए एक मंच के रूप में उपयोग नहीं कर रहा हूं। ऊपर बताई गई SA कहानियों के साथ मेरे अनुभवों के सकारात्मक और नकारात्मक पहलू थे। मेरे सवाल उबलते हैं:
- SA को टेबल पर क्या लाना चाहिए?
- वे अपने निर्णय लेने में संतुलन कैसे बना सकते हैं?
- क्या एक एसए नौकरी (जैसा कि पहले परिभाषित किया गया है) को इस मानसिकता के साथ लागू करना चाहिए कि उन्हें कुछ जमीनी नियमों को लागू करना चाहिए?
- और कुछ भी विचार करने के लिए?
धन्यवाद! मुझे यकीन है कि ये कार्य आसानी से उन लोगों के लिए विस्तारित हो जाते हैं जो वरिष्ठ देव या तकनीकी लीड हैं, इसलिए उस क्षमता पर भी जवाब देने के लिए स्वतंत्र महसूस करें।