क्या मेरे नकारात्मक इंटर्नशिप के अनुभव वास्तविक दुनिया के प्रतिनिधि हैं? [बन्द है]


85

मुझे उत्सुकता है अगर एक इंटर्न के रूप में मेरे वर्तमान अनुभव वास्तविक उद्योग के प्रतिनिधि हैं।

पृष्ठभूमि के रूप में, मैं दो कंप्यूटिंग बड़ी कंपनियों के बेहतर हिस्से और एक प्रमुख विश्वविद्यालय में एक गणित प्रमुख हूं; मैंने हर वर्ग को पसंद किया है और उन सभी को पसंद किया है, इसलिए मुझे लगता है कि मैं प्रोग्रामिंग में भयानक नहीं हूं। मुझे प्रमुख सॉफ्टवेयर कंपनियों में से एक के साथ इंटर्नशिप मिली, और अब आधे रास्ते से मुझे कोड की असाधारण रूप से कम गुणवत्ता पर झटका लगा है। टिप्पणियाँ मौजूद नहीं हैं, यह सभी स्पेगेटी कोड है, और जो कुछ भी गलत हो सकता है वह और भी बदतर है। मैंने एक टन ट्यूटरिंग / TAing की है, इसलिए मुझे बहुत बुरा कोड पढ़ने की आदत है, लेकिन प्रमुख उद्योग के उत्पादों को मैं ट्रम्प को देख रहा हूं। मैं दिन में 10-12 घंटे काम करता हूं और कभी ऐसा महसूस नहीं करता कि मैं कहीं जा रहा हूं, क्योंकि यह ' एक अनिर्दिष्ट एपीआई का पता लगाने या (पूरी तरह से अनिर्दिष्ट) उत्पाद के कुछ अन्य भाग के व्यवहार का निर्धारण करने की कोशिश करने के अंतहीन घंटे। मैंने अब तक हर दिन काम से नफरत करना छोड़ दिया है, और मैं यह जानना चाहता हूं कि क्या यह मेरे जीवन के बाकी हिस्सों में है।

क्या मैंने इंटर्नशिप पर एक छोटा सा तिनका खींचा (बेतुका बड़ा पेचेक इसका मतलब है कि यह कम गुणवत्ता की स्थिति नहीं है), या क्या यह वास्तविक दुनिया जैसा है?


22
इससे अधिक सामान्य होना चाहिए। कई जगह कुछ भी करने से बिल्कुल अनजान हैं।
वेन मोलिना

35
जो आप एक नकारात्मक के रूप में देखते हैं वह वास्तव में सकारात्मक है, वास्तविक दुनिया के अनुभव को जल्द से जल्द प्राप्त करने के लिए बेहतर है, और जो आप अनुभव कर रहे हैं वह परिमाण के आदेशों से आपके शैक्षणिक अनुभव से अधिक वास्तविक दुनिया है।

69
ध्यान रखें कि प्रोग्रामर ज्यादातर प्रोग्रामर के कोड से नफरत करते हैं। जिन बाधाओं को लोग बाद में आपके द्वारा लिखे गए कोड पर काम करते हैं, वही बातें कहेंगे। मुझे पता है कि आपको लगता है कि आप एक अच्छे प्रोग्रामर हैं, और आप हो सकते हैं, लेकिन संभावनाएं बहुत अधिक हैं कि आपने जो कोड लिखा है, वह भी ऐसा ही है। लेकिन नहीं, यह हमेशा उतना बुरा नहीं होता जितना आप वर्णन करते हैं। यह आंशिक रूप से हो सकता है कि आपने अभी तक वास्तविक विश्व कोड को ठीक से पढ़ने और मूल्यांकन करने के लिए पूरी तरह से सीखा नहीं है, और आपके पास एक बार यह थोड़ा बेहतर होगा।
psr

22
यदि आपके द्वारा विश्वविद्यालय में देखा गया कोड कम-गुणवत्ता वाला स्पेगेटी कोड नहीं था , तो आपका अनुभव मेरे से अलग था ... सभी प्रायः अकादमिक प्रेजैक्ट्स में कोड प्रूफ-ऑफ-कॉन्सेप्ट के रूप में बाहर निकलता है, जिसमें स्थिरता बनाए रखने के लिए कोई संबंध नहीं है।
माइकल बोर्गवर्ड

10
@psr: मैं इस बात से सहमत नहीं हूं कि प्रोग्रामर सामान्य रूप से अन्य प्रोग्रामर के कोड से नफरत करते हैं। यदि आपके पास पठनीयता, अच्छा प्रलेखन, सादगी आदि जैसे कुछ गुणवत्ता पैरामीटर हैं, तो आप उन्हें किसी और के कोड में भी सराहना कर सकते हैं, भले ही उनकी कोडिंग शैली आपसे अलग हो। दूसरी ओर, यदि आप जटिल, अराजक, तात्कालिक कोड देखते हैं, तो आपको यह पसंद नहीं है, इसलिए नहीं कि यह किसी और का कोड है। BTW, मुझे अपने खुद के कोड से भी नफरत है जब मुझे जल्दी में कुछ लिखने के लिए मजबूर किया जाता है और परिणाम मेरे गुणवत्ता मानकों को पूरा नहीं करता है।
जियोर्जियो

जवाबों:


128

वे इसे एक कारण से रियल वर्ल्ड ™ कहते हैं।

असली कॉर्पोरेट दुनिया में आप जो भी सामना करेंगे, उसका 99% बकवास माना जाएगा, और अच्छे कारण के लिए जिसे मैं समझाऊंगा। 1% जिसे बकवास नहीं माना जाता है वह अंततः बकवास बन जाएगा।

# 1 कोड लिखें, # 2 ????, # 3 लाभ!

पहले ऑफ बिज़नेस एक लाभ को चालू करने के लिए मौजूद हैं, वे पूर्ण रूप से सुनहरा भंडार में रखे गए सैद्धांतिक रूप से साफ डिजाइन और प्राचीन शैक्षणिक कोड के पहाड़ों को उत्पन्न करने के लिए मौजूद नहीं हैं। पास भी नहीं, उनके द्वारा उत्पादित सोर्स कोड को बेचने के व्यवसाय में भी नहीं।

व्यापार जगत में कोड समाप्त होने का एक साधन है । यदि कुछ कोड एक व्यावसायिक समस्या को हल करता है और इसे बनाने और बनाए रखने की लागत से अधिक पैसा बनाता है तो यह व्यवसाय के लिए वांछनीय है। कोड लिखने के लिए आपको रोजगार देना कोड प्राप्त करने के व्यवसाय के लिए सिर्फ एक तरीका है।

सिद्धांत ० - अभ्यास ∞

आदर्श रूप से रखरखाव एक चिंता का अधिक होना चाहिए लेकिन यह आमतौर पर नहीं होता है, क्योंकि अल्पावधि में यह वित्तीय रूप से नहीं जीतता है। लंबी अवधि में, सॉफ़्टवेयर में आमतौर पर एक अपेक्षाकृत छोटा जीवन चक्र होता है, विशेष रूप से वेब आधारित अनुप्रयोग, वे जल्दी से obsoleted हो जाते हैं और अधिक बार फिर से लिखे जाते हैं।

व्यावसायिक अनुप्रयोगों की हाउस लाइन में कई गति आधारित कारणों से अंतहीन ज़ोंबी परियोजनाओं के रूप में माना जाता है कि मंथन कर रहे हैं। ये परियोजनाएं वास्तव में वे सफलताएं हैं जो वे जारी रखती हैं क्योंकि वे व्यवसाय को लाभ कमाती हैं।

सिद्धांत रूप में सिद्धांत और व्यवहार में कोई अंतर नहीं है। व्यवहार में है। - योगी बर्रा

सिद्धांत रूप में 100% कोड कवरेज के साथ पूरी तरह से साफ सुथरा प्राचीन कोड बेस कंपनियों को पैसा बचाना चाहिए, व्यवहार में यह निवेश पर एक वैध रिटर्न के करीब किसी भी चीज को वितरित करने के करीब नहीं आता है।

सॉफ्टवेयर जीवनचक्र के भौतिकी

सॉफ्टवेयर की दुनिया में काम पर एक सुपर शक्तिशाली एन्ट्रापी बल भी है। यह अपरिहार्यता का एक काला छेद है जो सभी सॉफ्टवेयर को बिग बॉल ऑफ मड में पतित करने की निंदा करता है ।

आप जिस BBM से बेहतर शुरू करते हैं, वह बेहतर है, लेकिन हर सॉफ्टवेयर सिस्टम को अंततः पर्याप्त समय मिलेगा। आप कितनी जल्दी दृष्टिकोण करते हैं 100% एन्ट्रॉपी यह निर्धारित करता है कि आप कहां से शुरू करते हैं और कितनी तेजी से आप तकनीकी ऋण पर ढेर करते हैं और इस पर ब्याज कितना अधिक है।

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

यह ऐसी प्रणालियाँ हैं जिन्हें निरंतर परिवर्तन की आवश्यकता होती है क्योंकि वे अधिकतम एन्ट्रॉपी के करीब से शुरू हुईं हैं जो लगातार छिद्रित और प्रदूषित हैं और यह रखरखाव है जो नकारात्मक परिवर्तन को तेज करता है।

गुड इनफ गुड गुड एनफ है

वेबसाइटों की तरह लघु जीवन चक्र प्रणाली जो लगातार बदलती हैं, यूनिट परीक्षणों में महंगे विशाल अपफ्रंट डिज़ाइन 100% कोड कवरेज से लाभ नहीं उठाती हैं, क्योंकि लागतों की पुनरावृत्ति के लिए परिशोधन समय बहुत कम है।

व्यावसायिक एप्स की उपर्युक्त आंतरिक लाइन जैसी लंबी जीवनचक्र प्रणालियां, वास्तव में 100% कोड कवरेज इकाई परीक्षणों के बड़े पैमाने पर निवेश से लाभ नहीं उठाती हैं, क्योंकि परियोजना के जीवन में बदलाव की दर एक स्थिर दृष्टिकोण के पास होती है जो शून्य के करीब है गैर रेखीय फैशन।

इसीलिए जीवन की योजनाओं का अंत अधिक महत्वपूर्ण है और प्रतिस्थापन प्रणालियों की योजना बनाई जानी चाहिए जैसे कि कुछ जारी किया जा रहा है, न कि जब इसे कुछ वर्षों के लिए इसे पारित किया गया है और असमर्थित किया गया है, इसलिए एक नई प्रणाली को लागू किया जाना चाहिए।

वे बीबीएम के बारे में नहीं सिखाते हैं जहाँ तक मुझे पता है, मैंने हाल ही में सीएस स्नातक का सामना नहीं किया है जो जानता था कि यह क्या था, बहुत कम क्यों ऐसा होता है।

यही कारण है कि अच्छा पर्याप्त अच्छा पर्याप्त है , कम या ज्यादा कुछ भी नहीं है।

सॉफ्टवेयर Slumlords

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

कोई भी भवन स्वामी, झुग्गी स्वामी या पूर्णता की कुछ अकादमिक धारणा के कारण संपत्ति पर पैसा खर्च करने वाला नहीं है, जो संबद्ध लागत पर पर्याप्त लाभ का अनुवाद नहीं करता है।

कोई भी ग्राहक ऐसे सॉफ़्टवेयर सिस्टम में अपग्रेड के लिए भुगतान करने वाला नहीं है जो उनके लिए काम कर रहा है। कोई भी व्यवसाय कोई ठोस लाभ नहीं होने के लिए सिर्फ राइटिंग और री-राइटिंग कोड पर पैसा खर्च करने जा रहा है।

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

रोग का निदान

यह सॉफ्टवेयर विकास में 20+ वर्षों से एक पैटर्न है। यह जल्द ही किसी भी समय बदलने वाला नहीं है। यह वह तरीका नहीं है जो लोग चाहते हैं कि यह कुछ विश्वास प्रणाली से बाहर हो, यह एक व्यवसाय पर बाहरी ताकतों की वास्तविकता है। बिजनेस ड्राइव निर्णय लेते हैं, मुनाफा वे बुराई नहीं हैं जो वे आपके वेतन का भुगतान करते हैं, अल्पकालिक या दीर्घकालिक दृष्टि अप्रासंगिक है, यह परिभाषा द्वारा निरंतर परिवर्तन का एक अल्पकालिक उद्योग है। कोई भी जो लाभ कमाने के लिए अच्छे के खिलाफ तर्क देता है वह व्यवसाय को नहीं समझता है।

मैंने 15 साल सलाह-मशविरा किया और बहुत जल्दी सीख लिया कि अच्छा बस इतना ही था, बाकी कुछ भी मुझे खर्च करना था। हाँ, मैं चाहता था कि चीजें एकदम सही हों, लेकिन जब तक आप एक कोड बेस नहीं बेच रहे हैं, जो 99.99999% समय आप एक समाधान बेच रहे हैं , जो कि प्रीफेक्ट क्लीन ऑर्गनाइज़्ड एलिगेंट कोड खो गया है और आपने अभी अपना समय बर्बाद किया है, तो आप इसके लिए कभी भी प्रतिपूर्ति नहीं करेंगे ।

प्रगति और आशा

चुस्त तरीके सही दिशा में एक अच्छा कदम है, कम से कम दार्शनिक रूप से। वे अराजकता और निरंतर परिवर्तन को एक प्रथम श्रेणी के नागरिक के रूप में संबोधित करते हैं और इसे स्वीकार करते हैं। वे हठधर्मिता प्रथाओं को अस्वीकार करते हैं, यह स्वीकार करते हुए कि कार्यप्रणाली और प्रथाओं को आवश्यकताओं और प्रौद्योगिकियों के साथ-साथ बदलना चाहिए।

वे एन्ट्रापी को स्वीकार करते हैं जो समय की कमी या बदलती आवश्यकताओं, बदलते कर्मचारियों और तकनीकी ऋण की अवधारणा के साथ एक सॉफ्टवेयर सिस्टम की परत द्वारा प्रस्तुत की जाती है।

लेकिन Agile एक रामबाण नहीं है, यह भौतिकी के मूलभूत नियमों को बदलने वाला नहीं है और कोड आधार परवाह किए बिना सड़ जाएंगे। यह पूरी तरह से हाथ से बाहर होने और असहनीय होने से पहले सड़ांध से निपटने के लिए योजना बनाना है।

चुस्त जब सही ढंग से किया जाता है, एन्ट्रापी का प्रबंधन करने में मदद करता है, इसे धीमा कर देता है, इसे ट्रैक करता है, इसे मापता है और योजनाबद्ध तरीके से इससे निपटता है। यह इसे बंद नहीं करेगा!

कैरियर का निर्णय

यदि यह आपके लिए एक वास्तविक दार्शनिक समस्या है, तो आपको संभवतः अन्य कैरियर विकल्पों पर विचार करना चाहिए, क्योंकि जिस तरह से काम करते हैं उसके पीछे वैध व्यावसायिक योग्यता है। ओपन सोर्स प्रोजेक्ट्स का कोई बेहतर ट्रैक रिकॉर्ड नहीं है, और कई मामलों में कोड मेरे द्वारा देखे गए अधिकांश कॉर्पोरेट कोड से भी बदतर है।


2
मुझे इसके साथ दार्शनिक समस्या नहीं है, यह कहीं नहीं मिलने के लिए निराशाजनक था। लेकिन, यह निश्चित रूप से समझ में आता है; कोड मैं के साथ काम कर रहा हूँ के बहुत अंतर के 3 स्तरों के साथ लगभग 20 वर्ष है ...
attemptAtAnonymity

8
"वे पूरी तरह से सैद्धांतिक रूप से स्वच्छ डिजाइन और प्राचीन अकादमिक कोड के पहाड़ों को उत्पन्न करने के लिए मौजूद नहीं हैं, जो पूर्णता के सुनहरे भंडार में रखे गए हैं।": लेकिन उन्हें एहसास नहीं है कि अगर वे अपने डेवलपर्स को अपना कोड साफ करने के लिए अधिक समय देते हैं तो वे कितना पैसा बचाएंगे। बाद में उन्हें एक बग या पुनर्लेखन कोड की तलाश में हफ्तों बिताने की ज़रूरत नहीं है जो किसी को भी नहीं समझती है। मुझे लगता है कि कई कंपनियों की यह अल्पकालिक सोच लंबी अवधि में उनके मुनाफे को कम करती है। लेकिन यह आईएमओ खराब प्रबंधन का संकेत है।
जियोर्जियो

22
पर्याप्त रूप से, ऐसा लगता है कि जिस कंपनी के लिए मैं काम करता हूं, वह आरओआई प्राप्त करती है, जिसमें उच्च कोड कवरेज, कठोर कोड की समीक्षा, दैनिक 30 मिनट के डिजाइन सत्र आदि होते हैं। शुरुआत में विकास थोड़ा धीमा हो सकता है, लेकिन इसमें दस गुना रिटर्न दिया जाता है। बाद के चरणों जब कोडबेस अन्यथा अनजाने में बदल जाएगा।
अधिकतम

4
मैंने यह जानने के लिए पर्याप्त परियोजना विफलता देखी है कि आप उत्तर सटीक नहीं हैं। आप वर्णन करते हैं कि उद्योग में अधिकांश लोग क्या मानते हैं। एक इंजीनियरिंग की दुनिया में विश्वास एक अच्छी गुणवत्ता नहीं है, खासकर जब विज्ञान ने इस तरह की धारणा को गलत साबित कर दिया है।
डेडलिंक

27
-1 जबकि कुछ बिंदु वैध हैं, कई त्रुटियां हैं। उदाहरण के लिए, "पूरी तरह से सैद्धांतिक रूप से साफ किए गए" के बारे में बात एक स्पष्ट पुआल आदमी है; रिफ्लेक्टर के बजाय फिर से लिखने की योजना बनाना एक अच्छा विचार नहीं है, और यहां तक ​​कि उद्योग में कई लोग इसे समझते हैं। और कोड के आधार अनिवार्य रूप से नहीं सड़ते हैं, वे रखरखाव की कमी के कारण सड़ जाते हैं।
सालेके

44

मुझे उत्सुकता है अगर एक इंटर्न के रूप में मेरे वर्तमान अनुभव वास्तविक उद्योग के प्रतिनिधि हैं।

नहीं ऐसा नहीं है। यह आपके करियर स्तर और अनुभव का प्रतिनिधि है। यह सीखने का एक हिस्सा है कि व्यवसाय आंतरिक गुणवत्ता नियंत्रण के दृष्टिकोण से कैसे काम करते हैं।

पृष्ठभूमि के रूप में, मैं दो कंप्यूटिंग बड़ी कंपनियों के बेहतर हिस्से और एक प्रमुख विश्वविद्यालय में एक गणित प्रमुख हूं; मैंने हर वर्ग को पसंद किया है और उन सभी को पसंद किया है, इसलिए मुझे लगता है कि मैं प्रोग्रामिंग में भयानक नहीं हूं। मुझे प्रमुख सॉफ्टवेयर कंपनियों में से एक के साथ इंटर्नशिप मिली, और अब आधे रास्ते से मुझे कोड की असाधारण रूप से कम गुणवत्ता पर झटका लगा है।

आपके कौशल, आपके अनुभव, आपकी शिक्षा का दूसरों द्वारा किए गए कार्य की गुणवत्ता पर कोई प्रभाव नहीं पड़ता है। केवल इसलिए कि आपके पास उन प्रथाओं को बदलने का अधिकार नहीं है। इससे कोई फर्क नहीं पड़ता कि आप विश्वविद्यालय में अच्छे थे या बुरे। यह नहीं बदलता है कि वर्तमान में आप जिस कंपनी के लिए काम करते हैं, वह कैसे काम करती है। इसलिए जब तक यह महान है आपके पास यह सब पृष्ठभूमि है। यह वास्तव में आपके अपने लाभ के लिए है न कि उनके लिए। इसलिए यह अध्ययन करना महत्वपूर्ण है कि आप क्या प्यार करते हैं।

मुझे प्रमुख सॉफ्टवेयर कंपनियों में से एक के साथ इंटर्नशिप मिली, और अब आधे रास्ते से मुझे कोड की असाधारण रूप से कम गुणवत्ता पर झटका लगा है। टिप्पणियाँ मौजूद नहीं हैं, यह सभी स्पेगेटी कोड है, और जो कुछ भी गलत हो सकता है वह और भी बदतर है। मैंने एक टन ट्यूटरिंग / TAing की है, इसलिए मुझे बहुत बुरा कोड पढ़ने की आदत है, लेकिन प्रमुख उद्योग के उत्पादों को मैं ट्रम्प को देख रहा हूं।

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

आपको किसी भी उद्योग में इस प्रकार की समस्या के उदाहरण मिलेंगे जो आंतरिक गुणवत्ता नियंत्रण पर निर्भर करता है। सॉफ्टवेयर डेवलपमेंट से लेकर मैन्युफैक्चरिंग तक। आपको इसे समस्या के रूप में नहीं, बल्कि उनके स्रोत कोड की वर्तमान स्थिति के रूप में देखना सीखना होगा। यह कैसा है, किसी चीज़ को खोजने में X नंबर मिनट लगता है, कुछ ठीक करने में X नंबर मिनट लगता है।

व्यापार या तो इस अतिरिक्त समय की परवाह नहीं करता है, या इसे स्वीकार्य लगता है।

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

किसी विषय का अध्ययन करने के लिए आपको विश्वविद्यालय में लंबे समय तक रखने के लिए यह स्वीकार्य क्यों था, लेकिन अब कोड कोड का अध्ययन करने के लिए लंबे घंटों में डाल देना स्वीकार्य नहीं है? मुझे यकीन है कि नियोक्ता ने आपको काम पर रखा था क्योंकि उन्हें लगा था कि आप इसे संभाल सकते हैं।

मैं आपको कुछ सलाह देता हूं। अच्छे डेवलपर्स को पता होता है कि उन्हें अपने टीम के साथी से मदद कब लेनी है। मत सोचो कि उत्तर हमेशा कोड में होते हैं। मैंने अपने आप को समय के घंटे बचाकर बस लोगों से कुछ सवाल पूछे हैं। लगता है जैसे आपको गति में आने में कुछ मदद चाहिए।

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

क्या मैंने इंटर्नशिप पर एक छोटा सा तिनका खींचा (बेतुका बड़ा पेचेक इसका मतलब है कि यह कम गुणवत्ता की स्थिति नहीं है), या क्या यह वास्तविक दुनिया जैसा है?

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

मैं आपको बता सकता हूं कि ऐसा लगता है कि आपकी उम्र में आपका अनुभव कहीं बेहतर था तो मेरे पास जो भी अवसर थे। 90 के दशक में मेरे लिए जीवन किराया देने और अपना अगला अनुबंध खोजने का संघर्ष था। खुद को भाग्यशाली मानें।


3
आपके निरीक्षण के लिए धन्यवाद! मुझे माफ़ कर दो अगर मुझे कोई भद्दा या दिखावा लगता है, तो मैं अच्छी तरह जानता हूँ कि मैं बहुत भाग्यशाली रहा हूँ और अभी भी बहुत कुछ सीखना बाकी है। और मुझे लगता है कि मैं काफी अच्छा कर रहा हूं (मुझे शायद पूर्णकालिक प्रस्ताव मिल रहा है), मुझे अभी नहीं पता था कि क्या यह अनुभव मुझे कहीं और देखने के लिए आश्वस्त होना चाहिए। मैं उद्योग को और अधिक समझने की सराहना करता हूं!
प्रयासअनामिता

9
जैसा कि मेरे पिता ने मुझे बताया था जब मैंने शुरुआत की थी। "आप कहीं और देखना बंद नहीं करते"। आपको इंडस्ट्री में हमेशा दूसरे लोगों के साथ नेटवर्किंग करनी चाहिए। अपना रिज्यूम हमेशा अपडेट रखें, और हमेशा नई प्रोग्रामिंग भाषाओं का अध्ययन करें। अपना जीवन ऐसे जियो जैसे कि आप बेरोजगार थे और आप हमेशा नौकरी पर रहेंगे।
रिएक्टगुलर

मैं खुद को लगातार अध्ययन नहीं कर सकता, यह देखते हुए कि मैं अब कितना आनंद लेता हूं। यह सुनकर खुशी हुई कि मुझे साथ देना चाहिए!
प्रयासअनामनाम

5
+1 के लिए "अच्छे डेवलपर्स को पता है कि उनके अनुयायियों से मदद कब लेनी है।" मैं एक छोटी सी कंपनी में काम करता हूं और केवल 1 टीम का साथी हूं जो प्रोग्रामिंग अनुभव में मेरे लिए काफी जूनियर है, लेकिन वह अक्सर एक मुद्दे पर स्पष्टता रखेगा जहां मैं फंस गया हूं। पूछना!
टेकब्रैट

2
@Jodrell "वर्किंग" कोड बदलना एक बहुत बड़ा जोखिम है, "सफाई करना" अच्छे इरादों के साथ एक बदलाव है, लेकिन नरक का रास्ता अच्छे इरादों के साथ बनाया गया है। कुछ उत्पाद स्वामी / परियोजना प्रबंधक केवल परिवर्तनों के लिए परिवर्तनों के लिए सहमत होंगे, बहुत अधिक जोखिम।

25

25 साल और कई तरह की कंपनियों और उद्योगों के बाद मैं कह सकता हूं:
हां, यह बहुत आम है।
यही कारण है कि इंजीनियरों को आमतौर पर बहुत अच्छी तरह से भुगतान किया जाता है, उन्हें गंदे हॉज-पॉडेज का सामना करने में अच्छा होना पड़ता है और फिर भी पूरे लानत की चीज को फिर से भरने के लिए दबाने की इच्छा का विरोध करते हुए परिवर्तन करने में सक्षम होते हैं और पता लगाते हैं कि यह वास्तव में क्या नरक होना चाहिए। करते हुए। मैंने आपके लिए वहां भावना को फेंक दिया - आपके द्वारा सामना किए गए कोड के बारे में इस तरह महसूस करना सामान्य है!

आपके द्वारा देखा जाने वाला कोड अक्सर अलग-अलग प्रोग्रामर द्वारा अलग-अलग दृष्टिकोण और मानकों और विभिन्न नामकरण सम्मेलनों, आदि के साथ अंतहीन पुनरावृत्तियों से गुजरा होगा।

हालांकि क्या होता है कि $ दबाव हमेशा बना रहता है। यह हमेशा यह वर्णन करने के लिए लुभाता है कि कैसे और क्यों बेहतर कोड दीर्घकालिक में एकमात्र तरीका है, लेकिन नौकरियों के एक महान सौदे में एक छोटी अवधि के त्वरित-फिक्स समाधान के लिए घड़ी की टिक टिक है। किसी प्रोजेक्ट में मानकों को नष्ट करने में केवल 1 इंजीनियर को कम समय लगता है। यह एक बहुत अच्छा प्रबंधक लेता है जो जानता है कि इसे कैसे रोका जाए और सही दृष्टिकोण (जब उचित रूप से संभव हो) का बचाव किया जाए।

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

डीरेका की तरह, यह निराशाजनक लगने लगा है, इसलिए मुझे थोड़ा और सकारात्मक करने की कोशिश करें, क्योंकि यह निश्चित रूप से सच है: -

  • संगठन हैं, अक्सर सबसे बड़े तकनीकी घटक हैं जो सही चीजें कर रहे हैं।
  • नई कंपनी ... और कोड ... क्लीनर यह हो जाता है। स्पेगेटी समय और लोगों के कारण बढ़ता है।
  • कुछ लोग TDD और BDD करते हैं, अन्य नहीं। रेंज बहुत बड़ी है।
  • लगभग 10 वर्षों के बाद, वर्तमान में, पूरे प्रौद्योगिकी आधार में परिवर्तन होता है, इसलिए जो लोग उद्योग में रहते हैं, उनके लिए कठिन समय हो सकता है, जैसे कि वे नए शौक रखते हैं।

अंत में, जैसा कि एंथनी ब्लेक बताते हैं, हमेशा 3 कारक होते हैं - समय, लागत और गुणवत्ता।
मुझे संबंधित अभिव्यक्ति पसंद है : "पिक 2" !


मुझे खुशी है कि दूसरे लोग भी ऐसा ही महसूस कर रहे हैं। यह समझते हुए कि यह सामान्य है, मैं निश्चित रूप से इसके लिए अधिक सहिष्णुता पर काम करूंगा। धन्यवाद!
प्रयासअनामिता

6
यदि आप "पिक 2" प्राप्त करते हैं तो आप भाग्यशाली हैं क्योंकि "पिक 1" अधिक बार आदर्श है।

मुझे नहीं लगता कि "अच्छा कोड" व्यक्तिपरक है। परियोजना में एक औसत देवता को गिराएं और उन्हें एक अनुरोधित सुविधा बनाने के लिए कहें। यदि इसमें घंटे लगते हैं, तो आपका कोड अच्छा है। यदि इसमें दिन (या सप्ताह) लगते हैं तो आपका कोड खराब है।
कुबी

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

इसके अलावा 'औसत देव' थोड़े व्यक्तिपरक है ...;)
माइकल डुरंट

16

इस बारे में बहुत सारी राय है क्योंकि हर किसी के अनुभव अलग हैं।

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

परियोजना के अनुसार, मैं बहुत सी नौकरियों में गया हूं और तुरंत कुछ स्थापित परियोजना के "लुकअप" करने के लिए कहा गया है, आमतौर पर एक यह है कि व्यवसाय ने अभी खोज की है कि उस पर अंतिम डेवलपर को खोने के बाद वास्तव में इसकी आवश्यकता है। मुझे आमतौर पर वही मिलता है जो आपने ऊपर उल्लिखित किया है - अनिर्दिष्ट, अति-इंजीनियर, छोटी गाड़ी स्पेगेटी। कभी-कभी मैं इसे ठीक कर सकता हूं, कभी-कभी मैं बस फिर से शुरू करता हूं। इसे पुराने कोड होने की भी आवश्यकता नहीं है, मैंने इसे उन नई परियोजनाओं पर पाया है जिन्हें मुझे "सहायता" करने के लिए कहा गया है।

आपको इस तथ्य से दिल लेना होगा कि ज्यादातर कंपनियां इंटर्न को भद्दे रोजगार देने जा रही हैं। आपके दो काम करने के बाद जो मज़ा आता है: 1 - अपने आप को साबित करना और 2 - दूसरे लोगों की गलतियों को ठीक करने के अलावा अन्य चीजों पर काम करने का कुछ समय। दूसरे शब्दों में आपको क्षमता और पहल दिखानी होगी।

खराब कोड को संभालने की असली चाल यह पता लगाने की है कि क्या उपयोगी है और क्या नहीं है। यह अनुभव और अनुसंधान से आता है।

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

जल्दी या समय पर वितरित करने के लिए प्रोग्रामर सभी अक्सर तकनीकी ऋण लेने के लिए तैयार रहते हैं। दुर्भाग्य से इस तकनीकी ऋण का प्रभाव अक्सर डेवलपर्स और प्रबंधन द्वारा कम, कम, अनदेखा या खारिज कर दिया जाता है, जब तक कि बहुत देर हो चुकी हो और वे मुसीबत में हों।

खेद है अगर यह निराशाजनक लगता है। मुझे यकीन है कि कोई और सकारात्मक टुकड़ा कर सकता है। :-)


बिल्कुल भी निराशाजनक नहीं है, यह जानना अच्छा है कि यह अनुभव अपरिहार्य और स्थायी नहीं है!
प्रयासअनामिता

8
स्टार्टअप केवल कोड बना रहे हैं जो अभी तक बकवास नहीं माना जाता है ...

सच :-) और मैंने एक स्टार्टअप में काम किया है, जिसमें मेरे कुछ अक्षम अक्षम मूर्खों के साथ आबादी है जिन्होंने शुरू करने के लिए बहुत सारे बकवास कोड बनाए।
ट्रेक

12

यहाँ कुछ महान जवाब हैं, लेकिन मुझे अपना थोड़ा जोड़ना चाहिए;

वास्तविक दुनिया में आपका स्वागत है - दुर्भाग्य से यह बहुत आम है।

नीचे दिए गए आरेख का संदर्भ लें;

यहाँ छवि विवरण दर्ज करें

कॉर्पोरेट सॉफ़्टवेयर के साथ, आप केवल 2 या इसके बाद के संस्करण ले सकते हैं, और आपको एक बलिदान करना होगा।

जैसा कि आपने खोजा है, कॉर्पोरेट जगत के अधिकांश लोग गति और कीमत के साथ चलते हैं।


17
वास्तव में आप भाग्यशाली होंगे यहां तक ​​कि 2 भी लेने के लिए, अधिकांश स्थानों पर 1
सॉफ्टवेना

1
तथ्य की बात के रूप में, वहाँ उन तीन से अधिक कर रहे हैं - वहाँ भी गुंजाइश (उर्फ सुविधाओं), संगतता, सुरक्षा, प्रयोज्य बस कुछ ही नाम है। हमेशा की तरह, एक अच्छा परिणाम प्राप्त करना सबसे अच्छा समझौता चुनने के बारे में है (बस जीवन में हमेशा की तरह ...)।
३४ पर सलेस्के

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

1
@AnthonyBlake: हां, मुझे पता है। मैं एक अच्छा उदाहरण बर्बाद नहीं करना चाहता था, माफ करना :-)।
सालेके

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

6

पूरी तरह से उद्योग का संकेत नहीं है, लेकिन मेरे सीमित अनुभव से 5+ वर्ष। मैं आपके इंटर्नशिप के माध्यम से काम करूंगा और अनुभव से उतने सबक लूंगा। हॉलमार्क, और संकेतक के लिए देखें। उदाहरण के लिए आपकी अगली स्थिति के लिए आपको बिना किसी संदेह के साक्षात्कार की एक श्रृंखला से गुजरना होगा। यह प्रक्रिया दो तरह से सड़क है, और आपको एक कंपनी के लिए एक महसूस करने का मौका देती है। यह vitally महत्वपूर्ण है और संभवतः आपकी खुद की खुशी और भलाई के लिए नेतृत्व करेगा।

चीजों को योग करने के लिए, कहानी के संकेत बताएं;

  • कंपनी कौन चला रहा है? क्या यह एकल प्रबंधक है, मार्केटिंग टीम (यदि ऐसा है तो दूर रहें), विकास टीम, आदि। इस कोण का मतलब है कि आपको परियोजनाओं के लिए अधिक या कम उत्तोलन मिल सकता है, परियोजनाओं पर खर्च होने वाला समय आदि।
  • क्या कोई तकनीकी प्रशंसा है? देखें कि प्रबंधन, पर्यवेक्षक और टीम के सदस्य एक-दूसरे के साथ कैसा व्यवहार करते हैं। मैं एक साक्षात्कार में गया हूं, जहां तकनीकी नेतृत्व के बोल शुरू होते ही प्रबंधक सभी प्रकार की भौं की हरकतें करते रहे हैं। उसके बाद और सीखने के बाद उन्होंने स्रोत नियंत्रण का उपयोग नहीं किया - आप मुझे तेजी से दरवाजा नहीं दिखा सके।
  • व्यवसाय का लक्ष्य? क्या कंपनी दिन-प्रतिदिन के वित्तीय लक्ष्यों की तरह दिन-प्रतिदिन जीती है, या क्या इसकी कोई दीर्घकालिक योजना है, जिसका आप हिस्सा हैं। सॉफ्टवेयर डेवलपमेंट आम तौर पर महीनों में किया जाता है इसलिए एक स्किज़ोफ्रेनिक प्रकृति वाली कंपनी आमतौर पर गन्दा सॉफ्टवेयर की ओर जाता है।
  • लगभग भारी खुदाई करें - जब तकनीकी प्रश्न पूछें और देखें कि क्या लोग फेरबदल करते हैं। स्रोत नियंत्रण, दस्तावेज़ नियंत्रण, रिलीज़ प्रक्रिया, बग रिपोर्ट, प्रबंधन शैली, T & C's, आदि।

इसलिए जियो और सीखो, और अपनी अगली भूमिका के बारे में सोचो। एक बुरा अनुभव होना यह सब बुरा नहीं है, क्योंकि आप काम और व्यवसाय की दुनिया में बेहतर शिक्षित होंगे।


4

ठीक है, मैं व्यवसाय में अपने दूसरे दशक में भाग रहा हूं, और मैं आपको बता सकता हूं कि एकदम साफ कोड बहुत कम होता है, और जब ऐसा होता है, तो यह लंबे समय तक नहीं रहता है। आप और बड़े आप खुद को लगातार अतीत की गलतियों को सुधारने का प्रयास करते हुए पाएंगे, जबकि (दुख की बात) समय की कमी और खराब नेतृत्व द्वारा वर्तमान की गलतियों को करने के लिए मजबूर किया जा रहा है।

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

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

मैं कल इस एक परियोजना के बारे में सोच रहा था। यह मेरे लिए एक स्पष्ट पाइप-सपना था, कि मैंने दरवाजे के बाहर बकवास का वास्तव में न्यूनतम कार्यात्मक टुकड़ा उछाल दिया। मैंने इसे समय और संसाधनों की बर्बादी के रूप में देखा।

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

दूसरी पुनरावृत्ति में कंपनी के भीतर वास्तव में आधी-असहाय तैनाती थी, और मैंने इसके बारे में एक और बात कभी नहीं सुनी, जो मनोरंजक है क्योंकि मुझे पता है कि कम से कम ~ 10 व्यावसायिक इकाइयां अभी भी इसका उपयोग कर रही हैं (सॉफ्टवेयर हम काम करने के लिए कमीशन कर रहे हैं लगभग 2 साल पीछे है) और जाहिर तौर पर यह कभी नहीं टूटता।

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


2

यह बता पाना कठिन है कि आप क्या कम गुणवत्ता वाले कोड मानते हैं, लेकिन हाँ कुछ प्रोग्रामर बहुत अच्छे हैं (परिभाषा के अनुसार)। जैसे ही सॉफ्टवेयर विकसित होता है, लोग गलतियाँ करते हैं। समय के साथ इनका निर्माण होता है, और व्यावसायिक दबाव (और प्रोग्रामर आलस्य / अज्ञानता) को दूर करता है ... असामान्य।


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

1
इसके अलावा, सॉफ्टवेयर विकास में 50-60 घंटे के सप्ताह मानक हैं?
प्रयासअनामनाम

2
केवल बुरी कंपनियों पर।
वेन मोलिना

2
बिल्कुल नहीं और इसीलिए यह काफी "निर्भर करता है" सवाल है। स्टार्टअप और पसंद पर? ज़रूर। प्लस एक बहुत अधिक! उच्च शिक्षा या गवर्नमेण्ट में, नहीं। परामर्श में, हाँ। साथ ही अधिक। वे सभी अन्य क्षेत्रों और लाभों और $ $ में अलग-अलग हैं
माइकल डुरंट

1
हाँ, आप पाएंगे कि आपको कार्यस्थल में विभिन्न जीवन शैली क्षतिपूर्ति कौशल की आवश्यकता होगी। निर्धारित घंटे, दोपहर का भोजन, देर से रहना बहुत अलग हैं। बाधाओं के भीतर छोटी चीजें खोजें जो उस दिए गए समय और एक अच्छे रवैये की मदद कर सकें और याद रखें, आप समायोजित करेंगे, और समय बीतने के साथ आपको अधिक सम्मान मिलेगा और चीजों को अपने तरीके से और / या करने के लिए अधिक शक्ति और अधिकार होगा। परिवर्तन प्राप्त करें।
माइकल डुरंट

2

वास्तव में सभी के लिए बात नहीं कर सकते, लेकिन यहाँ मैं क्या कह सकता हूँ।

मैंने डोमेन में 30+ साल काम नहीं किया है, लेकिन मैंने कुछ चीजें कहने के लिए पर्याप्त देखा। एक परियोजना का जीवनकाल मानव की तरह बहुत अधिक होता है। शुरुआती डिजाइन 20 साल के विकास के बाद एक परियोजना को कहने के लिए वर्तमान जरूरतों के अनुकूल नहीं हो सकता है। उस समय की राशि में कहा गया, बहुत से लोगों ने इसके साथ गड़बड़ किए गए कोड को बदल दिया और उन चीजों को जोड़ा जो पहले संभव नहीं थे।

विरासत परियोजनाओं या काफी पुरानी परियोजनाओं पर बदसूरत कोड की कल्पना करना वास्तव में मुश्किल नहीं है। हम प्रारंभिक डिजाइनों को पूरी तरह से समझने की उम्मीद नहीं कर सकते हैं। यह दुख की बात है लेकिन यह तरीका है।

उस ने कहा, आपको यह ध्यान रखना होगा कि विरासत परियोजना को फिर से बनाना हमेशा संभव नहीं होता है और कभी-कभी वांछित भी नहीं होता है। मैंने एक कंपनी में काम किया जहां वे उस परियोजना के लिए प्रतिस्थापन विकसित कर रहे थे जिस पर मैं काम कर रहा था। मुझे इस डर में अपनी परियोजना को बहुत अधिक परिष्कृत करने की अनुमति नहीं थी कि यह नई परियोजना से बेहतर काम करेगी। मुझे पूरा यकीन है कि कोई भी तरीका नहीं है कि यह प्रोजेक्ट कभी भी नए सिरे से बेहतर काम कर सके। वाक्यांश थोड़ा सा था जैसे "इसे बेहतर न बनाएं, बस इसे काम करें"।

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

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

यदि आप परियोजना को फिर से शुरू करते हैं, तो आप खराब डिजाइन विकल्पों के लिए इंगित किए जा रहे व्यक्ति को समाप्त कर सकते हैं! और फिर आप समझ सकते हैं कि क्यों refactoring अक्सर ऐसा नहीं होता है। उम्मीद है कि अगर पूरी टीम को फिर से मैदान में उतरना पड़े, तो किसी का ध्यान नहीं जाएगा। वे सभी को आग लगा देंगे =)


2

मैं इस प्रश्न का उत्तर एक सरल उद्धरण के साथ देने का प्रयास करूंगा:

All code turns to crap given enough time and hands.

बाकी सिर्फ कहानियां हैं ...


और कोड जो काम करता है, चाहे कितना भी बदसूरत क्यों न हो, उत्पादन में बहुत लंबे समय तक बना रहेगा जो मूल कोडर्स पर विश्वास करता है।
जेनिफर एस

2

कोड गुणवत्ता मुख्य रूप से दो कारकों पर निर्भर करती है।

पहला हमेशा पैसा है। जिन कंपनियों पर उच्च जीवित दबाव होता है, वे आमतौर पर कम वेतन का भुगतान करती हैं, कम अनुभवी डेवलपर्स को शामिल करती हैं, तंग कार्यक्रम रखती हैं और अपने डेवलपर्स का लाभ उठाने के लिए न तो समय और न ही पैसा।

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

तो उस कहावत के साथ, और इस तथ्य पर विचार करते हुए कि आपके पास हर कंपनी के बगल में विरासत कोड है, मैं कहूंगा कि आपको वास्तविक जीवन में बहुत कुछ मिलेगा। आप एक लड़के की तरह व्यवहार कर सकते हैं: जंगल में जाओ, कुछ कचरा उठाओ और इसे साफ करो। अगली बार आपके पास कदम बढ़ाने के लिए कम गड़बड़ होगी।


2

एक बजट के साथ कोड करने के लिए आपका स्वागत है! जब विकास प्रबंधन द्वारा बहुत जल्द किया जाता है, तो बिना किसी योजना के, और कटिंग कोनों के साथ धक्का दिया जाता है। जब मुझे कॉलेज से पहली प्रोग्रामिंग की नौकरी मिली, तो मुझे वास्तविक दुनिया के झटके का समान अनुभव था। कोई दस्तावेज नहीं! समय के साथ मैंने बहुत कुछ सीखा, औपचारिक दस्तावेज को लिखना और रखना आज तक का समय ही है। मेरे लिए सौभाग्य से, वह एक कमाल की टीम थी। यह एक ऐसे व्यक्ति के नेतृत्व में था जो जानता था कि वह क्या कर रहा था और टीम के अन्य सदस्यों को वास्तव में कोड को सही तरीके से लिखने के बारे में परवाह थी। तब से, मेरे अनुभव आपके जैसे ही रहे हैं। भयानक कोड के बहुत सारे, बहुत सारे बुरे कोड, बहुत सारे क्लूलेस "डेवलपर्स"। हर अच्छे डेवलपर के लिए, 100 बुरे लगते हैं।

आप हमेशा के लिए अपनी नौकरी से नफरत नहीं करते। आपको बस लंबे समय के लाभों को पहचानने के लिए एक कंपनी को स्मार्ट बनाना होगा जो थोड़ा आगे निवेश करने को तैयार हो। मैंने चीजों को सही तरीके से साबित करने में कामयाबी हासिल की है कि सबसे तेज़ तरीका फायदेमंद है और जिन कंपनियों में मैंने काम किया है, उनके लिए बहुत सम्मानित और भरोसेमंद बन गए हैं। समय के साथ, स्पेगेटी कोड तय हो जाता है या अप्रचलित हो जाता है और आपका कोड समाप्त हो जाता है। बस समझौता करने के लिए तैयार रहें। कभी-कभी किसी चीज़ की प्रोग्रामिंग करने का सबसे अच्छा या सबसे मज़बूत तरीका सिर्फ ओवरकिल होता है और इसे जल्दी और गंदे तरीके से करना ठीक होता है।


1

मुझे प्रमुख सॉफ्टवेयर कंपनियों में से एक के साथ इंटर्नशिप मिली

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

मुझे लगता है कि सोलारिस के दोस्तों ने कोड बेस के प्रकार का बहुत अच्छा और ईमानदार वर्णन किया है जो आपको बड़ी कंपनियों में मिलेगा: http://hub.opensolaris.org/bin/view/Community+Group+on/dev_solaris

मैंने अब तक हर दिन काम से नफरत करना छोड़ दिया है, और मैं यह जानना चाहता हूं कि क्या यह मेरे जीवन के बाकी हिस्सों में है।

नहीं, मैं 15 साल से अधिक समय से कोडिंग कर रहा हूं और मैं अब भी इसे पसंद करता हूं।

यह कहना नहीं है कि सब कुछ सही रहा है। मैंने कुछ भयानक कोड आधार देखे हैं और कुछ महान भी हैं। चाल आपके लिए सही जगह ढूंढना है।

एक बड़ी कंपनी एक छोटे से बहुत अलग है। एक ही कंपनी की टीम A के भीतर कभी-कभी बहुत भिन्न रूप वाली टीम B होती है। वह ढूंढें जिसके पास आपके लिए सही संतुलन हो (जैसे चुनौतीपूर्ण परियोजनाएं, एक संस्कृति जिसे आप आनंद लेते हैं, अच्छा वेतन, वगैरह)

सौभाग्य!


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

1

मैंने आपके जैसी ही चीजें देखी हैं। मेरे पास मामलों के दो अनुभव हैं जब यह होता है।

  1. जब विकास बहुत परियोजना संचालित है। केवल एक चीज जो समय पर कार्यक्षमता वितरित करने के लिए मायने रखती है, फिर साइन ऑफ करें। अगला परिवर्तन किसी अन्य व्यक्ति द्वारा, किसी अन्य टीम / परियोजना प्रबंधक द्वारा नए बजट के साथ किया जाएगा।
  2. जब सॉफ्टवेयर का एक टुकड़ा केवल कुछ लोगों द्वारा लंबे समय तक बनाए रखा जाता है, तो डेवलपर्स आलसी हो जाते हैं, क्योंकि वे किसी भी सॉफ्टवेयर के टुकड़े को जानते हैं। शैक्षणिक सिद्धांत दूर हैं।

यह दुखद है, लेकिन कुछ स्थानों पर ऐसा है।

देखें कि क्या आप बेहतर के लिए एक छोटा सा बदलाव कर सकते हैं, इसकी आदत डाल सकते हैं या किसी अन्य कंपनी में बदल सकते हैं और साक्षात्कार में कुछ कोड को स्क्रीन करने के लिए कह सकते हैं :-)


1

यह एक संक्षिप्त उत्तर होने जा रहा है।

आपको योग्य और आदर्शवादी बनाने के लिए शिक्षा बहुत उपयोगी है। यह एक अच्छी बात है, और आपको आदर्शवाद पर पकड़ बनाने की कोशिश करनी चाहिए।

यदि आप सभी उद्देश्य में हैं, और आप भविष्य में अपने काम पर वापस देख सकते हैं, तो यह एक बहुत ही अच्छा अनुभव नहीं है। जब तक आप अपने आप से झूठ नहीं बोलते हैं या आप कुछ भी नहीं सीखते हैं, तो आपने जो किया है उसे सुधारने के कई तरीके देखने जा रहे हैं।

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

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


1

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

तो हाँ, ऐसे स्थानों पर रहने वाले देवता बहुत अधिक देखभाल नहीं करते हैं। अगर वे करते तो वे वहां जीवित नहीं रह सकते थे। मैंने सुना है कि यह सिलिकॉन वैली के बारे में कहा गया है, कि यदि आप आलसी होना चाहते हैं, तो बड़े नामों में से एक के लिए काम करें। यदि आप रोमांचक काम चाहते हैं, तो एक और हालिया स्टार्टअप की तलाश करें जो अभी तक घर का नाम नहीं है। मैं शिकागो में काम करता हूं और यहां इसी तरह की घटना के लिए प्रतिज्ञा कर सकता हूं।

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

एक एंट्री-लेवल देव के रूप में आपके पास बहुत से नियंत्रण होने की संभावना नहीं है कि आप पहले किसके लिए काम करते हैं, लेकिन मैं कहूंगा कि एक साल के लिए आपके फिर से शुरू होने पर एक बड़ा नाम या लंबे समय तक निश्चित रूप से रिक्रूटर और एचआर लोगों को उत्तेजित करता है। इसके अलावा, आप काफी कुछ सीख सकते हैं जो आप सीखेंगे नहीं तो किसी के लिए काम करना पहले छह महीनों में पूरी तरह से भयानक हो जाएगा और यह आपको एक बेहतर पकड़ बनाने में भी मदद करता है जिस पर वास्तव में सबसे अच्छी प्रैक्टिस मायने रखती है और क्यों और कौन सी सिर्फ तकनीक है- fads।

और निश्चित रूप से जब आप अधिक मुख्य धारा के लोकप्रिय कॉर्पोरेट टूल के साथ काम कर रहे हैं, तो आप यह पता लगाने जा रहे हैं कि मध्ययुगीन प्रतिभा का स्तर बहुत ही कठिन होने वाला है। यदि आपके प्राथमिक कौशल जावा और सी # के कुछ संयोजन हैं, तो अपने क्षितिज का थोड़ा विस्तार करें। आपको मध्य-स्तरीय लेखन Erlang या Python या: o JavaScript में एक खुशहाल जगह मिल सकती है।

और किसी को भी आपको कोई अलग नहीं बताना चाहिए। तुम कैसे आगे बढ़ना है लेकिन बकवास कोड है के मामले में एक विकल्प नहीं हो सकता है! @ # $ महंगा महंगा है।


-2

आपका प्रश्न इंटर्नशिप पर केंद्रित है। मेरे पास कभी एक प्रोग्रामिंग नहीं थी, लेकिन एक रेडियो स्टेशन पर इंटर्न था, वास्तव में यहां लागू नहीं था।

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

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

जब भी आप मानक आदेशों का सीधा उल्लंघन किए बिना अच्छा कर सकते हैं, तो अच्छा करें। हमेशा याद रखें, कुछ ऐसा करने के लिए माफी मांगना आसान है जिसे आपने करने की अनुमति नहीं दी है, जिसकी अनुमति नहीं दी जानी चाहिए और प्रत्यक्ष आदेश के खिलाफ जाना चाहिए।

स्कूल में आपके द्वारा सिखाए गए मानकों को न भूलें। वे बेकार नहीं हैं, लेकिन उन मानकों से अधिक होने की संभावना है जो कैलकुलस सीमा में एसिम्पटोट हैं। आप हमेशा उनसे संपर्क करने का प्रयास कर सकते हैं, लेकिन आप कभी भी उनके मूल्य तक नहीं पहुँच सकते।

सौभाग्य।

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