یه چیزی که کمکم داره توی کارم تغییر میکنه، تعریفم از «تموم شدن کاره».
قبلاً وقتی یک Task رو میبستم، حس میکردم کار تموم شده.
کد نوشته شده بود. تستها پاس شده بودند. PR باز شده بود.Done. ✅
ولی چند وقتیه بیشتر به این فکر میکنم که:
واقعاً Done یعنی چی؟
چند بار شده یک Feature رو Merge کنیم و دو هفته بعد تازه بفهمیم هنوز کار داریم؟
چون: Monitoring نداره.Error Scenarioهاش مشخص نیست.Rollback براش در نظر نگرفتیم. Documentationش ناقصه.
یا بدتر از همه...
کسی غیر از کسی که نوشته، واقعاً نمیدونه چطور کار میکنه.
از اون طرف، بعضی وقتها یک نفر چند روز روی یک Feature کار میکنه، PR رو Merge میکنه و میره سراغ Task بعدی.
اما همون Feature از روز اول وارد Production شده و هیچکس مجبور نشده دوباره سمتش بره.
نه Bug. نه Hotfix.نه جلسه اضطراری.
نه پیام ساعت ۲ نصف شب. 😅
به نظرم دومی خیلی بیشتر شبیه «کار تمومشده» است.
شاید یکی از بدترین چیزهایی که توی Software Engineering یاد گرفتیم اینه که Progress رو با تعداد Taskهای Done اندازه بگیریم.
در حالی که بعضی Taskها وقتی Done میشن، تازه هزینهشون شروع میشه.
کد نوشته شده.
ولی نگهداریش شروع شده. Feature Deploy شده.
ولی رفتار واقعیش تازه مشخص میشه.
سیستم ساخته شده.
ولی حالا باید سالها باهاش زندگی کنیم.
برای همین این روزها سعی میکنم کمتر بپرسم:
«کی تمومش میکنیم؟»
و بیشتر بپرسم:
«بعد از اینکه تموم شد، چه چیزی ازش باقی میمونه؟»
چون در نهایت، کد خوب فقط کدی نیست که امروز Merge بشه.
کدیه که فردا کسی بابت Merge کردنش پشیمون نشه.