संपूर्ण प्रोग्रामिंग दर्शन: सिद्धांत, प्रथाएँ और पेशेवर विकास | मूल, AI द्वारा अनुवादित
विषय सूची
- प्रोग्रामिंग
- रचनात्मक गतिविधि के रूप में प्रोग्रामिंग
- व्यक्तिगत परियोजना विकास
- प्रौद्योगिकी रुझान और जिज्ञासा-संचालित सीखना
- डिबगिंग और समस्या-समाधान दर्शन
- उपयोगकर्ता-केंद्रित विकास
- कोड गुणवत्ता और सादगी
- एआई एकीकरण और स्वचालन
- असीमित इंजीनियर बनें
- कॉर्पोरेट बाधाओं के भीतर काम करना
- आंतरिक संसाधनों का अधिकतम उपयोग
- एआई युग में उपकरण निर्माण
- मानसिकता परिवर्तन
- कथित सीमाओं को तोड़ना
- लॉग जमा करने के लाभ
- कॉर्पोरेट वातावरण में लॉग प्रबंधन
- ऐतिहासिक संदर्भ और समस्या-समाधान
- लॉग फाइल संगठन रणनीतियाँ
- दीर्घकालिक परियोजना रखरखाव
- ज्ञान संरक्षण और साझाकरण
- स्वचालित लॉग संग्रह विधियाँ
प्रोग्रामिंग
-
जब तक यह आपको प्रेरित करता है, प्रतिस्पर्धात्मक प्रोग्रामिंग करना ठीक है।
-
प्रोग्रामिंग लेखन की तरह है। प्रोग्रामिंग एक रचनात्मक गतविधि है।
-
अपनी खुद की परियोजना करें। अपना तकनीकी ब्लॉग लिखें। एक ऐसी परियोजना के लिए प्रोग्राम करें जिसे आप वर्षों तक बनाए रखेंगे, जैसे कि 10 साल लंबा ब्लॉग बनाए रखना।
-
आमतौर पर, आपको अभी प्रौद्योगिकी में जो चलन में है उसका पीछा करने की आवश्यकता नहीं है, क्योंकि कई रुझान कुछ वर्षों बाद फीके पड़ जाएंगे।
-
अपनी जिज्ञासा का पीछा करें और अपने लिए प्रोग्राम करें।
-
अपने लिए प्रोग्राम बनाने का प्रयास करें। वे कार्य असाइनमेंट नहीं हैं।
-
यदि आप प्रोग्रामिंग करते समय अक्सर दुखी महसूस करते हैं, तो आप इसे गलत तरीके से कर रहे हैं।
-
iOS, Android, बैकेंड, फ्रंटेंड, AI सभी अच्छे हैं। कोई भी कम से कम उनका उपयोग करके एक छोटी परियोजना बनाने या उनके बारे में कुछ महीनों तक सीखने का प्रयास कर सकता है।
-
डिबगिंग संदेह करने के बारे में है। अपने कोड की हर पंक्ति पर भरोसा न करें; आप इसे करने का एक बेहतर तरीका सोच सकते हैं।
-
प्रोग्रामिंग में, एक वर्ण या लॉग की एक पंक्ति भी महत्वपूर्ण है। वे आपको कुछ बताते हैं।
-
प्रोग्रामिंग का उपयोग करने से दूसरों के उपयोग के लिए उत्पाद बनते हैं। उपयोगकर्ता होना दिलचस्प है।
-
आपको कठोर होने की आवश्यकता नहीं है। कुछ सौ उपयोगकर्ता जो आपके उत्पाद से वास्तव में प्यार करते हैं, उन दसियों हज़ार उपयोगकर्ताओं से बेहतर हैं जो बस दयापूर्वक आपके उत्पाद को पसंद करते हैं।
-
याद रखें कि आप प्रोग्रामिंग में क्यों आए थे और इसे कभी न भूलें।
-
प्रोग्रामिंग में ज्ञान को जीवन के हर पहलू में लागू करें। वे एक समान हैं। चीजों को बैचों में या एक-एक करके करना। नौकरियों को इकाइयों में कैसे अलग करें। हर ऐप के पीछे की अंतर्निहित तकनीक। नेटवर्क अनुरोधों के पीछे के सूक्ष्म विवरण।
-
अमूर्त और तार्किक सोच। विस्तार-उन्मुख सोच। हर समाधान के बारे में सोचना।
-
सत्य सत्य है। आमतौर पर, कंप्यूटर गलत नहीं होगा। विद्युत सर्किट गलत नहीं होगा। कंपाइलर गलत नहीं होगा। बग होने पर दुखी न हों।
-
सुरुचिपूर्ण और सरल समाधानों का पीछा करें। सादगी ही परिष्कार की चरम सीमा है। आवश्यक को छोड़ने और अतिरिक्त को हटाने के लिए आपको कठिन सोचने की आवश्यकता है।
-
प्रोग्रामिंग भाषाओं के लिए, जो भाषाएँ काम पूरा करती हैं वे ठीक हैं। मैं व्यक्तिगत रूप से Java और Python की सलाह देता हूँ।
-
यिन वांग को https://www.yinwang.org पर फॉलो करें। वह प्रोग्रामिंग में कुछ गिने-चुने प्रतिभाशाली लोगों में से एक हैं, हालांकि वह कहते हैं कि प्रतिभाशाली कभी अस्तित्व में नहीं होते।
-
प्रोग्रामिंग का ज्ञान और सिद्धांत भाषा सीखने, हार्डवेयर मरम्मत, जीवन हैकिंग और वैज्ञानिक शोध में आसानी से लागू किया जा सकता है।
-
अधिकांश प्रोग्रामिंग कार्यों के लिए, आपको हाई स्कूल गणित के अलावा किसी फैंसी गणित की आवश्यकता नहीं है।
-
वर्षों बाद अपने पुराने कोड पर विचार करें या लंबे समय तक एक कोड परियोजना को बनाए रखें। यह आपको बहुत कुछ सिखाएगा।
-
यदि आप प्रोग्रामिंग के लिए अपना जुनून खो देते हैं, तो कुछ समय के लिए बस और काम करें।
-
परीक्षण का समय महत्वपूर्ण है। बस इसे स्वाभाविक रूप से करें। आपको अक्सर अपनी परियोजना के लिए टेस्ट लिखने की आवश्यकता नहीं होती है। टेस्ट न लिखने, यूनिट टेस्ट लिखने, इंटीग्रेशन टेस्ट लिखने, API टेस्ट लिखने का प्रयास करें। उन्हें बुद्धिमानी से तुलना करें।
-
AI कोड एडिटर्स आज़माएँ। ChatGPT या अन्य चैटबॉट्स का अक्सर उपयोग करें। चूंकि अब AI टूल्स का उपयोग करना आसान है, आप अधिक रचनात्मक या महत्वपूर्ण भागों पर ध्यान केंद्रित कर सकते हैं।
-
डिबगिंग करते समय, जांचें कि क्या आप पुस्तकालयों के नवीनतम संस्करण का उपयोग कर रहे हैं। यदि कोई पुस्तकालय अनुरक्षित नहीं है, तो सक्रिय रूप से अनुरक्षित क्लोन या फोर्क खोजें।
-
नेटवर्क गति या प्रोग्राम चलाने के समय जैसी किसी चीज़ को सुधारते समय, एक मात्रात्मक मीट्रिक होनी चाहिए। अन्यथा, आपको पता नहीं चलेगा कि क्या वास्तव में कोई तुच्छ सुधार या गिरावट हुई है।
-
व्यक्तिगत परियोजनाओं के लिए, टेस्ट कोड न लिखना ठीक है, लेकिन कोड की एक महत्वपूर्ण मात्रा को बदलने के बाद स्थानीय परीक्षण करना बेहतर है। प्रभावित कोड, क्लाउड पाइपलाइन में चलने में कितना समय लगेगा, और इससे कितनी बार त्रुटियाँ हो सकती हैं, इस पर विचार करें और फिर तदनुसार टेस्ट कोड लिखें। ऐसे तरीकों का उपयोग करें जो उपयोगकर्ता अनुभव को नकारात्मक रूप से प्रभावित किए बिना आसान परीक्षण की अनुमति दें।
-
सरल और सुरुचिपूर्ण कोड लिखें। डुप्लिकेशन को कम से कम करें, हालांकि कभी-कभी डुप्लिकेशन एक सरल समाधान की ओर ले जाता है। विशेष मामलों को कम से कम करें। परीक्षण करना आसान बनाएं। सामान्य कार्यों या प्रक्रियाओं का उपयोग करने के लिए रिफैक्टर करें, पुनरावृत्ति या लूप का उपयोग करें, और पैटर्न खोजें।
-
त्रुटियों को ठीक से संभालें। मूल कारण, जिम्मेदारी, और क्या हम इसे बदल सकते हैं या यह एक बाहरी त्रुटि है, इसके बारे में सोचें। बचाव विधि, प्रभाव क्षेत्र, इसे कहां संभालना है, क्या हमें त्रुटियों को वर्गीकृत करना चाहिए, यह होने की संभावना कितनी है, और सबसे खराब स्थिति पर विचार करें।
-
replace का उपयोग करने या startWith के बाद slice का उपयोग करने के बीच अंतर यह है कि पहला स्ट्रिंग की स्थिति को नजरअंदाज करता है। प्रोग्रामिंग के हर विवरण पर इसी तरह की सोच लागू करें।
-
एक आइटम के लिए संभावित मूल्यों को कम से कम करें; एक मामले के लिए बस एक मूल्य का उपयोग करें। यदि हमारे पास पहले से ही false है तो null का उपयोग न करें। यदि हमारे पास एक अनुवादित true या false फ्लैग है, तो हमें यह सुनिश्चित करने की आवश्यकता है कि हर बार जब हमारे पास एक अनुवादित फ्लैग हो, तो हम अनुवादित फ्लैग की अनुपस्थिति को false के रूप में न समझें।
-
GitHub या Sourcetree का उपयोग करके बदले गए कोड ब्लॉक्स को अक्सर समीक्षा करें। वे कोड पढ़ने के लिए अधिक सुविधाजनक हैं।
-
प्रोग्रामिंग में, अक्सर कोई तुच्छ चीजें नहीं होती हैं। हर वर्ण, सूची आइटम का क्रम, हर स्ट्रिंग, हर संख्या, और हर चर नाम मायने रखता है। हर निष्पादन क्रम और हर लॉग मायने रखता है।
-
वह करें जो आपको सबसे अधिक उत्साहित करता है। मुख्यधारा का अनुसरण न करने की चिंता करने की कोई आवश्यकता नहीं है।
-
कमांड्स का अक्सर उपयोग करें, क्योंकि वे कार्यों को स्वचालित करने या LLMs के साथ सहायता करने में मदद कर सकते हैं। UI इंटरफ़ेस ऑपरेशन्स को स्वचालित करना कठिन है।
-
एक प्रोग्राम के लॉग्स, जिसमें स्थानीय, UAT, माइक्रोसर्विसेस, और पाइपलाइन लॉग्स शामिल हैं, को एक डायरेक्टरी में सेव करें। प्रोग्रामिंग में, इन लॉग्स में कई कनेक्शन होते हैं। संबंधों की पहचान करने के लिए उनमें खोजें, प्रासंगिक डेटा या संदर्भ एकत्र करें।
-
एकत्रित लॉग्स के साथ, जब आप किसी समस्या का सामना करते हैं, तो यह निर्धारित करना आसान होता है कि क्या आप इसे पहले भी देख चुके हैं। पिछले लॉग्स से, आप जान सकते हैं कि इसे कैसे ठीक किया जाए। लॉग्स सब कुछ कैसे काम करता है और कंप्यूटर प्रोग्राम को कैसे निष्पादित करते हैं, इसकी बेहतर समझ प्रदान करते हैं। कोड के विपरीत, लॉग्स समय-संबंधित होते हैं और चलने की स्थिति के बारे में अधिक जानकारी प्रदान करते हैं। वे डिबगिंग के लिए अधिक हल्के भी होते हैं।
-
डिबगिंग बहुत सारी जानकारी दिखाती है, जिसमें आसपास के वेरिएबल्स के मूल्य, थ्रेड नाम और फंक्शन स्टैक्स शामिल हैं।
-
सब कुछ स्वचालित करें, जैसे प्रॉक्सी अपडेट और सर्वश्रेष्ठ Proxy सर्वर का चयन। Python का उपयोग करके स्क्रिप्ट्स को व्यापक रूप से लिखें।
-
चीजों को सरल रखें, फंक्शन्स को छोटा रखें, और फाइल्स को छोटा रखें। यह उन्हें एक नमूने के साथ टेस्ट, सत्यापन और जाँच करने में आसान बनाता है।
-
यह AI युग है, इसलिए AI टूल्स का उपयोग करके पूर्ण परीक्षण और सब कुछ यथासंभव सही बनाएं। अपवादों को पहले ही उठाएँ। कोड के लिए टेस्ट जोड़ें और उन्हें हर दिन पाइपलाइन में चलाएँ। गलतियाँ ठीक हैं, लेकिन एक ही गलती दो बार न करें। कोड जाँच के साथ इसे रोकें।
असीमित इंजीनियर बनें
-
बड़ी कंपनियाँ सख्त डेटा सुरक्षा नीतियाँ लागू करती हैं जहाँ कर्मचारी या ठेकेदार पहले सप्ताह में लैपटॉप प्राप्त करते हैं और छोड़ते समय उन्हें वापस कर देते हैं।
-
परियोजनाओं में कई विवरण शामिल होते हैं, लेकिन कर्मचारी अक्सर अपने काम के दौरान सूचना भूल जाते हैं, खासकर एक साल या अधिक समय के बाद छोड़ने पर।
-
अनुभव से यादें परियोजना की रूपरेखा, टीम इंटरैक्शन और LinkedIn कनेक्शन शामिल होती हैं, लेकिन सख्त सूचना नियंत्रण के कारण कोई दस्तावेज़ीकृत रिकॉर्ड नहीं रहता।
-
ऐसी कंपनियों में पहला ठेकेदारी अनुभव परेशान करने वाला हो सकता है, जिससे सॉफ्टवेयर इंजीनियरिंग अधिक चुनौतीपूर्ण हो जाती है और काम पर महत्वपूर्ण प्रभाव पड़ता है।
-
हाल ही में, मैंने यह समझ लिया है कि आंतरिक संसाधनों का लाभ उठाकर पर्यावरण को असीमित कैसे महसूस कराया जाए, भले ही यह वास्तव में असीमित न हो।
-
हजारों सॉफ्टवेयर विकल्प उपलब्ध हैं, खासकर Windows पर कंपाइलर, जिससे स्क्रिप्ट्स और छोटे टूल्स बनाना संभव है।
-
जितने संभव हो उतने पुस्तकालय और प्रोग्रामिंग भाषाएँ सीखें; आंतरिक रूप से दी गई चीजों का अधिकतम उपयोग करें।
-
Go, Rust, C/C++ बिल्ड टूल्स, npm के साथ JavaScript, और C# जैसी भाषाओं के लिए समर्थन मौजूद है, अधिक ज्ञान के साथ लचीलापन बढ़ता है।
-
AI युग में, Python स्क्रिप्ट्स का उपयोग करके Postman जैसे कस्टम टूल्स बनाएँ या यदि टूल्स में सुविधाओं की कमी हो तो डेटाबेस स्क्रिप्ट्स लिखें।
-
AI का उपयोग करके कार्यों को स्वचालित करें, जैसे टेस्टिंग के लिए Selenium स्क्रिप्ट्स या परफॉरमेंस टेस्टिंग स्क्रिप्ट्स।
-
बड़ी कंपनियों में सीमित महसूस करने की प्रारंभिक भावनाएँ मानसिकता से उभरती हैं, क्योंकि नीतियाँ चीजों का निर्माण करने या प्रभावी ढंग से काम करने से नहीं रोकती हैं।
-
जीवन में, कथित सीमाएँ अक्सर पर्याप्त गहराई से न सोचने से उत्पन्न होती हैं; अधिक प्रयास करने से अद्वितीय विचार प्राप्त हो सकते हैं।
-
बड़ी कंपनियों में असीमित इंजीनियर बनने का मतलब समग्र रूप से असीमित व्यक्ति बनना है।
लॉग जमा करने के लाभ
जब मैंने पहले एक बैंक के लिए ठेकेदार के रूप में काम किया था, तो हम माइक्रोसर्विसेस की सेवा के लिए एक मल्टी-क्लाउड एप्लीकेशन प्लेटफ़ॉर्म का उपयोग करते थे। उस समय, मैंने कंपनी में काम करते समय लॉग जमा करना शुरू किया।
कई साल बीत चुके हैं, और मुझे अभी भी लगता है कि यह मेरे काम या सॉफ्टवेयर इंजीनियरिंग में मदद करने का सबसे अच्छा तरीकों में से एक है। समय बीतने के साथ, मेरे लॉग डायरेक्टरी में सैकड़ों लॉग फाइल्स हैं।
मेरे पास उनके लिए विशिष्ट सबडायरेक्टरीज़ या औपचारिक लॉग फाइल नाम नहीं हैं। कभी-कभी, मैं उस JIRA टास्क नाम को अपने लॉग फाइल नाम उपसर्ग या उस फीचर के रूप में उपयोग करता हूँ। और फिर मैं प्रत्यय में एक संख्या जोड़ देता हूँ। यह म्यूचुअल-फंड-1.log, म्यूचुअल-फंड-2.log आदि जैसा होता है। इसका मतलब है कि म्यूचुअल फंड माइक्रोसर्विस में, मेरे पास उस माइक्रोसर्विस को चलाते समय वह लॉग है।
कभी-कभी, जब मैं उन प्रोजेक्ट्स पर काम कर रहा होता हूँ जो कई क्षेत्रों की सेवा करते हैं, तो मैं उस देश को प्रत्यय के रूप में जोड़ दूँगा, जैसे म्यूचुअल-फंड-cn-1.log, म्यूचुअल-फंड-sg-1.log। लॉग्स की फाइल नाम किसी तरह आकस्मिक होते हैं। क्योंकि उस समय, मुझे त्रुटि स्टैक्स या आसपास के फंक्शन कॉलिंग पर ध्यान केंद्रित करने की आवश्यकता होती थी।
प्रोग्राम्स के लॉग्स मायने रखते हैं। हर कोई जान