𝗧𝗵𝗲 𝗖𝗼𝗱𝗲 𝗔𝗜 𝗪𝗼𝗻'𝘁 𝗪𝗿𝗶𝘁𝗲
मी तांत्रिक मुलाखतीसाठी 'फॉर्म व्हॅलिडेशन' (form validation) चा प्रश्न वापरतो. हे दिसायला सोपे वाटते. लोक तो कसा सोडवतात यावरून त्यांची विचार करण्याची पद्धत समजते.
मी हा प्रश्न Claude, ChatGPT आणि Gemini वर तपासून पाहिला. त्या सर्वांनी एकच उपाय शोधला.
बहुतेक लोक तो सोडवण्यासाठी तीनपैकी एका पद्धतीचा वापर करतात:
- वेगवेगळ्या प्रकारांना हाताळण्यासाठी फ्लॅग्ससह (flags) एकाच फंक्शनचा वापर करणे.
- डेटाच्या रचनेमधून (data shape) जाण्यासाठी रिकर्शनचा (recursion) वापर करणे.
- व्हॅलिडेशनसाठी स्कीमाचा (schema) वापर करणे.
AI मॉडेल्सनी स्कीमा पद्धत निवडली. ती तांत्रिकदृष्ट्या सक्षम आहे. ती गहाळ कीज (missing keys) हाताळते. ती उत्तम प्रकारे स्केल (scale) होते. जर तुमचा डेटा रनटाइमला (runtime) बदलत असेल, तर स्कीमा हा योग्य पर्याय आहे.
पण बहुतेक सॉफ्टवेअरसाठी एक अधिक चांगला मार्ग आहे.
प्रत्येक गोष्टीसाठी एकच पॅटर्न शोधण्याचा प्रयत्न करण्याऐवजी, 'कंपोझिशन'चा (composition) वापर करा. प्रत्येक बिझनेस कन्सेप्टला (business concept) स्वतःचे स्वतंत्र फंक्शन द्या.
- एक बेसिक ॲड्रेस व्हॅलिडेटर (address validator) तयार करा.
- एक शिपिंग व्हॅलिडेटर (shipping validator) तयार करा जो बेसिक व्हॅलिडेटरचा वापर करेल.
- एक बिलिंग व्हॅलिडेटर (billing validator) तयार करा जो बेसिक व्हॅलिडेटरचा वापर करेल.
ही पद्धत रिकर्शन वापरत नाही. ती स्कीमा वापरत नाही. ती स्पष्ट आणि स्वतंत्र फंक्शन्स वापरते.
याचा फायदा साधा आहे. कोड व्यवसायाचे (business) प्रतिबिंब दर्शवतो. बिलिंग ॲड्रेस ही एक वेगळी संकल्पना आहे. तिला स्वतःच्या लॉजिकची गरज आहे. जेव्हा तुम्ही नवीन प्रकार जोडता, तेव्हा तुम्ही अस्तित्वात असलेले फंक्शन बदलत नाही. तुम्ही एक नवीन फंक्शन जोडता. यामुळे तुमचे बदल मर्यादित (local) राहतात.
AI क्वचितच हा मार्ग निवडते. ते लॉजिक केंद्रीकृत (centralize) करणारा पॅटर्न निवडते. आपले शिक्षण आपल्याला डुप्लिकेशन (duplication) काढून टाकण्यास आणि सामान्यीकरण (generalize) करण्यास शिकवते. AI याच संस्कृतीतून शिकते.
AI अपयशी ठरत नाहीये. ते फक्त त्याच इंजिनिअरिंगच्या उपजत प्रवृत्तींचे (engineering instincts) पालन करत आहे जी आपण त्याला शिकवली आहे.
सर्वोत्तम उपाय तो नाही ज्यामध्ये कोडच्या ओळी सर्वात कमी आहेत. तर तो आहे जो तुमच्या बिझनेस डोमेनचे (business domain) सर्वात प्रामाणिकपणे प्रतिनिधित्व करतो.
पुढच्या वेळी जेव्हा तुम्ही एखादा उपाय तयार कराल, तेव्हा स्वतःला एक प्रश्न विचारा:
ही विविधता माझ्या कोडमध्ये आहे की माझ्या डेटामध्ये?
याचे उत्तर तुमचे संपूर्ण डिझाइन बदलून टाकेल.
स्त्रोत: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb