सीखने, विकास और प्रोडक्टिविटी जैसे विषयों पर इन दिनों लगातार सोचते हुए मुझे यह सवाल जिज्ञासापूर्ण लग रहा है.
आगे बढ़कर, आपके हिसाब से एक अच्छे डेवलपर और एक बेहतरीन डेवलपर में क्या फर्क होता है?
आप चाहें तो 'डेवलपर' की जगह उस भूमिका/पद को रखकर भी जवाब दे सकते हैं, जिसमें आप हैं या जिसे आप अच्छी तरह जानते हैं. (e.g., Tech Lead, CTO, CEO, founder, designer, PM, ...)
मेरे विचार से बेहतरीन डेवलपर्स में मोटे तौर पर ये तीन समानताएँ होती हैं.
-
समस्या की पहचान: वे ऐसी चीज़ें भी खोज लेते हैं जिन्हें दूसरे लोग समस्या के रूप में पहचानते तक नहीं, और सुधार की संभावनाएँ ढूँढ़ते हैं.
-
समस्या की परिभाषा: वे समस्या की स्थिति और उसके कारणों को बहुत अलग-अलग स्तरों और दृष्टिकोणों से देखते हैं, और अब तक के अनुभवों को पैटर्न में बदलकर समस्या को कहीं अधिक आसान (या अधिक प्रभावी, अधिक मूलभूत) समस्या में रूपांतरित कर देते हैं.
-
समस्या का समाधान: वे कई संभावित solutions सोच सकते हैं, हर solution के trade-offs को समझते हैं, और मौजूदा संगठनात्मक स्थिति के अनुसार सही solution चुनते हैं. उन्हें यह भी पता होता है कि किस समय कौन-से संकेत देखकर उस निर्णय को बदलना है. और वे छोटे-छोटे चरणों में, तेज़ी से feedback मिल सके ऐसे तरीकों से समाधान लागू करते हैं.
7 टिप्पणियां
फ़ैशन सेंस शून्य.
अगर कोई कॉमन बात कहनी हो, तो मेरे दिमाग में बस यही आती है.
आधा मज़ाक, आधा सच है.....haha
मूल रूप से मैं भी मानता हूँ कि developer वह व्यक्ति है जो समस्याएँ हल करता है.
ज़रूरी नहीं कि बात को सिर्फ developer तक सीमित किया जाए, लेकिन मैं मानता हूँ कि असाधारण लोगों की एक खास पहचान 'connections' होती है.
ज्ञान, अनुभव, ideas वगैरह बहुत-सी चीज़ें दिमाग में होती हैं, और मुझे लगता है कि यह महत्वपूर्ण है कि कोई व्यक्ति उन्हें कितनी अच्छी तरह जोड़ पाता है.
जब कोई समस्या दिखती है, तब उसका समाधान सूझना पहली तरह का connection है,
लेकिन समस्याओं को आपस में जोड़कर जटिल परिस्थितियों की कल्पना करना और अलग समाधान ढूँढना भी connection है,
और solutions तथा ideas की कई चीज़ों को जोड़कर उससे अधिक सरल, लचीला और बेहतर समाधान बना लेना भी connection ही है.
मुझे लगता है कि सिर्फ development ही नहीं, बल्कि development और business के पहलुओं को जोड़कर सोचना, या बिल्कुल असंबंधित चीज़ों को आपस में जोड़ना, आज के दौर में बहुत महत्वपूर्ण क्षमता है.
मैंने Facebook पर भी यह सवाल पूछा था, और Kim Chang-jun ने टिप्पणी में कहा कि इस पर एक research paper देखना चाहिए। अब लग रहा है कि यह बात पहले क्यों नहीं सूझी।
2015 का “What Makes a Great Software Engineer?” नाम का paper 150 बार cite किया गया है, इसलिए मैं इसे पढ़ने की सोच रहा हूँ।
https://ieeexplore.ieee.org/abstract/document/7194618
spilist2 नमस्ते! मुझे लगता है मैंने आपका सवाल Facebook पर भी देखा था :) यह चिंता मेरे मन में भी हमेशा रहती है, क्या आप बता सकते हैं कि paper की सामग्री में कुछ ऐसा है जिसे आप recommend करना चाहेंगे?
शायद यह पेपर PhD thesis (dissertation) है, और PDF के हिसाब से यह पूरे 300 पेज का है। https://digital.lib.washington.edu/researchworks/bitstream/…
इसलिए अभी मैं सिर्फ chapter 2 तक ही (introduction, related works) पढ़ पाया हूँ, लेकिन यहाँ तक भी इसकी सामग्री मुझे बहुत पसंद आई है। वाक्य भी आसान ढंग से लिखे गए हैं। सिफारिश करता हूँ।
आपके साझा किए गए पेपर में मुझे लगा कि अध्याय 6 सबसे अहम है, इसलिए मैंने उसे पढ़ा haha कंटेंट बहुत अच्छा है! इससे मुझे एक बार फिर खुद पर भी सोचने का मौका मिला!! haha धन्यवाद.
मैंने सवाल उछालकर Google पर खोजा तो कुछ लेख दिखे।
10x engineersजैसा एक कीवर्ड भी दिखा।https://linkedin.com/pulse/great-engineer-vs-good-marissa-fayer-mba/
अच्छा डेवलपर समस्याओं को हल करने के लिए खास tools रखता है। अच्छा डेवलपर व्यवस्थित और तार्किक होता है, हर कोण से देखता है, और हर संभव input/output का विश्लेषण करता है।
उत्कृष्ट डेवलपर ऊपर बताए गए सभी कौशलों के आधार पर, इन्हें तुरंत इस्तेमाल किए जा सकने वाले solutions पर लागू करता है। पहले से ज्ञात patterns (science और math के principles, lean development principles आदि) को रचनात्मक तरीकों से नई real-world समस्याओं पर लागू करता है।
सबसे उत्कृष्ट डेवलपर्स सुनना जानते हैं। वे समस्या को सुनते हैं, stakeholders और जिन चीज़ों को वे value देते हैं उन्हें सुनते हैं, market को सुनते हैं, feedback को सुनते हैं। और रचनात्मक तरीकों को सोच निकालने वाली अपनी अंदरूनी आवाज़ को भी सुनते हैं।
==
https://www.quora.com/How-do-you-identify-a-good-vs-great-engineer
जवाब बहुत ज़्यादा हैं.. उनमें से सिर्फ कुछ high-vote वाले देखें तो
(conveyor belt पर पंखा लाकर खड़े व्यक्ति का उदाहरण देते हुए) आलसी इंसान हमेशा काम न करने का तरीका ढूंढता है। आलसी engineer ही सबसे अच्छा engineer होता है।
अच्छा engineer उससे मांगी गई समस्या को हल करता है। कभी-कभी अपनी technical क्षमता बढ़ाने के लिए classes भी लेता है। उत्कृष्ट engineer मांगी गई चीज़ से एक कदम आगे जाता है।
लोगों को सवाल होता है तो वे उसी के पास जाते हैं।
लगातार सीखता रहता है।
जो जानता है उसे लगातार साझा करता है।
जिसे सही मानता है उस पर कायम रहता है, लेकिन यह भी जानता है कि कब छोड़ देना चाहिए।
हाथ गंदे करने से नहीं डरता।
यह भी जांचता है कि क्या बाकी systems में भी ऐसा ही bug है (या वह पहले ही ठीक किया जा चुका है)।
ऐसा long-term solution या design सुझाता है जो भविष्य में वैसी ही bug दोबारा होने से रोक सके। (हर solution के बीच cost/benefit analysis संलग्न)
अपनी expertise के दायरे से बाहर भी नज़र डालता है, यह देखने के लिए कि क्या दूसरे groups ने भी ऐसी समस्या झेली है। (या उनसे पहले ही संपर्क किया जा चुका है)