तुम्ही डॉक्युमेंटेशन वाचणे थांबवले आहे, म्हणूनच तुम्हाला सिस्टिम्स समजत नाहीत

मी विद्यापीठात कॉम्प्युटर सायन्सचा अभ्यास केला नाही. मी भूभौतिकी (geophysics) शिकलो.

मी वाचून सॉफ्टवेअर शिकलो. मी डॉक्युमेंटेशन, सोर्स कोड आणि GitHub इश्यूज वाचले. मी जुने ब्लॉग पोस्ट्स आणि RFC थ्रेड्स वाचले. मी कोणत्याही बूटकॅम्पचा वापर केला नाही. मी फक्त ब्राउझर आणि उपलब्ध माहितीचा (raw material) वापर केला.

जेव्हा मी Cloudflare Workers शिकलो, तेव्हा माझ्याकडे कोणताही कोर्स नव्हता. माझ्याकडे फक्त डॉक्स आणि चॅन्जलॉग (changelog) होते. रात्री १ वाजता बिघडलेले डिप्लॉयमेंट (deployment) ठीक करण्यासाठी मी बाइंडिंग कॉन्फिगरेशन तीन वेळा वाचले. मला कित्येक वर्षांपूर्वीच्या GitHub थ्रेड्समध्ये उत्तरे सापडली.

जोपर्यंत एखादी गोष्ट नीट समजली नाही, तोपर्यंत मी त्या माहितीसोबत बसून अभ्यास केला.

आता मला एक नवीन पॅटर्न दिसत आहे. लोक एखादा विभाग का गोंधळात टाकणारा आहे, हे विचारत नाहीत. ते फक्त 'X' साठी कोड मागतात. वर्तन (behavior) शोधण्यासाठी ते सोर्स कोडचा मागोवा घेत नाहीत. एखादे फंक्शन काय करते, एवढेच ते विचारतात.

पूर्वी उद्दिष्ट आकलन (comprehension) हे असायचे. आता उद्दिष्ट फक्त आउटपुट मिळवणे हे आहे. लोक याला कार्यक्षमता (efficiency) म्हणतात, पण प्रत्यक्षात हे एक प्रकारचे कर्ज (debt) आहे.

'half-open state' म्हणजे काय हे माहित नसतानाही तुम्ही 'circuit breaker' तयार करू शकता. ते तुमच्या टेस्टमध्ये काम करेल. पण सहा आठवड्यांनंतर, जेव्हा लोड वाढेल, तेव्हा ते प्रोडक्शनमध्ये फेल होईल. तुम्ही फेल होता कारण तुमच्याकडे कोणतेही मेंटल मॉडेल (mental model) नाही. तुम्हाला 'काय' (what) मिळाले, पण 'का' (why) हे समजले नाही.

'का' (why) हाच एकमेव महत्त्वाचा भाग आहे.

डॉक्युमेंटेशन वाचल्यामुळे मेंटल मॉडेल तयार होते. तुम्ही फुटनोट्समध्ये असलेले ट्रेडऑफ्स (tradeoffs) आणि एज केसेस (edge cases) पाहू शकता. वाचताना तुम्हाला जो संघर्ष किंवा अडथळा (friction) जाणवतो, तिथेच खरे शिक्षण होते.

जेव्हा मी Bookmark Brain बनवले, तेव्हा मला Cloudflare Vectorize समजून घेणे आवश्यक होते. मी फक्त API वापरले नाही. मी एम्बेडिंग डायमेन्शन्स (embedding dimensions), इंडेक्स बिहेवियर (index behavior) आणि क्वेरी डिस्टन्स मेट्रिक्स (query distance metrics) यांचा अभ्यास केला. मी HNSW पेपर वाचला. जोपर्यंत गोंधळ ज्ञानामध्ये रूपांतरित झाला नाही, तोपर्यंत मी त्यावर काम करत राहिलो.

ते ज्ञान माझ्या सिस्टिम्स प्रोडक्शनमध्ये चालू ठेवते. जर रात्री २ वाजता काही बिघडले, तर मला मार्गदर्शन करण्यासाठी माझ्याकडे मेंटल मॉडेल असते. जर मी फक्त प्रॉम्प्ट्सचा वापर केला असता, तर माझ्याकडे फक्त एक 'डेमो' असता, पण तर्क लावता येईल अशी सिस्टिम नसेल.

यामुळे इंजिनिअरिंगमध्ये एक दरी निर्माण होते.

  • कोड रिव्ह्यूमध्ये: एक डेव्हलपर ORM डॉक्स वाचल्यामुळे N+1 समस्या त्वरित ओळखतो. दुसरा डेव्हलपर ती misses करतो कारण त्याने फक्त कोड जनरेट केला असतो.
  • आर्किटेक्चरमध्ये: एक डेव्हलपर Kafka partitions आणि offsets समजून घेतो. दुसऱ्याला फक्त शब्द माहित असतात, पण स्ट्रक्चर माहित नसते.
  • डीबगिंगमध्ये: डीबगिंग हे तुमच्या मेंटल मॉडेलवर अवलंबून असते. मेंटल मॉडेलशिवाय, तुम्ही फक्त गोष्टी बदलत असता आणि काहीतरी चांगले होईल अशी आशा करत असता.

AI संपूर्ण आर्किटेक्चर हाताळू शकत नाही. ते तुमच्या संपूर्ण कोडबेसचा मोठा चित्र (big picture) पाहू शकत नाही. मी पाहिले आहे की, AI-जनरेटेड कॅशिंग लेयर्स (caching layers) सर्व टेस्ट पास करतात आणि नंतर प्रोडक्शनमध्ये क्रॅश होतात, कारण कोणत्याही मानवाला race conditions समजले नव्हते.

ही दरी AI वापरण्याबद्दल नाही, तर तुम्ही ते कसे वापरता याबद्दल आहे.

तुम्ही ते ट्रेडऑफ्स समजून घेण्यासाठी वापरता? की समजणे टाळण्यासाठी वापरता?

सर्वोत्तम डेव्हलपर्स फक्त वेगाने काम करत नाहीत. ते अजूनही चॅन्जलॉग्स आणि सोर्स कोड वाचत असतात. ते असे मेंटल मॉडेल तयार करत आहेत जे प्रॉम्प्टिंगद्वारे तयार करता येणार नाही.

डॉक्युमेंटेशन वाचणे हा एक सराव आहे. तो तुमच्या उत्पादकतेवर (productivity) लादलेला कर नाही. सिस्टिम बिघडल्यावर तुम्हाला अपरिहार्य (irreplaceable) बनवणारी गोष्ट तीच आहे.

जर तुम्ही वाचन टाळले, तर तुम्ही विचार करणेही टाळता. जोपर्यंत तुम्ही प्रोडक्शनमध्ये आधारहीन स्थितीत पोहोचत नाही, तोपर्यंत तुम्हाला याची जाणीव होणार नाही.

Source: https://dev.to/dannwaneri/you-stopped-reading-the-docs-now-you-dont-understand-the-systems-go1

Optional learning community: https://t.me/GyaanSetuAi