क्या कौशल का सेट है जो हर प्रोग्रामर को कॉलेज से स्नातक होना चाहिए? [बन्द है]


9

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


मैं आपको विश्वविद्यालय से स्नातक करने का मतलब मान रहा हूं?
माइकल शॉ

1
@Ptolemy: राज्यों में कॉलेज शब्द सही है।
मैकनील

1
अपने आप को गधे में मारना और टेक्स्ट-मैसेज को अनलंकृत करना, आप युवा दंड देंगे! socializedpr.com/…
नौकरी

जवाबों:


27

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


इसे बेहतर नहीं कह सकते थे।
क्रिस

4

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

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

  2. जानते हैं कि इसे हल किया जा सकता है । मुझे हमेशा आश्चर्य होता है जब किसी डेवलपर को कोई समस्या होती है। सीखने के लिए सीखने का हिस्सा सरल सिद्धांत है कि समस्याएं आसानी से घुलनशील होती हैं, हमेशा। एक बार जब आप यह जान लेते हैं, तो यह आपके उत्तर को खोजने के लिए आपकी सोच को फ्रेम करता है।

  3. सड़न को समझें । न केवल समस्याओं को हल किया जा सकता है, बल्कि ऐसा करने का मार्ग भी उतना ही सरल है जितना कि विभाजन और जीत। सरल घटकों के लिए एक समस्या को कम करें, और आपका जवाब हमेशा खुद को प्रस्तुत करेगा।

  4. जानते हैं कि कैसे को मापने के लिए । समस्याओं को कम करने में सक्षम होने के अलावा, नए डेवलपर्स को यह जानना होगा कि इन समस्याओं के बारे में तथ्यों को कैसे इकट्ठा किया जाए। कितना लंबा? कितना बड़ा? कितना तेज? कितने? सरल तथ्य समझ और उद्देश्य की सोच के लिए एक कदम है। तथ्यों के बिना धारणा बनाना समस्या स्थान में खो जाने का एक आसान तरीका है।

  5. उद्देश्य हो । सभी समस्याओं को विघटित, मापा और बस समझा जा सकता है। जिन समस्याओं को नहीं समझा जा सकता, उन्हें केवल अतिरिक्त अपघटन, माप और समझ की आवश्यकता है। क्रोधित या निराश होने का कोई फायदा नहीं है, न ही यह सिद्धांतों या स्थान दोष के बारे में बहस करने के लिए उत्पादक है। समस्याओं को हल करने की प्रक्रिया से संबंधित कोई भी तर्कहीन व्यवहार या विश्वास जहर है, जिससे समाधान ढूंढना बहुत मुश्किल है।

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


1
  1. अच्छी तरह से प्रोग्रामिंग के लिए एक जुनून
  2. विनम्रता
  3. नई चीजों को जल्दी सीखने की क्षमता

0

एक नियोक्ता के रूप में, मैं केवल प्रोग्रामर के रूप में लोगों को रोजगार दूंगा:

  1. कोड के माध्यम से एकल कदम का अनुभव है।
  2. एक साधारण विशिष्ट समस्या को हल करने के लिए एक उपयुक्त डिज़ाइन पैटर का चयन कर सकते हैं।
  3. कोड को लागू कर सकते हैं जो उनके चुने हुए डिज़ाइन पैटर को दर्शाता है।

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

अन्य अच्छे शौकीन हैं:

  • टीम प्रोजेक्ट पर काम करने का अनुभव
  • स्रोत नियंत्रण का उपयोग
  • यूनिट परीक्षण का अनुभव

ये मौजूदा विकास टीम के साथ अपने एकीकरण को आसान बनाते हैं, लेकिन ऐसे विषय हैं जिन्हें आम तौर पर काम पर सिखाया जा सकता है।


0

मेरे पास एक बार एक टीम थी जो मुझे ज्यादातर नए स्नातक कर्मचारियों के साथ "विरासत में मिली" थी और मुझे अपना अनुभव था कि जो लोग वहाँ अध्ययन करने के लिए "अगला" थे (कुछ अतिरिक्त पैसे कमाने के लिए) सबसे सक्षम टीम के सदस्य थे। इसलिए अनुभव की कुंजी है और यह केवल कम ही बात करता है कि भाषा क्या है।

हालाँकि यदि आप यह देखते हैं कि भर्ती करने वाले क्या देख रहे हैं (सभी सामान्य भर्ती साइटों जैसे jobserver.com आदि) तो यह देखना दिलचस्प है कि C ++, C #, Java के लिए बहुत कुछ पूछा जा रहा है, लेकिन वहाँ भी दूसरों की तलाश की जा रही है। COBOL जैसी "विदेशी" चीजें अभी भी आसपास हैं।


0
  1. पारस्परिक और संचार कौशल
  2. व्यावहारिक दृष्टिकोण (शैक्षणिक सिद्धांत नहीं)
  3. एक ग्राहक के रूप में सोचने की क्षमता जो तकनीकी रूप से इच्छुक नहीं है
  4. लागत / लाभ के संदर्भ में, क्या महत्वपूर्ण है और क्या अवहेलना की जा सकती है, इसका मूल्यांकन करने की क्षमता
  5. एक टीम में काम करने की क्षमता
  6. रणनीतिक रूप से सोचने की क्षमता: आर्किटेक्चर, एक्स्टेंसिबिली, स्केलेबिलिटी
  7. यह स्वीकार करने का खुलापन कि विश्वविद्यालय की शिक्षाओं का वास्तविक दुनिया के साथ बहुत कम संबंध है (विश्वविद्यालय पर निर्भर करता है - इस पर कुछ किराया बेहतर है)।

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


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

@dbkk - मैं आपसे क्षमा चाहता हूं, लेकिन सवाल यह नहीं था कि "प्रोग्रामर के पास स्नातक करने के लिए क्या कौशल हैं" लेकिन "क्या ... होना चाहिए"। इसके अलावा, नहीं, वे आसानी से प्राप्त नहीं होते हैं। इसके विपरीत - अधिक बार नहीं, वर्षों के अनुभव वाले लोग अभी भी उनमें से अधिकांश को याद कर रहे हैं।
Rook

1
ये सामान्य कौशल हैं, और कई स्कूल में सीखने के लिए उपयुक्त नहीं हैं।
डेविड थॉर्नले

-1

अन्य उत्तर अच्छे हैं, लेकिन मैं कहूंगा कि विश्वविद्यालय में # 1 अनदेखी कौशल वास्तविक सॉफ्टवेयर इंजीनियरिंग लगती है ।

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

यह ऐसा है जैसे हमारे विश्वविद्यालय लगभग सॉफ्टवेयर इंजीनियरों के बजाय कोडर्स को मंथन करना चाहते हैं । मैं कभी भी किसी ऐसे व्यक्ति को नौकरी नहीं दूंगा जिसने इंजीनियरिंग में कुछ कौशल / प्रतिभा प्रदर्शित नहीं की है।


4
क्योंकि लोगों को जो सिखाया जाता है वह कंप्यूटर साइंस है, न कि सॉफ्टवेयर इंजीनियरिंग। यह समस्या तब दूर हो जाती जब विश्वविद्यालयों और छात्रों को एहसास होता कि कंप्यूटर विज्ञान! = सॉफ्टवेयर इंजीनियरिंग, कंप्यूटर विज्ञान एक विज्ञान है, कंप्यूटर विज्ञान प्रोग्रामिंग के बारे में नहीं है, और सॉफ्टवेयर इंजीनियरिंग प्रोग्रामिंग से अधिक है।
थॉमस ओवेन्स

-1। यह सीखना कि कैसे चीजें हुड के तहत काम करती हैं (संकलक, ओएस, असेंबली भाषा, आदि) महत्वपूर्ण है भले ही आप वास्तव में कभी इस स्तर पर काम न करें, क्योंकि आप कुछ बिंदु पर लीक सार का सामना करेंगे।
dsimcha

@dsimcha, यदि आप मानते हैं कि, आपके पास बहुत ही संकीर्ण दृष्टिकोण है कि वास्तविक दुनिया में कंपनियों द्वारा अभी किस प्रकार के सॉफ़्टवेयर इंजीनियरों को नियोजित किया जा रहा है। ऐसा नहीं है कि उन चीजों का कोई मूल्य नहीं है - यह कुछ और आवश्यक नहीं सिखाने का अवसर लागत है।
निकोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.