पिछले 12 महीनों में आपके द्वारा सीखी गई सबसे महत्वपूर्ण, उपयोगी या ज्ञानवर्धक चीज़ क्या है? [बन्द है]


14

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

अब हर बार मैं किसी बात पर जाता हूं, या कोई किताब पढ़ता हूं, या किसी से बात करता हूं और वे थोड़ा और खुल जाते हैं और मुझे पता चलता है कि मैं इन जानकारियों से बहुत कुछ सीखता हूं।

इसलिए, अगर आपको पिछले 12 महीनों में से एक चीज चुननी थी, जो आपने सीखी थी कि वह क्या होगी?

जवाबों:


18

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


मार्टिन, मैं अपवित्र था क्योंकि आपका संदेश मुझे इस बारिश और ठंडी सुबह पर मुस्कुराहट देता है, लेकिन आप इस सवाल का जवाब नहीं देते;)

जोड़ा गया "मैंने सीखा है कि ..."
मार्टिन विकमन

+1 क्योंकि मैं इस महीने उन प्रोग्रामरों में से एक हूं। पिछले हफ्ते 70+ घंटे == "बैरल में मेरी बारी"।
डैन रे

मैं उस एक को पहचानता हूँ! यह बोली होना चाहिए! "यह पूरी परियोजना को खराब करने के लिए केवल एक सड़ा हुआ प्रबंधक लेता है, लेकिन बाद में गंदगी को साफ करने के लिए बहुत सारे अच्छे प्रोग्रामर लगते हैं।"
अमीर रज़ाई

12

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

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

शुद्ध जावा में एफपी करने के बारे में अधिक जानकारी यहां , यहां , यहां और यहां


+1 मैं सहमत हूं। यह दुखद है कि जावा के पास कार्यात्मक प्रोग्रामिंग के लिए इतना बुरा समर्थन है।
जोनास

मुझे एफपी (मेरी पहली नौकरी लिस्प) में लंबे समय से रुचि थी और मुझे लगता है कि यह बहुत ही रोमांचक है कि पिछले कुछ वर्षों में यह अंततः ओओ आदि के साथ-साथ एक सामान्य 'प्रतिमान' बन रहा है
फिनकॉन

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

मैं जावा / जेवीएम में पूंछ-पुनरावृत्ति के लिए बेहतर समर्थन करना चाहूंगा।
जोनास

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

10

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

संक्षेप में: राजनीति मायने रखती है, और कभी-कभी जो राजनीति आपको प्रभावित करती है, आप उसे नियंत्रित नहीं कर सकते।


मैं आपको एक आभासी +1 देता हूं क्योंकि मार्टिन पहले से ही मुझे इसी तरह के जवाब के साथ मुस्कुराता है;) क्या आपने डेड मार्च पढ़ा है? यह एक किताब है जिसके बारे में आप बात कर रहे हैं

(मैं वर्चुअल अप वोट को वास्तविक रूप में परिवर्तित करता हूं)

9

मैंने सीखा कि सॉफ़्टवेयर परीक्षण का उद्देश्य बग्स को खोजना है । यह सत्यापित नहीं करना है कि सिस्टम सही है।

खेल में महत्वपूर्ण मनोवैज्ञानिक कारक हैं: यदि आपका लक्ष्य यह दिखाना है कि कार्यक्रम "सही" है, तो आप उन परीक्षणों की ओर प्रवृत्त होंगे जिन्हें आप जानते हैं कि वे पास होंगे। लेकिन अगर आपका लक्ष्य बग ढूंढना है, तो आप उन परीक्षणों की ओर बढ़ेंगे जो आपके सिस्टम को वास्तव में सीमा तक धकेल देंगे।

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

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


8

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


ध्यान दें कि मुझे "रेरन लेटेस्ट यूनिट टेस्ट" को कुंजी से बांधने का कोई तरीका नहीं मिला। इसने इसे थोड़ा थकाऊ बना दिया।

5

अहंकारपूर्ण प्रोग्रामिंग का सही मूल्य।

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

हालांकि, ईमानदार होने के लिए, मैं अभी भी सीख रहा हूं कि अहंकार को कैसे छोड़ना है, और मैं शायद यह सीखूंगा कि अपने बाकी के प्रोग्रामिंग कैरियर के लिए कैसे करना है।


3

यहाँ मेरे अपने सवाल का जवाब है:

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


3

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


1
क्या आपके पास इसका एक उदाहरण है?
मार्क सी

बुक एलीमेंट ऑफ़ प्रोग्रामिंग में एक उदाहरण है जो एक ऐसे फ़ंक्शन का उपयोग करता है जो शक्तियों और कुछ फ़्रेग्मेंट सामानों की गणना करता है, जो ओ (लॉग एन) समय में फ़ाइब की गणना करता है। मुझे लगता है कि उदाहरण यहां पाया जा सकता है cpp-next.com/archive/2010/03/03/eop-ch3-preview , लेकिन वह वेबसाइट एक आंतरिक सर्वर त्रुटि के साथ प्रतिक्रिया करती है।
पीटर स्टुइफ़ज़ैंड

3

राजनीति के अलावा फ्रैंक शीयर ने उल्लेख किया है , मैंने हाल ही में क्वनीट और जेएससीओवरेज की खोज की है जिसने मेरा दिन बना दिया। और महीना। कभी नहीं सोचा था कि कोड कवरेज के साथ जावास्क्रिप्ट को यूनिट टेस्ट करना संभव होगा , लेकिन वहाँ यह है ... :-)


यह अगले साल के लिए मेरे रडार पर है, मैंने js यूनिट टेस्टिंग में थोड़ा सा डब किया है, लेकिन अभी तक किसी वास्तविक प्रोजेक्ट पर नहीं। वहाँ एक कवरेज उपकरण उपलब्ध नहीं था पता नहीं था!
फिनकेक

2

पिछले प्रोग्रामिंग वर्ष के लिए मेरा शीर्ष तीन धन्यवाद निम्नलिखित पर जाएगा (महत्व और कृतज्ञता के अवरोही क्रम में):

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

    (मेरी निजी धन्यवाद अपनी उत्कृष्ट पुस्तक रियल-वर्ल्ड फंक्शनल प्रोग्रामिंग के लिए टॉम पेटिक के पास जाते हैं ।)

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

    (अगर मुझे एक अच्छे शिक्षण संसाधन का उल्लेख करना होता, तो मैं रॉय ओशेरोव की आर्ट ऑफ़ यूनिट टेस्टिंग कहूँगा ।)

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


2

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


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

1

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

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


0

मैं कहूंगा कि Visual Studio 2010 के भीतर Microsoft इकाई परीक्षण का उपयोग कर रहा हूं।

मैंने पाया कि एक विशिष्ट परीक्षण विधि को डिबग करना वास्तव में आसान है।

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


0
  • बेसिक पायथन सीखी (कभी-कभी त्वरित स्क्रिप्ट लिखने के लिए इसका उपयोग करना)

  • VM में ArchLinux स्थापित है (पहले वीएम में Ubuntu था, मेरा पीसी अब तेज है!)

  • MATLAB के साथ शुरू किया (विशेष रूप से रेखांकन और त्वरित संख्यात्मक जांच की साजिश रचने के लिए)

  • Mercurial पर स्विच किया गया (SVN से) (ब्रांचिंग और मर्जिंग!)



-1

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


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