वे इन चीजों को स्कूल में क्यों नहीं पढ़ाते? [बन्द है]


118

गर्मियों में, मुझे Google समर ऑफ कोड में आने का सौभाग्य मिला। मैंने बहुत कुछ सीखा (शायद मेरे सभी विश्वविद्यालय के शोध के योग में मैंने जितना सीखा है)। मैं वास्तव में सोच रहा हूँ कि वे कुछ चीजें क्यों नहीं सिखाते हैं जो मैंने स्कूल में जल्द ही सीखे। कुछ नाम है:

  • इकाई का परीक्षण
  • संस्करण नियंत्रण
  • तीव्र विकास

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

मुझे गलत मत समझो, मुझे नहीं लगता कि विश्वविद्यालयों के लिए हमेशा ट्रेंडिअस प्रोग्रामिंग फ़ेडिंग सिखाने के लिए यह वांछनीय है, लेकिन क्या मेरे प्रोफेसरों को "कोडिंग शुरू करने से पहले एक आरेख आकर्षित करने" के अलावा मुझे कुछ और नहीं सिखाना चाहिए?


47
मुझे लगता है कि अधिकांश शिक्षक वास्तविक दुनिया से लंबे समय से बाहर हैं कि वे नवीनतम रुझानों जैसे संस्करण नियंत्रण और इकाई परीक्षण के साथ अद्यतित नहीं हैं।
रयू

14
मुझे यकीन नहीं है कि संस्करण नियंत्रण को "नवीनतम प्रवृत्ति" कहना उचित है।
SCCS

2
वे इन चीजों को RIT में पढ़ाते हैं।
जियोवा 4

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

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

जवाबों:


188

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

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

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

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

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

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


44

क्योंकि हमारे शिक्षक:

  1. कभी इकाई परीक्षण की कोशिश की,
  2. पता नहीं कैसे संस्करण नियंत्रण का उपयोग करें और
  3. "चुस्त विकास" के बारे में भी नहीं सुना।

छात्रों को मामलों को अपने हाथों में लेना चाहिए। हमने ऐसा किया, और ठीक निकला, क्या हम नहीं?


3
"हमने ऐसा किया, और ठीक निकला, क्या हम नहीं?" - हम में से कुछ ... कुछ इस तरह से खो गए थे क्योंकि शिक्षक वह सब नहीं कर सकते थे।
आंद्रेई रोनेया

12
खैर शिक्षक जो भी करें, फिर भी लोग शिकायत करेंगे। तेज हमेशा ज्ञान के लिए भूख लगी है और होगा ठीक बाहर कर देते हैं।
जेफरी जोस

हमारे शिक्षक सॉफ्टवेयर डेवलपर नहीं थे, और हम सॉफ्टवेयर विकास में एक डिग्री के लिए नहीं जा रहे थे; हम - बड़े पैमाने पर - कंप्यूटर विज्ञान के लिए गए, जो एक अलग जानवर है, अभ्यास से अधिक सिद्धांत पर केंद्रित है।
डीन जे।

1
@ मिस्लाव: आपके शिक्षक कौन थे?
सीजरगॉन

43

लियोनार्डो दा विंची ने लिखा,

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

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


1
आप जो कहते हैं, मैं उसके मुख्य जोर से सहमत हूं, लेकिन मैं तर्क दूंगा कि समवर्ती रूप से कई संस्करणों के प्रबंधन की समस्या एक प्रमुख सिद्धांत तत्व है। इसके विपरीत, मैं सहमत हूँ कि इस समस्या को मजबूती से हल करने के लिए CVS और SVN जैसे उपकरणों का उपयोग "अभ्यास" के दायरे में आता है।
एंड्रयू स्वान

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

मेरे पास ऐसी टीम थी जिसे "टीम सॉफ्टवेयर प्रोजेक्ट" कहा जाता था। इसने संस्करण नियंत्रण को कवर नहीं किया, लेकिन इसने UML, सॉफ़्टवेयर डेवलपमेंट
मेथडॉलॉजी

@ एलन, आप किन स्कूलों की बात कर रहे हैं?
जीवनरक्षक

40

कंप्यूटर विज्ञान हमेशा कुछ विरोधाभासी रहा है; कंप्यूटर के बारे में जो हिस्सा है वह विज्ञान नहीं है, और जो भाग विज्ञान है वह कंप्यूटर के बारे में नहीं है।

विश्वविद्यालय 'विज्ञान' के अंत (एल्गोरिदम, डेटास्ट्रक्चर, संकलक, आदि) पर अधिक झुकाव करते हैं, क्योंकि वे चीजें वर्तमान उद्योग की सर्वोत्तम प्रथाओं की तुलना में बहुत अधिक 'कालातीत' हैं, जो वर्ष-दर-वर्ष विकसित होती हैं और बदलती रहती हैं। उदाहरण के लिए, संस्करण नियंत्रण में पिछले 5 या 10 वर्षों में आश्चर्यजनक परिवर्तन हुए हैं, लेकिन बड़े-ओ अभी भी बड़े-ओ हैं, और हैशिंग, बीटीएस और रिकर्सियन अभी भी उतने ही उपयोगी हैं जितने 40 साल पहले थे। उनका विचार आम तौर पर आपको पर्याप्त नींव देने के लिए होता है जिसे आप गिट जैसे उपकरण उठा सकते हैं और समझ सकते हैं कि इसका क्या मतलब है जब आपको बताया जाता है कि अंतर्निहित डेटास्ट्रक्चर SHA-1 हैश का एक चक्रीय निर्देशित ग्राफ है, और यह कि डेवलपर्स को यकीन है कि syscalls की संख्या को अनुकूलित करने के लिए ताकि वह io- बद्ध हो।

अब, इस बारे में सोचें कि आपने उस अंतिम वाक्य को समझने के लिए आपको कौन सी चीजें सीखनी थीं, जो आपको समझनी थीं - यदि उत्तर 'विश्वविद्यालय' है, तो वे एक अच्छा काम कर रहे हैं।


13

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

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

Tqm, Iso, Cmm, Agile, इत्यादि। ये सभी ऐसे झगड़े हैं जो वे आएंगे और वे जाएंगे, सफल लोगों में से कोई भी सामान्य ज्ञान से अधिक नहीं हैं। सभी सफल इंजीनियर और कंपनियां सामान्य ज्ञान के कुछ स्वाद का उपयोग करती हैं, यही उन्हें सफल बनाता है, कुछ को इसके लिए एक नाम की आवश्यकता होती है। समस्या यह है कि आप सामान्य ज्ञान नहीं बेच सकते हैं, एक प्रबंधक एक आकर्षक नाम के बिना सामान्य ज्ञान को प्रशिक्षण और खरीदकर कंपनी को उनके मूल्य को साबित नहीं कर सकता है। उस पर एक नाम रखें जो उनके वरिष्ठों ने किसी समाचार लेख या पत्रिका में पढ़ा है और प्रबंधक अपना काम करता है और आप अपना रखते हैं। इन प्रथाओं का पालन करने का दावा करने वाली बहुत कम कंपनियाँ वास्तव में ऐसा करती हैं। अधिकांश एक सलाहकार को एक चेक लिखते हैं, और अपने वार्षिक और आजीवन प्रमाण पत्र को किसी क्लब को प्राप्त करते हैं ताकि वे अपनी वेबसाइट पर एक ग्राफिक डाल सकें या जिस बॉक्स में उनका उत्पाद आता है, उस पर एक लेबल लगाया जा सके। कई लोग तर्क देंगे कि यह दुर्लभ है ... वहाँ रहा है, इसे देखा है, ऐसा होता है। यह सब व्यवसाय का हिस्सा है, आपको लाभदायक रहने और दरवाजों को खुला रखने और रोशनी के लिए कभी-कभी कोनों को काटना पड़ता है। इन सभी प्रथाओं के कट्टर अनुयायियों ने यह तर्क दिया है कि अंतिम एक सनक था और यह एक नहीं, अंतिम एक वास्तव में बहुत महंगा था, यह एक isnt का पालन करना था। पिछले एक नकली था जिसे आपने सिर्फ एक सलाहकार को काम पर रखा था, यह एक वास्तविक है। प्रोग्रामिंग भाषाओं की तरह, ये भी विकसित होंगे। पिछले एक नकली था जिसे आपने सिर्फ एक सलाहकार को काम पर रखा था, यह एक वास्तविक है। प्रोग्रामिंग भाषाओं की तरह, ये भी विकसित होंगे। पिछले एक नकली था जिसे आपने सिर्फ एक सलाहकार को काम पर रखा था, यह एक वास्तविक है। प्रोग्रामिंग भाषाओं की तरह, ये भी विकसित होंगे।

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

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

इन सवालों के कोई सार्वभौमिक उत्तर नहीं हैं, आपको यह पता लगाना होगा कि आपकी राय क्या है, इसके साथ रहें और इसका बचाव करें। अपना दिमाग बदलें, इसके साथ रहें और इसका बचाव करें।

सब कुछ पर सवाल करें ... क्या मैं स्टोव पर गर्म बर्तन को छूने पर वास्तव में जल जाएगा? क्या डर के मनोवैज्ञानिक प्रभाव सिर्फ जलने की तुलना में अधिक नुकसान पहुंचाएंगे? क्या चोट का सामना किए बिना जवाब का परीक्षण करने का एक सुरक्षित तरीका है?

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

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

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

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

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

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

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


12

जब ओरेगन इंस्टीट्यूट ऑफ टेक्नोलॉजी में मैं एक सहायक था, तब मैंने इन चीजों को पढ़ाया था। उन्हें सिखाया जाता है, बस बहुत कम।


कक्षा का शीर्षक क्या था?
डीन जे

11

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

कक्षाएं जो आपको संस्करण नियंत्रण सिखाती हैं, या प्रभावी इकाई परीक्षण कैसे लिखना है ... जो आपको एक व्यापार , अर्थात् (अच्छा) सॉफ़्टवेयर विकास सिखाएगा।


10

हे भगवान मुझे शुरू मत करो

मैं एक बार एक प्रतिष्ठित विश्वविद्यालय में सीएस का डीन था, मुझे बताता था कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सिर्फ एक 'सनक' थी, इसलिए उन्होंने सी ++ जैसे फैन्स को पास करने में कोई क्लास नहीं दी।

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


2
या इसे दूसरे तरीके से रखने के लिए, विश्वविद्यालय अपनी भूमिका (सही या गलत) व्यावसायिक प्रशिक्षण के बजाय अकादमिक शिक्षा प्रदान करने के रूप में देखते हैं। यही कारण है कि कई नए स्नातकों को वास्तविक-दुनिया प्रोग्रामिंग (उदाहरणनीय लेखन कोड) के शिल्प के बारे में बहुत कम पता है।
एंड्रयू स्वान

और अब वे सभी कई विश्वविद्यालयों में (कम से कम पहले कुछ वर्षों में) पढ़ाते हैं। आह, विडंबना।
मैथ्यू Schinckel

उन्होंने आपसे कब कहा कि OOP एक सनक था? जावा के आगमन तक, ओओपी आवश्यक ज्ञान की तुलना में एक सनक के करीब था।
एंड्रयू प्रोक

@ [ड्रूस्टर]: 1994, हालांकि मुझे लगता है कि आप जावा को बहुत अधिक श्रेय देते हैं। OOP प्रोग्रामिंग-भाषा के विकास में एक तार्किक प्रगति है; अपने इतिहास के किसी भी चरण में इसे "सनक" कहना (1994 में बहुत कम) सीएस डीन के लिए पीली से परे एक स्तर की अज्ञानता को इंगित करता है।
स्टीवन ए। लोवे

2
शैक्षणिक और वास्तविक दुनिया / व्यावहारिक के बीच झूठे द्वंद्ववाद के साथ क्या है? लगभग हर एक विचार जो आप अपने "वास्तविक दुनिया" कार्य में उपयोग कर रहे हैं, शैक्षणिक समुदाय से आया है या इसके द्वारा सुधार किया गया है। आपको क्या लगता है कि GOTO की कमी कहां से आई? 1967 में वैज्ञानिकों को कंप्यूटिंग से वस्तुएं मिलीं। सीएस के बहुत से लोग ओओपी के फायदों के बारे में स्पष्ट नहीं थे और यह अभी भी एक अनिर्दिष्ट बात है। उद्योग को लगता है कि इससे मदद मिलती है, लेकिन बहुत सी विफल परियोजनाएं हैं जो अन्यथा साबित होती हैं।

9

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

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

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


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

@ जीबीजे सहमत थे, मुझे नहीं पता था कि नौकरी पाने तक क्या संस्करण नियंत्रण था, और मैंने तुरंत लाभ देखा और इसे एक दिन की तरह सीखा। स्कूल IMO में पढ़ाने के लिए और भी बहुत सी महत्वपूर्ण बातें हैं।
temp2290

7

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


6

कंप्यूटर वैज्ञानिक सोचते हैं कि वे गणितज्ञ नहीं इंजीनियर हैं और इसलिए वे इंजीनियरिंग भागों की तुलना में गणित के भागों को पढ़ाना पसंद करते हैं। परीक्षण, संस्करण नियंत्रण और दस्तावेज़ीकरण किसी भी अन्य इंजीनियरिंग अनुशासन में होने की तुलना में किसी भी अधिक से अधिक गुजारें नहीं कर रहे हैं।


तो हमें केवल सॉफ्टवेयर इंजीनियरों को नियुक्त करना चाहिए और कंप्यूटर वैज्ञानिकों को नहीं? ;-)
एंड्रयू स्वान

अगर आपको लगता है कि उनमें से कोई भी चीज 'इंजीनियरिंग' की परिभाषा से मिलती है, तो मैं चिंतित हूं। वे स्कील की परिभाषा से मिलते हैं, इंजीनियरिंग से नहीं।
बेंजामिन आर

6

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

हालांकि उन्होंने यूनिट टेस्टिंग को बहुत विस्तार से कवर नहीं किया है, लेकिन सिर्फ एक लेक्चर के लिए इसे पास करने की सेवा का भुगतान किया है। यह जानना बहुत अच्छा होता कि कैसे प्रभावी इकाई परीक्षणों को लिखना है, बजाय केवल "एक इकाई परीक्षण क्या है"।

जहां तक ​​संस्करण नियंत्रण का संबंध है, हम 2 वें वर्ष से अपनी प्रोग्रामिंग परियोजनाओं में इसका (सीवीएस) उपयोग कर रहे थे।

मैं दृढ़ता से सहमत हूँ कि ग्लिफ़ ने क्या कहा था। सीएस एक ऐसा अपरिपक्व क्षेत्र है, जो वास्तव में पिछले 50 वर्षों में केवल इतना ही है, कि हम नहीं जानते कि हमें क्या सीखना चाहिए और केवल एक गुजरने वाली सनक है। इसे १५० साल दें, तब चीजें और अधिक व्यवस्थित हो सकती हैं। असफल realworld परियोजनाओं की संख्या यह स्पष्ट करती है कि यह एक अपरिपक्व उद्योग है। कल्पना करें कि 80% निर्माण परियोजनाएं विफल रहीं!


5

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

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

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

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


3

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

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


3

आपने 3 नाम दिए हैं, जिनमें से कुछ मुझे नहीं लगता कि कंप्यूटर सिस्टम (जैसे संस्करण नियंत्रण) की समझ के लिए लगभग महत्वपूर्ण हैं। ये चीजें एक नौकरी का हिस्सा हैं, और आप इसे जानने की आवश्यकता के बिना एक अच्छा प्रोग्रामर / कंप्यूटर वैज्ञानिक बन सकते हैं।

इकाई परीक्षण के लिए समान रूप से - इकाई परीक्षण क्यों चुनें? निश्चित रूप से प्रयोज्य परीक्षण, प्रणाली परीक्षण, उपयोगकर्ता स्वीकृति परीक्षण और कारखाना स्वीकृति परीक्षण अधिक महत्वपूर्ण है? जब तक रखरखाव विभाग को कोड भेज दिया जाता है, तब तक वे तब तक अपने काम को पूरा नहीं मानते हैं जब तक कि वे :)

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

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

उपरोक्त सभी "सॉफ्ट स्किल्स" हैं जिन्हें आपको अच्छा कोड लिखने की आवश्यकता नहीं है

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


2

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

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


बात यह है कि वे कक्षाएं कम से कम मेरे स्कूल में उच्च स्तर की कक्षाएं हैं। मुझे लगता है कि जिन चीजों को पढ़ाया जाना चाहिए उनमें से कम से कम या उन्हें मध्यवर्ती स्तर पर पढ़ाया जाना चाहिए।
जेसन बेकर

2

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

मुझे व्यक्तिगत रूप से लगता है कि यह ठीक है कि वे ऐसा कर रहे हैं। प्रोग्रामिंग उतना आसान नहीं है जितना कि हम में से कई इसे बनाते हैं; बहुत से लोग इससे जूझते हैं। मैं बल्कि इन लोगों को पहले समझ लेना होगा कि एक राक्षस के लिए लूप कैसे काम करता है, जिससे यह पता चलता है कि Perforce है।


2

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


2

मैंने फुर्तीले विकास के अपवाद के साथ, उस सभी सामान को नया साल सीखा।

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

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


2

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


2

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


1

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


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

1

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

इस तथ्य का तथ्य यह हो सकता है कि विश्वविद्यालय के प्राध्यापक नए विकास तकनीकों के साथ नहीं रखते हैं जितना उन्हें होना चाहिए। उन्हें यह भी महसूस हो सकता है कि उनके पाठ्यक्रम में अन्य, अधिक महत्वपूर्ण चीजें हैं।


1

विश्वविद्यालय के व्याख्याताओं को सॉफ़्टवेयर लिखने के तरीके के बारे में नहीं पता है, वे सिर्फ इस पर शोध करते हैं, इसे पढ़ाते हैं, और कभी-कभी कुछ कोड को निकालते हैं जो केवल पेपर प्रकाशित होने तक काम करना पड़ता है।

यह केवल टाइटस जैसे लोगों की वजह से है जो हमें कोई भी शिक्षाविद मिल रहे हैं, जो प्रोग्रामिंग को टटोल रहे हैं - उस विषय पर उनकी टिप्पणी यहां पढ़ें

जब मैं एक छात्र था तब मैंने लाइब्रेरी में एक्सट्रीम प्रोग्रामिंग के बारे में किताबें पढ़ीं, हमने कक्षाओं में इस पर गहन चर्चा की- वही कक्षाएं जिनकी हमने सॉफ्टवेयर विकास के "वाटरफॉल मॉडल" के अनुरूप है, जहां "संकलन" इसका एक चरण है खुद।

अपने करियर के साथ शुभकामनाएं, मुझे उम्मीद है कि आप अपनी डिग्री स्नातक करेंगे, आपके नाम के बाद पत्र होना अच्छा है। :)


1

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


1

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

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

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


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

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

ऐसा कोई कारण नहीं है कि आप अपने कोड यूनिट / स्वीकृति परीक्षणों को पास करते हैं या नहीं, इस पर आपको ग्रेड नहीं दिया जाता है।

1

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

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

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


1

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

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

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

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

और एक्सट्रीम प्रोग्रामिंग को मेरे द्वारा ली गई कक्षाओं में से लगभग 3 या 4 में शामिल किया गया था। मुझे याद है कि वे सभी 12 अलग-अलग पहलुओं के साथ शुरू हुए थे, जो कि पेयर प्रोग्रामिंग से लेकर यूनिट टेस्टिंग तक (ऊपर देखें)। और अब ऐसा लगता है कि फोकस एजाइल पर है।

तो इसका त्वरित उत्तर यह है कि वहाँ स्कूल ऐसे हैं जहाँ अधिक व्यावहारिक दृष्टिकोण है तो अन्य हैं।


1

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

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

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


1

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

संस्करण नियंत्रण और इकाई परीक्षण के तरीके कभी भी बदल रहे हैं और भाषा, या उन्हें परिभाषित करने वाले व्यक्ति पर निर्भर हैं।

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


हम्म मैंने सोचा कि कॉलेज और विश्वविद्यालय का मतलब एक ही था .. हालांकि एक देशी वक्ता नहीं।

इस बात पर निर्भर करते हुए कि आप अमेरिका में कहां हैं (देश के अनुसार) वे समान हैं, कनाडा में वे अलग हैं। मुझे लगता है कि जिन राज्यों को मैं कोलाज कहता हूं, उन्हें वास्तव में जूनियर कोलाज कहा जाता है। ऑस्ट्रेलिया में इसे
टैफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.