सॉफ्टवेयर इंजीनियर और प्रोग्रामर के बीच मुख्य अंतर क्या हैं? [बन्द है]


103

सॉफ्टवेयर इंजीनियर और प्रोग्रामर के बीच मुख्य अंतर क्या हैं?


1
जोएल ने पहले ही यह सवाल पूछा है, यह जवाब देने के लिए एक आसान सवाल नहीं है और अगर कोई स्पष्ट जवाब है तो मुझे यकीन नहीं है। लेकिन मुझे पता है कि जोएल ने पहले ही उस सवाल का जवाब दे दिया है।
दिनमे

जवाबों:


80

काम पर रखने के दौरान, हम किसी ऐसे व्यक्ति के बीच अंतर की तलाश करते हैं, जो हमारे सिस्टम को आर्किटेक्ट करने में मदद करने, प्रक्रियाओं को परिभाषित करने, तकनीकी विनिर्देश बनाने, उन्नत रिफैक्टरिंग को लागू करने आदि के लिए सक्षम हो, और कोई ऐसा व्यक्ति जो चेकलिस्ट से प्रोग्रामिंग कार्यों को पूरा करने में हमारी मदद करने वाला हो। । मेरा मानना ​​है कि आप पूर्व को सॉफ्टवेयर इंजीनियर और बाद वाले को प्रोग्रामर कह सकते हैं ।


10
क्या आप कृपया स्पष्ट कर सकते हैं, क्या आप दोनों (अलग-अलग नौकरियों के लिए) या सिर्फ सॉफ्टवेयर इंजीनियरों को नियुक्त करते हैं?
जाप

2
आप पूर्व को सॉफ्टवेयर इंजीनियर कह सकते हैं , लेकिन मैं ऐसा नहीं कर सकता। जैसा कि ब्रेंडन ने कहा, यह आमतौर पर एक सॉफ्टवेयर आर्किटेक्ट का काम है।
J --Mᴇᴇ

131

यह वास्तव में कंपनी पर निर्भर है, क्योंकि मुझे नहीं लगता कि एक संप्रदाय या किसी अन्य को लागू करने के लिए एक कानूनी ढांचा है, या कम से कम ऐसा नहीं है जिससे मैं परिचित हूं और यह देश से देश में भिन्न हो सकता है (उदाहरण के लिए, शब्द का उपयोग "इंजीनियर" वास्तव में फ्रांस में काफी विनियमित है, लेकिन ऐसे संस्करण हैं जिन्हें "अपमानजनक" मामलों के लिए अनुमति दी जाती है)।

कहा जा रहा है कि सामान्य प्रवृत्ति इस प्रकार है:

  • एक प्रोग्रामर की स्थिति आमतौर पर एक कंप्यूटर प्रोग्राम के कोड का उत्पादन करने के लिए किराए पर लिए गए पेशेवर में से एक है । इसका मतलब यह होगा कि आप कोड लिखना जानते हैं , एक एल्गोरिथ्म को समझ सकते हैं और विनिर्देशों का पालन कर सकते हैं । हालांकि, यह आमतौर पर जिम्मेदारी के मामले में वहां रुक जाता है।

  • एक डेवलपर की स्थिति को आमतौर पर प्रोग्रामर की स्थिति का एक सुपर-प्रकार माना जाता है । यह एक ही जिम्मेदारियों को शामिल करता है, साथ ही एक सॉफ्टवेयर घटक को डिजाइन और आर्किटेक्ट करने की क्षमता , और इसके लिए तकनीकी दस्तावेज लिखने के लिए (विनिर्देशों सहित)। आप कम से कम तकनीकी रूप से - दूसरों का नेतृत्व करने में सक्षम हैं (इसलिए, प्रोग्रामर), लेकिन जरूरी नहीं कि एक टीम हो (वहाँ फ़ज़ल आता है ...)

  • एक इंजीनियर की स्थिति आमतौर पर इसका मतलब है कि आप एक डेवलपर हैं, जिनके पास एक विशिष्ट प्रकार की डिग्री , इंजीनियरिंग का कुछ ज्ञान है , और एक प्रणाली को डिजाइन करने में सक्षम है (जैसे: सॉफ्टवेयर घटकों / मॉड्यूल का एक संयोजन जो एक संपूर्ण सॉफ्टवेयर इकाई बनाते हैं) । मूल रूप से, आप एक व्यापक चित्र देखते हैं , और आप इसे डिज़ाइन करने और समझाने और इसे छोटे मॉड्यूल में अलग करने में सक्षम हैं ।

हालाँकि, यह सब तर्क संगत है , और जैसा कि मैंने कहा, कोई कानूनी आवश्यकता नहीं है कि मैं यूएस / यूके देशों के बारे में जानता हूं । कहा जा रहा है, फ्रांस में आप केवल अपने आप को "इंजीनियर" कह सकते हैं यदि आप एक इंजीनियरिंग स्कूल से आते हैं (आयोग डेस टिट्रेस डी आइन्जिएयर्स या ऐसा ही कुछ)। आप यह नहीं कह सकते हैं कि आपके पास एक "इंजीनियर डिग्री" है, लेकिन आप कह सकते हैं कि आपके पास "इंजीनियरिंग में डिग्री" है यदि आपने एक अनुशासन का अध्ययन किया है जो इंजीनियरिंग और प्रौद्योगिकियों के पोर्टल के अंतर्गत आता है।

यह हो सकता है कि कुछ देशों में एक समान अंतर हो, मुझे अभी पता नहीं है।

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

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

सॉफ्टवेयर के साथ प्रमुख समस्या यह है कि यह अभी तक नहीं है। हम सॉफ्टवेयर इंजीनियरिंग के लिए लक्ष्य बनाना चाहते हैं, लेकिन हम वास्तव में अभी तक वहां नहीं हैं। क्योंकि हमारे पास बहुत ही तरल और गतिशील वातावरण है, परियोजनाओं के लिए बहुत परिवर्तनशील बाधाएं हैं, और अभी भी हमारी प्रक्रियाओं में पूर्वव्यापीता में परिपक्वता की कमी है। निश्चित रूप से हम कह सकते हैं कि हम इस पर बेहतर हो सकते हैं (हालांकि हार्ड-डेटा के साथ अत्यधिक तर्कपूर्ण), लेकिन हम केवल 60 के दशक के बाद से ही हैं (पहले की परियोजनाएं वास्तव में हार्डवेयर केवल कंप्यूटरों के करीब थीं, इस प्रकार वास्तविक इंजीनियरिंग के करीब, विडंबना से )। जबकि हम एक सदी से भी अधिक समय से मोटर वाहनों का निर्माण कर रहे हैं, सामान्य तौर पर कुछ सहस्राब्दियों के लिए वाहन, और इससे भी अधिक सहस्राब्दियों के लिए निर्माण (और वास्तव में दुनिया के कुछ हिस्सों में यह बहुत अच्छा रहा है, जिससे आप हम जैसा महसूस करते हैं। '

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

लेकिन देखिए, शायद यही इंजीनियरिंग है। और यही वह है, जब कोई "सॉफ़्टवेयर इंजीनियर" के बारे में बात करता है, तो उन्हें इसके बारे में सोचना चाहिए।

ताकि प्रोग्रामिंग रूटीन के सरल कार्य, या विकासशील अनुप्रयोगों के अधिक उन्नत कार्य के साथ शायद ही विनिमेय लगता है।

फिर भी, सब कुछ ट्रेंड का विषय है। हाल ही में एक क्षैतिज देव टीम का होना बहुत आम बात है, जहाँ टीम का हर कोई सीनियर सॉफ्टवेयर डेवलपर (हाँ, राजधानियाँ है, क्योंकि यह हमें विशेष महसूस कराता है, है ना?), उम्र के वास्तविक अंतर के बिना (मेरे लिए पर्याप्त, उचित)? राय) और कौशल का इतना अंतर नहीं है (उह-ओह ...) और जिम्मेदारियां (अब यह अच्छा नहीं हो सकता है, शुद्ध रूप से पीआर चर्चा के लिए)।

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

और कोहरे में हर किसी को ढीला करने के लिए सुनिश्चित हो, तो आप दोनों (जैसे "सॉफ्टवेयर डेवलपमेंट इंजीनियर" या "टेस्ट में सॉफ्टवेयर इंजीनियर") मिश्रण करने वाले अन्य शीर्षक पाएंगे , और फिर अन्य लोगों ने अन्य डोमेन के साथ और भी अधिक पागल पुलों पर जोर दिया ( "सॉफ्टवेयर आर्किटेक्ट" के बारे में सोचें और कैसे "सॉफ्टवेयर आर्किटेक्चर" शब्दावली की बेशर्म चोरी हो सकती है)। और उन्हें आते रहें: रिलीज इंजीनियर, चेंज डेवलपमेंट मैनेजर, बिल्ड इंजीनियर (कि वहाँ भी ffaaarrrrr चला जाता है)। और कभी-कभी बस "इंजीनियर"।

आशा है कि मदद की, हालांकि यह वास्तव में एक जवाब नहीं है।

ओह, और इसका मतलब है कि आपकी नई कंपनी या तो आपको एक नए शीर्षक के साथ लुभाने की कोशिश कर रही है या कि वे वास्तव में शीर्षकों के बारे में परवाह नहीं करते हैं, या कि आप वास्तव में एक उच्च-स्तरीय स्थिति वाले हैं। जानने का एकमात्र तरीका यह है कि आप अपनी नौकरी की युक्ति पढ़ें, उनसे बात करें और अंत में इसे एक शॉट दें और अपने लिए न्याय करें। मुझे आशा है कि यह बाद का विकल्प है और आप इससे खुश हैं (और संभवतः इस पर अधिक नकदी भी)। ;)


12
"द प्रोगैमैटिक प्रोग्रामर" पुस्तक में यह भी कहा गया है कि सॉफ्टवेयर इंजीनियरिंग की तरह नहीं है। जबकि आप एक घर या एक गगनचुंबी इमारत की योजना बना सकते हैं, जैसे कि सॉफ्टवेयर इंजीनियरिंग के लिए एक सादृश्य शायद ही उपयोग किया जा सकता है। वे कहते हैं: सॉफ्टवेयर बागवानी की तरह अधिक है। बाग की योजना बनाएं, पौधे लगाएं। फिर देखें कि क्या बढ़ रहा है, मातम को हटा दें और नए पौधे लगाएं।
फाल्कन

6
"एक बार मेरे शिक्षक ने हमारी कक्षा को बताया कि ऐसी कोई चीज नहीं है, आज तक, जैसा कि तथाकथित" सॉफ्टवेयर इंजीनियरिंग "है। क्योंकि इंजीनियरिंग का मतलब है कि आप इसके डिजाइन और इसके उत्पादन के सभी चरणों की कल्पना करने में सक्षम हैं, और सटीकता के साथ भविष्यवाणी कर सकते हैं। आपको जिन संसाधनों की आवश्यकता होगी "। जिस समय यह लिखा गया था, उस समय यह असत्य था। वास्तुकला की तरह, हम आवश्यकताओं को जाने बिना लागतों का अनुमान नहीं लगा सकते हैं (एक गगनचुंबी इमारत लागत कितनी है? मैं आपको यह नहीं बताऊंगा कि निर्माण शुरू करने से पहले यह कितना उच्च होना चाहिए ...)। लेकिन हम परिपक्व सॉफ्टवेयर डेवलपमेंट ग्रुप को देखते हुए बाद में लागतों का अनुमान लगा सकते हैं।
MSalters

1
@MSalters: यकीन है, आप इसे चारों ओर मोड़ सकते हैं: आर्किटेक्चर की तरह, हम आवश्यकताओं के बिना लागतों की भविष्यवाणी नहीं कर सकते। लेकिन वास्तुकला के विपरीत , यहां तक ​​कि अच्छी तरह से परिभाषित आवश्यकताओं के साथ (हालांकि हमारा अक्सर अधिक तरल होता है क्योंकि वे कठिन हैं या हमें उन्हें बदलने की अनुमति देने की प्रवृत्ति है), हम लागत की भविष्यवाणी नहीं कर सकते। आप इसे सामान्य इंजीनियरिंग में सटीक स्तर तक ले जा सकते हैं, और हम वर्तमान में एसई की तुलना में अतिरिक्त-सामान्य परिस्थितियों के लिए लागतों की पहचान करने में सक्षम हैं। हम केवल (काफी रफ) guesstimates करते हैं। हम उन्हें बनाने में बेहतर हो रहे हैं, लेकिन वे अभी भी बहुत अधिक अनुमान लगा रहे हैं।
२३:०४ पर हेयरस्टाइल ha

3
@ हाइलम: यह सॉफ्टवेयर विकास में आदर्श है। लेकिन अगर आपने एक सीएमएम स्तर 4/5 कंपनी में काम किया है, तो आप देखेंगे कि वे लागत की भविष्यवाणी कर सकते हैं, और अक्सर 95% विश्वास स्तर उन्हें देते हैं। वे अपने सॉफ़्टवेयर बेस को अच्छी तरह समझते हैं, और उनकी पर्याप्त आवश्यकताएं हैं, जो कि बाधाएं दुर्लभ हैं। और बाधाओं की लागत कम है जब आपको उनसे निपटने का अनुभव मिला है।
MSalters

1
@ pcurry: ध्यान दें, मैं यह दावा नहीं करता कि यह "मेरी वर्गीकरण" है। यह सिर्फ भर्ती करने वालों और कॉर्पोरेट पेरोल द्वारा काफी आम तौर पर इस तरह से माना जाता है, और यह भी है कि यह अक्सर सीएस ओटी आईटी पाठ्यक्रमों में कैसे माना जाता है। वे एक दूसरे पर शॉट लगाने की प्रवृत्ति रखते हैं। इसलिए मुझे लगता है कि मैंने (तथाकथित) सॉफ्टवेयर इंजीनियर्स द्वारा (स्व-वर्णित) प्रोग्रामर द्वारा स्पष्ट रूप से अपनाए गए दृश्य को सूचीबद्ध किया है, जाहिर है। वास्तव में कोई फर्क नहीं पड़ता कि आप अपने आप को क्या कहते हैं, यह अधिक है जो लोग आपको उस मामलों पर विचार करेंगे। और यह तभी मायने रखता है जब आप उस तरह की चीजों की परवाह करते हैं। ईमानदारी से, व्यक्तिगत रूप से मुझे एक या दूसरे की परवाह नहीं है, मुझे नहीं बदलता है।
जाइलम

81

सॉफ्टवेयर इंजीनियर वे लोग होते हैं जो कंपनियों में काम करते हैं जो उन लोगों को कहते हैं जो उनके लिए सॉफ्टवेयर लिखते हैं "सॉफ्टवेयर इंजीनियर।"

प्रोग्रामर वे लोग हैं जो कंपनियों में काम करते हैं जो उन लोगों को कॉल करते हैं जो उनके लिए सॉफ्टवेयर लिखते हैं "प्रोग्रामर।"

वहाँ भी डेवलपर्स , या सॉफ्टवेयर डेवलपर्स । वे ऐसे लोग हैं जो कंपनियों में काम करते हैं जो उन लोगों को कहते हैं जो क्रमशः "डेवलपर्स" या "सॉफ़्टवेयर डेवलपर्स" के लिए सॉफ़्टवेयर लिखते हैं।


26
मुझे ध्यान देना चाहिए कि यह उत्तर वास्तव में मज़ेदार नहीं था।
जेर

15

तो "सॉफ्टवेयर इंजीनियर", "प्रोग्रामर", और "डेवलपर", "कोडर" भी है और आप "SOA विशेषज्ञ" को कभी नहीं भूल सकते

ये उन सभी लोगों के लिए विपणन की शर्तें हैं जो अपने सीवी में कुछ सार्थक नहीं कह सकते हैं, जैसे कि पिछले पदों में उनकी वास्तविक भूमिका (न सिर्फ नौकरी-शीर्षक)।

नौकरी विज्ञापनों पर, अंतर एचआर व्यक्ति के लिए नीचे है।

नीचे पंक्ति: प्रत्येक व्यक्ति का "स्वयं एक अच्छा कर्मचारी-जो काम करता है-साथ-कोड" होता है, और कुछ इस तरह के कौशल को ऐसे और शीर्षकों के साथ जोड़ते हैं।

आपको क्या करने की आवश्यकता है? नौकरी विज्ञापनों को आवश्यक कौशल के बारे में वर्णनात्मक होना चाहिए, और सीवी को उम्मीदवार के अनुभव के विवरण को स्पष्ट करना चाहिए।


10

कोई मतभेद नहीं। वे एक जैसी ही चीज हैं। कंपनियों, हालांकि, शर्तों का उपयोग करके औपचारिक नौकरी विवरण हो सकता है, और फिर शब्द के लिए कुछ कंपनी-विशिष्ट अर्थ हो सकते हैं।


8

प्रोग्रामिंग कोड के बारे में है। सॉफ्टवेयर इंजीनियरिंग अंतिम उत्पाद के बारे में है।


3

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

लेकिन, कोई वास्तविक सेट परिभाषा नहीं है ताकि शीर्षक के आधार पर लोग जान सकें कि आप क्या करते हैं, या आप कितने अनुभवी हैं।

जब मैं एक वास्तुकार / डेवलपर था, तो मेरा शीर्षक कंप्यूटर वैज्ञानिक था, लेकिन मैं सिर्फ लोगों को बताऊंगा कि मैं एक प्रोग्रामर था, क्योंकि पहले दो आसानी से परिभाषित नहीं होते हैं, लेकिन ज्यादातर लोग जानते हैं कि एक प्रोग्रामर क्या करता है।

यदि कोई शीर्षक आपके लिए महत्वपूर्ण है, तो नए को स्वीकार करें, क्योंकि इंजीनियर एक डेवलपर से अधिक लगता है।


3

मुझे नहीं लगता कि मेरे अनुभव के लिए कोई "आधिकारिक मतभेद" है, जिसका मतलब हो सकता है:

  • कुछ कंपनियां एक ही बात का जिक्र करने के लिए सॉफ्टवेयर इंजीनियरों और सॉफ्टवेयर डेवलपर्स का उपयोग करती हैं। वे सिर्फ अपने पसंदीदा शब्द का उपयोग करते हैं।
  • अन्य अलग-अलग पदों के लिए दोनों शब्दों का उपयोग करते हैं, लेकिन भूमिकाएं कंपनी से कंपनी में भिन्न होती हैं! कुछ में केवल फ़ंक्शन पर अंतर हो सकता है (एक नरम इंजीनियर सिस्टम के रखरखाव और सुधार पर काम करेगा जबकि एक डेवलपर कंपनी के उत्पाद पर काम करेगा), या श्रेणीबद्ध हो सकता है (इंजीनियर डेवलपर से ऊपर है), या यहां तक ​​कि इंजीनियर वास्तव में क्यू एंड ए पर निर्भर है!

इसके अलावा, फैशन की शर्तें भी हैं जो बदल जाती हैं ... पहले "प्रोग्रामर" शब्द था, फिर "सॉफ्टवेयर इंजीनियर" और अब "डेवलपर" प्रतीत होता है ...

नौकरी विवरण या विशिष्ट कंपनी पर किसी को पढ़ना बेहतर है


3

कुछ न्यायालयों में, "इंजीनियर" इसे एक पेशेवर इंजीनियर होने की आवश्यकता के साथ वहन करता है, जो कि पी। एंग। किसी की साख के बीच की बाध्यता। हालाँकि, अन्य क्षेत्रों में इस तरह का अंतर नहीं हो सकता है क्योंकि मैं कुछ साल पहले वाशिंगटन राज्य में "सॉफ्टवेअर डिज़ाइन इंजीनियर" था।


2

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

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