توی پست مربوط به رودمپ بکند :
Backend Roadmap
برای آخرین مورد گفتم که حتما همهی بچهها باید از روز اول ADR بنویسند؛ سر این موضوع با هیچ کدوم از بچهها شوخی ندارم.
اما خیلیها (مثل بچههایی که باهاشون کار میکنم) پرسیدید چرا باید ADR بنویسیم بهتر نیست وقتمون رو روی کد زدن و تمرین و یادگیری بذاریم.
جواب کوتاه:
هیچ ابزار - هیچ کتاب و ... دیگری به اندازه نوشتن ADR شمارو تست نمیکنه و به شما یاد نمیده حتی.
اما اگر توضیحات برای قانع شدن میخواید ادامه مطلب رو بخونید:
بخش بزرگی از کار یک مهندس نرمافزار (بخصوص توی سطوح بالاتر) یادگیری بحث و مناظره کردن هست؛ چیزی که توی سالهای اخیر همکاریم با بچهها توی ایران خیلی خیلی کم دیدم. این بحثها اکثرا سر چه چیزهایی هست ؟
۱- از کدوم فریمورک استفاده کنیم
۲- با کدوم استاندارد پیش بریم
۳- دیتابیس چی بذاریم
۴- تست نویسی چطوری باشه
۵- چرا از این ابزار استفاده کنیم یا نکنیم
و ...
شما هرروز درگیر این بحثها خواهید بود و اینکه بتونید از پیشنهادات خودتون بطور منطقی دفاع کنید موضوع بسیار بسیار مهمی هست.
وقتی شروع به نوشتن
ADR = Architecture Decision Records
میکنید یاد میگیرید ابزاری که دارید انتخاب میکنید رو همه جنبههاش رو ببینید؛ خیلی وقتا ابزارهایی که افراد انتخاب میکنند فقط بخاطر hype هست و جو زده هست اون انتخاب بدون اینکه بدونند آیا واقعا بدردشون میخوره یا مناسب کارشون هست.
خیلی وقتا این مکالمه رو شنیدیم:
- چرا فلان ابزار رو انتخاب کردید ؟
+ گوگل داره ازین استفاده میکنه؛ چی ازین بهتر
آره دوست من ولی گوگل چندین میلیارد کاربر داره و تو به زور به ۵ هزارتا میرسی.
گوگل هزاران نفر توسعه دهنده داره ولی تیم تو به زور به ۱۰ نفر میرسه.
گوگل میلیاردها دلار خرج زیرساخت و دستمزد و ... میده.
تو زیرساختت به زور ۱۰۰ هزار دلار میشه.
برای خود من موقع بحث سر موضوعاتی که بچهها باید یاد بگیرند برای توسعه بکند همین موضوع پیش اومد یکی از بچهها گفت برای سرویس ارسال ایمیل از celery استفاده کنیم پس اینم بنویسید؛ که اگر نگاه کنید من ممنوع کردم استفادهاش رو celery سرویس بسیار بزرگ و سنگینی هست.
برای پروژههای کوچیک اشتباه هست که توی قدم اول برید سراغش؛ اما اگر کسی بتونه ADR خوب بهم بده قطعا قبول میکنم.
درسته وقتی تنهایی کد میزنید به ADR نیازی نیست اما نوشتنش باعث میشه یاد بگیرید بحث کنید؛ توی نوشتن ADR معمولا شما به چندتا ابزار میرسیدو باید این چیزها رو توضیح بدید :
۱- این ابزارها برای چه کاری هستند و چرا فکر میکنید توی پروژه لازمشون داریم ؟
۲- چرا هرکدوم از ابزارها رو در نظر گرفتید؟ (چرایی مهم هست)
۳- انتخاب شما کدوم بوده ؟ و البته چرا ؟
۴- نقاط قوت و ضعف ابزاری که انتخاب کردید چی هست ؟
۵- نقاط قوت و ضعف ابزارهایی که انتخاب نشدند چی هست؟
۶- تحت چه شرایطی ابزارهای دیگر رو انتخاب میکردید یا اینکه شرایط پروژه چی بود که نقاط قوت ابزار انتخابی شما به باقی موارد و البته نقاط ضعف اون چربید و انتخاب شد.
فکر میکنم از سوالها مشخص باشه که چقدر چیز مفید و مهم رو درک میکنید و یاد میگرید.
آیا همه پروژهها این رو دارند ؟
به جرات میگم که بیش از ۹۲-۹۳٪ پروژهها و حتی شاید توسعه دهندهها حتی نمیدونند چی هست؛ ولی تمام پروژهها و تمام مدیران فنی و اعضای تیمهاشون هرروز درگیر یکی از این تصمیم گیریها هستند.
به مدیرای فنی هم پیشنهاد میکنم توی تیم این موضوع رو داشته باشید؛ خیلی وقتا نیرو احساس میکنه حرفهاش شنیده نمیشه درصورتی که شما میدونید چیزی که پیشنهاد میکنه خوب نیست برای پروژه فقط وقت برای توضیح دادن بهش رو ندارید.
معمولا با نوشتن ADR خیلی از بچهها خودشون متوجه میشوند که چرا جواب نه بهشون داده شده.
Post #1052
8.14K
RandRng Message
- 👍 54