𝗧𝗵𝗲 𝗖𝗼𝗱𝗲 𝗔𝗜 𝗪𝗼𝗻'𝘁 𝗪𝗿𝗶𝘁𝗲

मी तांत्रिक मुलाखतीसाठी 'फॉर्म व्हॅलिडेशन' (form validation) चा प्रश्न वापरतो. हे दिसायला सोपे वाटते, पण उत्तरे पाहून लोकांची विचार करण्याची पद्धत समजते.

मी हा प्रश्न Claude, ChatGPT आणि Gemini वर तपासून पाहिला. त्या सर्वांनी सारखीच उत्तरे दिली.

बहुतेक लोक वेगवेगळ्या पत्त्यांचे (addresses) व्यवस्थापन करण्यासाठी 'type parameter' सह एकच फंक्शन वापरतात. ते काम करते. पण प्रत्येक नवीन नियमामुळे त्याच फंक्शनमध्ये एक नवीन 'branch' जोडला जातो. यामुळे त्यातील फरक स्पष्टपणे दिसत नाहीत.

मी पाहिलेले सर्वात हुशार मानवी उत्तर 'रिकर्शन' (recursion) वापरणारे होते. ते डेटाच्या रचनेमधून (data shape) प्रवास करते. ते दिसायला मोहक (elegant) आहे, पण त्यात एक त्रुटी आहे. ते फक्त अस्तित्वात असलेल्या फील्ड्सचे व्हॅलिडेशन करते. जर एखादी 'key' गहाळ असेल, तर ते फंक्शन ती कधीच पाहू शकत नाही. त्यात सत्याचा कोणताही आधार (source of truth) नसतो.

तिन्ही AI ने हीच चूक केली. जेव्हा मी त्यांना ही त्रुटी दाखवून दिली, तेव्हा त्यांनी 'schema' सुचवला. 'Schema-driven' दृष्टिकोन तांत्रिकदृष्ट्या योग्य आहे. तो गहाळ असलेल्या 'keys' हाताळतो आणि चांगल्या प्रकारे स्केल होतो.

पण एक अधिक चांगला मार्ग आहे: कंपोझिशन (Composition).

एक मोठे फंक्शन किंवा गुंतागुंतीचा 'schema' वापरण्याऐवजी, तुम्ही प्रत्येक प्रकारासाठी विशिष्ट फंक्शन्स तयार करता.

तुमचा व्हॅलिडेटर (validator) तयार करण्यासाठी तुम्ही त्यांना एकत्र करता.

हा दृष्टिकोन गहाळ असलेल्या 'key' ची समस्या सोडवतो. बिलिंग व्हॅलिडेटर नेहमी VAT नंबर तपासतो, जरी ती 'key' गहाळ असली तरीही. हे काम करते कारण बिलिंग पत्ता ही एक वास्तविक व्यावसायिक संकल्पना (business concept) आहे. तो केवळ तुमच्या डेटातील एक पॅटर्न नाही.

त्यातील फरक स्पष्टपणे व्यक्त होतात. जेव्हा नवीन पत्त्याचा प्रकार येतो, तेव्हा तुम्ही एक नवीन फंक्शन जोडता. तुम्हाला जुना कोड बदलण्याची गरज पडत नाही.

AI आणि सर्वोत्तम इंजिनिअर्स अनेकदा एकाच जाळ्यात अडकतात. आपल्याला पॅटर्न शोधायला आणि लॉजिक केंद्रीकृत (centralize) करायला शिकवले जाते. आपण कोणत्याही परिस्थितीत डुप्लिकेशन (duplication) टाळण्याचा प्रयत्न करतो.

AI हा स्वभाव आपल्या ट्रेनिंग डेटाकडून वारसागत मिळवते. ते 'generalization' ला प्राधान्य देते.

समस्या ही नाही की AI चुकीचे आहे. समस्या ही आहे की AI क्वचितच सर्वात महत्त्वाचा प्रश्न विचारते: ही विविधता (variability) माझ्या कोडमध्ये आहे की माझ्या डेटामध्ये?

जर पत्त्यांचे प्रकार स्थिर असतील, तर कंपोझिशन (composition) वापरा. जर पत्त्यांचे प्रकार बाह्य डेटाद्वारे बदलत असतील, तर स्कीमा (schema) वापरा.

सर्वात सोपा उपाय तो नाही ज्यामध्ये ओळींची संख्या सर्वात कमी आहे. तर तो आहे जो तुमच्या बिझनेस डोमेनचे (business domain) प्रतिबिंब दर्शवतो.

Source: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb

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