प्रत्येक लायब्ररीला एका वास्तविक प्रकल्पाची गरज का असते

अनेक लायब्ररी लेखक एक चूक करतात. त्यांना वाटते की फक्त उदाहरणे पुरेशी आहेत.

उदाहरणे पुरेशी नाहीत.

उदाहरणे एखादे फीचर काम करते हे सिद्ध करतात. वास्तविक प्रकल्प एखादी लायब्ररी काम करते हे सिद्ध करतात. या दोन वेगवेगळ्या गोष्टी आहेत.

मी अनेक डेमो ॲप्लिकेशन्स बनवतो. मी नमुना वेबसाइट्स, APIs आणि कंपोनंट्स बनवतो. डेमोमध्ये सर्व काही परिपूर्ण दिसते. डेमो 'हॅपी पाथ' (happy path) दाखवतात. ते आदर्श वर्कफ्लो दाखवतात.

डेमो हे नियंत्रित वातावरण असते. आर्किटेक्चर साधे असते. आवश्यकता (requirements) अंदाज लावण्यायोग्य असतात.

वास्तविक प्रकल्प वेगळे असतात.

जेव्हा तुम्ही एखाद्या वास्तविक प्रकल्पासाठी लायब्ररी वापरता, तेव्हा नियम बदलतात. तुम्ही आता केवळ प्रात्यक्षिक करत नसता. तुम्ही एखादी समस्या सोडवत असता.

वास्तविक प्रकल्प खालील गोष्टी आणतात:

  • कडक डेडलाईन्स
  • बदलत्या आवश्यकता
  • गुंतागुंतीचे लेआउट्स
  • एज केसेस (edge cases)
  • मानवी चुका

इथेच लायब्ररीची खरी ताकद दिसून येते. इथेच तिची खरी कमजोरीही समोर येते. लायब्ररी डेमोमध्ये नाही, तर दबावाखाली स्वतःचे खरे स्वरूप उघड करते.

वास्तविक प्रकल्प तुमच्या गृहितकांना (assumptions) आव्हान देतात. एखादी कल्पना कागदावर अतिशय सुंदर वाटू शकते. डेव्हलपमेंट दरम्यान ती योग्य वाटू शकते. पण मग वास्तवाचा सामना करावा लागतो.

वर्कफ्लो विचित्र वाटू लागतो. कॉन्फिगरेशन पुनरावृत्तीसारखे (repetitive) वाटते. API अस्वाभाविक वाटते. तुमचे डिझाइन चुकीचे नसते, पण ते अद्याप वास्तवाशी जुळलेले नसते.

लेखकाने करू शकणारी सर्वोत्तम गोष्ट म्हणजे स्वतःच्या सॉफ्टवेअरचा वापरकर्ता बनणे. फक्त डेमो बनवू नका. तुमच्या साधनांचा (tools) वापर करून वेबसाइट्स, ॲप्लिकेशन्स आणि व्यवसाय उभे करा. त्यांच्यावर अवलंबून राहा.

जेव्हा तुम्ही तुमच्या सॉफ्टवेअरवर अवलंबून असता, तेव्हा तुमचा दृष्टिकोन बदलतो. तुम्ही लेखकासारखा विचार करणे थांबवता आणि वापरकर्त्यासारखा विचार करू लागता.

वापरकर्त्यांना या गोष्टींची काळजी असते:

  • अडथळे (Friction)
  • स्पष्टता
  • काम पूर्ण करणे

वास्तविक गोष्टी बनवल्यामुळे तुमचे प्रश्न बदलतात. तुम्ही "आपण कोणती फीचर्स जोडावीत?" असे विचारणे थांबवता. त्याऐवजी, तुम्ही विचारता:

  • हा वर्कफ्लो विचित्र का वाटतोय?
  • मी पुन्हा पुन्हा तेच का करत आहे?
  • यासाठी इतका वेळ का लागला?

या समस्या सोडवल्यामुळे कोणत्याही ब्रेनस्टॉर्मिंग सेशनपेक्षा (brainstorming session) अधिक चांगले सॉफ्टवेअर तयार होते.

प्रत्येक लायब्ररीला एका वास्तविक प्रकल्पाची गरज असते. हा प्रकल्प मार्केटिंगसाठी नसतो. तो एक कसोटीचा मंच (proving ground) असतो. तो लायब्ररीला वास्तविक समस्या सोडवण्यास भाग पाडतो. तुमच्या वापरकर्त्यांच्या आधीच तो कमतरता शोधून काढतो.

तुमचे उद्दिष्ट तुमची लायब्ररी परिपूर्ण आहे हे सिद्ध करणे नाही. तुमचे उद्दिष्ट तुमच्या लायब्ररीमध्ये सुधारणा करण्यासाठी एक मार्ग तयार करणे आहे.

Source: https://dev.to/stinklewinks/why-every-library-needs-a-real-project-1ae7