एंबेडेड सॉफ्टवेयर डेवलपर कैसे बनें?


22

मैं उन लोगों के लिए कुछ सुझाव चाहूंगा जो एक अच्छा एम्बेडेड सॉफ़्टवेयर डेवलपर बनना चाहते हैं या इस क्षेत्र में सुधार करना चाहते हैं।

हार्डवेयर, सॉफ्टवेयर के बारे में मुझे क्या सीखना चाहिए?

कौन सी किताबें सबसे अधिक अनुशंसित हैं? ब्लॉग?

अंत में, मैं एक शुरुआती पेशेवर से एक उत्कृष्ट पेशेवर तक कैसे जा सकता था?

जवाबों:


39

अब तक सभी उत्तर अच्छे रहे हैं, लेकिन मैं अपने दो सेंट में फेंक दूंगा।

यहाँ कुछ युक्तियों को एक मोड़ और कुछ अतिरिक्त के साथ दोहराया गया है:

  • C जानें: हार्डवेयर की मूलभूत भाषा जो अभी भी पोर्टेबल है (कुछ डिग्री भी)। बस इसे मत सीखो, लेकिन यह सभी के लिए एक विशेषज्ञ बन गया है जैसे कि यह अस्थिर है और यह डिवाइस ड्राइवरों को लिखने के लिए क्यों महत्वपूर्ण है।
  • Arduino की तरह एक अच्छी विकास किट के साथ शुरुआत करें, लेकिन जैसा कि अन्य आर्किटेक्चर सीखने से पहले एक बार आप इसके लिए अच्छा अनुभव प्राप्त कर लें। सौभाग्य से अन्य प्रोसेसर के साथ निर्मित कुछ Arduino संगत बोर्ड हैं, इस तरह आप एक अलग यूसी पर एक ही डिज़ाइन को फिर से लिख सकते हैं और कुछ नया महसूस नहीं करते हुए अपने पूरे डिज़ाइन को गड़बड़ कर सकते हैं।
  • सीखने के चरण में, डिवाइस चालकों या कोड के अन्य टुकड़ों पर पहिया को फिर से आविष्कार करने के लिए स्वतंत्र महसूस करें। बस किसी और के ड्राइवर कोड को वहां पर न रखें। जब आप सीख रहे हों तब पहिये का फिर से आविष्कार करने में मूल्य होता है।
  • गति और स्मृति उपयोग के संदर्भ में अपने कोड को अधिक कुशलता से फिर से लिखने के लिए अपने आप को चुनौती दें।
  • एम्बेडेड सिस्टम सॉफ्टवेयर आर्किटेक्चर की विभिन्न शैलियों से परिचित होना। बुनियादी बाधित चालित / पृष्ठभूमि लूप प्रसंस्करण के साथ शुरू करें, फिर पृष्ठभूमि अनुसूचियों, फिर वास्तविक समय ऑपरेटिंग सिस्टम तक बढ़ें।
  • अच्छा स्रोत नियंत्रण प्राप्त करें! मैं खुद मर्क्यूरियल पसंद करता हूं।
  • यहां तक ​​कि अपने प्रोजेक्ट को होस्ट करने के लिए Sourceforge.net या Bitbucket.org जैसी कुछ मुफ्त स्रोत नियंत्रण होस्टिंग साइटों के लिए साइन अप करें, भले ही आप उस पर काम कर रहे हों। वे आपके कोड को वापस कर देंगे, इसलिए आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि कभी-कभी हार्ड ड्राइव क्रैश सब कुछ नष्ट कर देता है! एक वितरित वीसीएस का उपयोग करने से काम आता है, क्योंकि आप अपनी हार्ड ड्राइव में बदलाव की जांच कर सकते हैं, फिर तैयार होने पर होस्ट साइट पर अपलोड कर सकते हैं।
  • आप जिस भी चिप पर काम कर रहे हैं, उसके लिए अपने टूल को अच्छी तरह से जानें! यह जानना कि संकलक असेंबली कैसे बनाता है, यह आवश्यक है। आपको यह महसूस करने की आवश्यकता है कि कोड कितना कुशल है, क्योंकि आपको असेंबली में फिर से लिखना पड़ सकता है। लिंकर फ़ाइल का उपयोग करना और मेमोरी मैप आउटपुट की व्याख्या करना भी जानना आवश्यक है! आप यह कैसे जान सकते हैं कि आपने जो दिनचर्या लिखी है, वह बहुत अधिक रोम / फ्लैश लेने का अपराधी है!
  • नई तकनीकों को जानें और अपने डिजाइनों में उनके साथ प्रयोग करें!
  • डिबगिंग के दौरान कुछ भी न मानें। इसे सत्यापित करें!
  • त्रुटियों को पकड़ने और मान्यताओं को सत्यापित करने के लिए रक्षात्मक कार्यक्रम करने का तरीका जानें (जैसे मुखर का उपयोग करके)
  • अपने कोड में डिबगिंग जानकारी बनाएँ जहाँ आप मेमोरी खपत या कोडिंग को टाइमर के साथ आउटपुट कर सकते हैं या O- स्कोप पर रुकावट विलंबता को टॉगल करने और मापने के लिए uC पर स्पेयर पिन का उपयोग कर सकते हैं।

यहाँ कुछ किताबें हैं:

यहाँ कुछ वेबसाइटें हैं:

  • एंबेडेड गुरु
  • गन्सल ग्रुप जैक गन्सल के पास बताने के लिए कुछ अद्भुत ऐतिहासिक कहानियां हैं। लेख पढ़ें। वह हालांकि कुछ चीजों के बारे में थोड़ा उपदेश देता है।
  • Embedded.com Ganssle, बर्र, और अन्य उद्योग के विशेषज्ञों से नवीनतम तकनीकों और सुझावों के लिए अच्छा जानकारी।

1
@ एडम: मुझे वह किताब बहुत पसंद है! व्यावहारिक प्रोग्रामर! मैं विश्वास नहीं कर सकता कि मैं इसे भूल गया!
जे। एटकिंसन

1
मर्क्यूरियल के लिए +1। मुझे यह पसंद है, हालांकि मुझे इस बात का एहसास है कि git के साथ प्रवीणता अधिक मूल्यवान होगी। एसवीएन के साथ मूल बातें जानना महत्वपूर्ण है यदि आप योगदान करना चाहते हैं या अन्य परियोजनाओं से खींच सकते हैं, जैसा कि उनमें से कई उपयोग करते हैं।
tyblu

17
  • याद रखें, "कोई चांदी की गोली नहीं है" , यह विश्वास करने के जाल में मत पड़ो कि एक उपकरण, कार्यप्रणाली, भाषा या प्रणाली है जो सभी समस्याओं को हल कर सकती है
  • C में एक विशेषज्ञ बनें
    • बिना Malloc () और POSIX द्वारा प्राप्त करना सीखें
  • एक वास्तुकला पर लटका मत करो, दुर्घटना से PIC या AVR या ARM फैनबॉय बनना आसान है
  • सामान बनाएँ, इसे डीबग करें, इसे काम करें। अभ्यास परिपूर्ण बनाता है
  • कम से कम एक स्रोत नियंत्रण प्रणाली (SVN / git / etc) सीखें और इसका उपयोग करें
  • अपनी मान्यताओं का परीक्षण करने के लिए हमेशा तैयार रहें। बग आमतौर पर उस चीज में होता है जिसे आप काम मान रहे हैं
  • डीबगर्स पर बहुत अधिक निर्भर न हों, वे हर सिस्टम पर और अलग-अलग विश्वसनीयता पर अलग हैं
  • मितव्ययिता से सोचें। समस्या हल करते समय, कोड पदचिह्न, रैम पदचिह्न और हार्डवेयर लागत के बारे में सोचें

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

किसी भी चीज की तरह रोजाना अभ्यास करें।


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

मैं एक स्रोत नियंत्रण प्रणाली के बिना अपने जीवन की कल्पना नहीं कर सकता। मैं वर्तमान में भी SVN का उपयोग करता हूं। मुझे नहीं पता कि एसवीएन को जानने से पहले मैंने कैसे काम किया।
डैनियल ग्रिलो

1
+1 के लिए "बग आमतौर पर उस चीज में होता है जिसे आप काम कर रहे हैं"
JustJeff

"बिना मल्लोक द्वारा प्राप्त करना सीखें" - क्यों? स्टैक / हीप टकराव के जोखिम को कम करने के लिए?
rzetterberg

@rzetterberg कई एम्बेडेड सिस्टम गतिशील मेमोरी आवंटन के उपयोग से बचते हैं क्योंकि यह विखंडन और अनिश्चितता को जन्म दे सकता है
टॉबी जाफ़े

8

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

सुनिश्चित करें कि आपका कोड पठनीय और रखरखाव योग्य है।

और कुछ मज़ा करने के लिए मत भूलना :)


7

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


3

'एंबेडेड' थोड़ा भरा हुआ शब्द है।

कुछ मामलों में, किसी भी सिस्टम को एक ही एप्लिकेशन को चलाने के लिए समर्पित किया जा सकता है, जिसे एक एम्बेडेड सिस्टम कहा जा सकता है, जब तक कि कुछ हार्डवेयर को नियंत्रित किया जाना है। यदि आप स्थानीय I / O मॉड्यूल के माध्यम से एक प्रक्रिया को नियंत्रित करने के लिए होता है, तो आप यकीनन 400MHz PPC604 को 2GB RAM के साथ जावा एप्लिकेशन को कॉल कर सकते हैं। दूसरी ओर, एक arduino बस किसी प्रकार का न्यूनतम नेटवर्क अनुप्रयोग चलाने से एक एम्बेडेड सिस्टम की अधिकता नहीं होगी। लेकिन शायद 'एंबेडेड' ज्यादातर लोगों को फ्लैश आधारित नियंत्रकों के बारे में सोचता है जो केवल कुछ सौ बाइट्स रैम के साथ होते हैं, बोलने के लिए कोई ऑपरेटिंग सिस्टम नहीं है और ऑन-चिप बाह्य उपकरणों की अधिकता है।

यह कहा जा रहा है, शायद दो सबसे बड़ी बाधा गैर-एम्बेडेड प्रोग्रामर आमतौर पर सीखने वाली एम्बेडेड सिस्टम I / O रजिस्टर और इंटरप्ट होते हैं।

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

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

इन चीजों को सीखने के लिए वास्तव में कोई विकल्प नहीं है कि किसी की आस्तीन को रोल करें, और नंगे धातु पर सीधे सी और / या असेंबली भाषा को प्रोग्राम करें। यहां तक ​​कि उपर्युक्त जावा आधारित एम्बेडेड सिस्टम को अंततः I / O के लिए एक डिवाइस ड्राइवर की आवश्यकता होती है, और इसका मतलब अंततः कुछ C. अनुभव के साथ काम करना सबसे अच्छा शिक्षक है। एक माइक्रोकंट्रोलर चुनें, यह MSP430, TMS320, AVR, ARM, PIC, 68HC11, जो भी हो, एक eval किट ढूंढें, और कुछ सिस्टम बनाएं।


3

$50to$लेकिन आप समर्थक मिनी के लिए मिलाप की जरूरत है। मैं PIC परिवार का प्रशंसक नहीं हूं, लेकिन आप इतिहास के सबक के रूप में वहां कुछ प्राप्त करना चाहते हैं, वही 8051 के लिए चला जाता है, दोनों परिवार अभी भी लोकप्रिय हैं और उपयोग में हैं, बस बहुत कुशल नहीं हैं और अन्य आर्किटेक्चर द्वारा पारित कर दिया गया है। पूरी तरह से एआरएम और अंगूठे सीखें, शायद एमआइपी (जो कि एक तस्वीर -32 है, पुराने मूल पीआईसी वास्तुकला के साथ भ्रमित नहीं होना चाहिए)। ARMmite Pro एक अच्छा एंट्री लेवल ARM बोर्ड है, हालाँकि Stellaris भी हो सकता है।

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

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


3

यह लेख (पुर्तगाली से अंग्रेजी में ऑटो-अनुवादित) में एम्बेडेड सॉफ़्टवेयर के डेवलपर के रूप में कैरियर विकसित करने का अच्छा अवलोकन है। नोट: मूल यहाँ है

यह आपके द्वारा विकसित किए जाने वाले ज्ञान के क्षेत्र को रेखांकित करके शुरू होता है:

  1. ज्ञान: आपको एम्बेडेड सिस्टम में शामिल सिद्धांत को जानना चाहिए। इसका अर्थ है हार्डवेयर और सॉफ्टवेयर। हार्डवेयर आर्किटेक्चर जो काम कर रहा है, उसे जाने बिना एम्बेडेड सॉफ़्टवेयर का एक सक्षम डेवलपर होना असंभव है।

  2. कौशल: आपको क्षेत्र में अनुभव प्राप्त करने की आवश्यकता है। अभ्यास की जरूरत है। आप सभी PIC असेम्बलर निमोनिक्स को सजा सकते हैं, लेकिन इसका कोई फायदा नहीं है अगर आप इस ज्ञान के साथ एलईडी ड्राइव नहीं कर सकते हैं।

  3. दृष्टिकोण: इन सबसे ऊपर, आपको उन दृष्टिकोणों की आवश्यकता है जो आपको इस क्षेत्र में विकसित करेंगे। यह लगातार परिवर्तन और विकास के साथ एक बहुत ही गतिशील है। आपको हमेशा प्रेरित (ए) स्वयं-सिखाया जाना चाहिए, सीखने का आनंद लें, "ट्वीक" करें और समझें कि चीजें कैसे काम करती हैं। इस तरह के रवैये के बिना आप जल्द ही दे देंगे। क्योंकि इस क्षेत्र में आपको बहुत, बहुत लगातार रहने की आवश्यकता है।

यह तब इन क्षेत्रों में महारत हासिल करने के लिए निम्नलिखित टिप्स देता है (और उन्हें आगे के पाठ के साथ विकसित करता है, ये सिर्फ शीर्षक हैं):

  1. आपको हार्डवेयर सीखने की क्या आवश्यकता है (कम से कम)
  2. आपको सॉफ्टवेयर सीखने की क्या आवश्यकता है (कम से कम)
  3. इसके अलावा, ऑपरेटिंग सिस्टम का अध्ययन करें
  4. आपको एक प्रशिक्षण की आवश्यकता है
  5. बंद न करें, सीखते रहें और अपनी नेटवर्किंग विकसित करें!

1
लिंक के लिए धन्यवाद! Google अनुवाद से लगता है कि यह इस प्रश्न के लिए एकदम सही है। हालाँकि, हम चाहते हैं कि (1) पाठ अंग्रेजी में हो (हम एक अंग्रेजी भाषी समुदाय हैं , भले ही हममें से बहुत से लोग कम से कम द्विभाषी हैं) - ऑटो-ट्रांसलेशन केवल तभी करें जब आपको उत्तर देना हो (2) लिंक मृत हो जाने की स्थिति में लेख का सारांश। मैंने आपके पोस्ट को इन दिशानिर्देशों का पालन करने के लिए संपादित किया है, और आपको इसके लिए एक upvote दिया है!
केविन वर्मर

2

एक एम्बेडेड सॉफ्टवेयर इंजीनियर बनने से पहले दो बार सोचें। मैंने अपने करियर में चरणों में काम किया है। मैंने सॉफ्टवेयर को पहले 5 वर्षों में विकसित किया है, बिक्री / विपणन की ओर बढ़ने की तुलना में, 15 वर्षों के लिए, 100 + एम $ व्यवसाय का प्रबंधन किया और अब मैं सॉफ्टवेयर में वापस आ गया हूं।

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

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

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

अगर यह सब चेक किया जाता है, तो उन सभी महान पुस्तकों को पढ़ने की तुलना में, अभ्यास करें और आप एक महान इंजीनियर बनाएंगे .. शुभकामनाएँ


1

बाकी सभी महान बातें कहते हैं। तो मैं आपको सामान्य सलाह दूंगा: रीड रीड रीड रीड रीड रीड रीड रीड!

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

सिर्फ पढ़ें!


0

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

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