چرا هر کتابخانهای به یک پروژه واقعی نیاز دارد
بسیاری از نویسندگان کتابخانهها مرتکب اشتباهی میشوند. آنها فکر میکنند مثالها کافی هستند.
مثالها کافی نیستند.
مثالها ثابت میکنند که یک ویژگی کار میکند. پروژههای واقعی ثابت میکنند که یک کتابخانه کار میکند. اینها دو چیز متفاوت هستند.
من اپلیکیشنهای دموی زیادی میسازم. وبسایتها، APIها و کامپوننتهای نمونهای میسازم. همه چیز در یک دمو بینقص به نظر میرسد. دموها «مسیر خوشبینانه» (happy path) را نشان میدهند. آنها جریان کاری ایدهآل را نمایش میدهند.
دموها محیطهای کنترلشدهای هستند. معماری ساده است. نیازمندیها قابل پیشبینی باقی میمانند.
پروژههای واقعی متفاوت هستند.
وقتی از یک کتابخانه برای یک پروژه واقعی استفاده میکنید، قوانین تغییر میکنند. شما دیگر در حال ساخت یک نمایش (دمو) نیستید، بلکه در حال حل یک مسئله هستید.
پروژههای واقعی این موارد را به همراه دارند:
- ضربالاجلهای فشرده
- نیازمندیهای متغیر
- چیدمانهای پیچیده
- موارد خاص (edge cases)
- خطاهای انسانی
اینجاست که یک کتابخانه قدرت واقعی خود را نشان میدهد. و نقاط ضعف واقعیاش را نیز آشکار میکند. یک کتابخانه تحت فشار خودش را نشان میدهد، نه در یک دمو.
پروژههای واقعی فرضیات شما را برملا میکنند. یک ایده ممکن است روی کاغذ ظریف و زیبا به نظر برسد. ممکن است در طول توسعه منطقی باشد. اما بعد واقعیت ضربه میزند.
یک جریان کاری (workflow) ناشیانه به نظر میرسد. یک پیکربندی (configuration) تکراری به نظر میرسد. یک API غیرطبیعی به نظر میرسد. طراحی شما اشتباه نیست، اما هنوز با واقعیت روبرو نشده است.
بهترین کاری که یک نویسنده میتواند انجام دهد این است که به کاربر نرمافزار خودش تبدیل شود. فقط دمو نسازید. با ابزارهای خودتان وبسایتها، اپلیکیشنها و کسبوکارها بسازید. به آنها وابسته شوید.
وقتی به نرمافزار خود وابسته میشوید، دیدگاه شما تغییر میکند. دیگر مثل یک نویسنده فکر نمیکنید؛ بلکه مثل یک کاربر فکر میکنید.
کاربران به این موارد اهمیت میدهند:
- اصطکاک (سختی در استفاده)
- وضوح
- انجام کارها
ساختن چیزهای واقعی، سوالات شما را تغییر میدهد. دیگر نمیپرسید «چه ویژگیهایی باید اضافه کنیم؟» بلکه میپرسید:
- چرا این جریان کاری (workflow) ناشیانه به نظر میرسد؟
- چرا دارم کارهای تکراری انجام میدهم؟
- چرا این کار خیلی طول کشید؟
حل این مشکلات، نسبت به هر جلسه طوفان فکری (brainstorming)، نرمافزار بهتری خلق میکند.
هر کتابخانهای به یک پروژه واقعی نیاز دارد. این پروژه برای بازاریابی نیست؛ بلکه یک میدان آزمایش است. این پروژه کتابخانه را مجبور میکند تا مسائل واقعی را حل کند و نقاط ضعف را پیش از آنکه کاربران متوجه شوند، پیدا میکند.
هدف این نیست که ثابت کنید کتابخانه شما بینقص است. هدف این است که راهی برای بهبود کتابخانه خود ایجاد کنید.
Source: https://dev.to/stinklewinks/why-every-library-needs-a-real-project-1ae7