من پت هستم
من پت هستم
خواندن ۲ دقیقه·۶ سال پیش

کی باز نویسی کنیم؟

بذارید با یک داستان فرضی شروع کنیم.

دو هفته وقت گذاشته‌اید و مقدار عظیمی از کد قدیمی و کثیف شرکت را با جدیدترین تکنولوژی روز بازنویسی کرده‌اید. خوشحال و خندان مشغول قدم زدن هستید و احتمالا یک لیوان قهوه هم در دست دارید که می‌رسید به یکی از مدیران ارشد شرکت و سر صحبت باز می‌شود.

--- خوب پت این روزها مشغول چه کاری هستی؟

--- اووم، کد سرویس اصلی شرکت که تمام ترافیک شرکت از توش رد می‌شود را ۵ سال پیش اولین برنامه‌نویسان شرکت (احتمالش هست که این مدیر خودش یکی از همان اولین برنامه‌نویس‌ها باشد) نوشته‌اند. تکنولوژی استفاده برای توسعه سیستم خیلی قدیمی شده‌بود و کد هم خیلی تمیز نبود. من نشستم و از اول نوشتمش (چشمانتان برق افتخار می‌زند!)

--- چرا!؟ سی‌پی‌یو صرفه‌جویی کردی؟ زمان پاسخگویی را بهتر کردی؟ فکر نکردی اگر توی این پیاده‌سازی تو باگ وجود داشته باشد چه بلایی سر شرکت می‌آید و ...

مکالمه تمام می‌شود. در حالی که حسابی توی ذوق‌تان خورده می‌روید سر کارتون و آخر روز هم یکی دو تا توئیت عصبانی می‌نویسید و فحش می‌دهید به حماقت و فسیل بودن مدیران شرکت که قدر نبوغ و قدر زحمات شما را نمی‌دانند و ...

حالا برگردیم به عقب و ببینیم مشکل از کجاست و چطور می‌توان گفتگوی بهتری داشت. برای نگاه کردن به این مساله سعی می‌کنم از قاعده‌ی همیشگی 10xEngineer استفاده کنم. پس بر می‌گردیم سر مکالمه قبلی

--- خوب پت این روزها مشغول چه کاری هستی؟

--- اووم، ما اخیرا توی تیم‌مان با کد سرویس اصلی شرکت که تمام ترافیک شرکت از توش رد می‌شود، خیلی مشکل داشتیم. طراحی سیستم به نحوی بوده که تست کردنش خیلی سخت بود برای همین اضافه کردن هر فیچر جدید چند هفته وقت تیم را می‌گرفت و تازه موقع لانچ کردن هم مطمئن نبودیم که سیستم درست کار می‌کند و یا کرش می‌کند. یک مشکل دیگر هم داشتیم و آن پیچیدگی بالای سیستم بود که باعث می‌شد اعضای جدید تیم نتوانند سریع به کارایی بالا برسند و ....

خلاصه مکالمه حسابی طولانی می‌شود و مدیر ارشد با هیجان و علاقه بحث را دنبال می‌کند و کلی شما را تشویق می‌کند.

چرا نتیجه این دو گفتگوی فرضی متفاوت‌اند؟ در هر دو حالت یک کار انجام شده. در یکی وقت صرف شده هیچ تاثیری در بهبود KPI شرکت و یا تیم ندارد ولی در دیگری شما توانسته‌اید بهره‌وری سایر برنامه‌نویس‌ها را بهبود ببخشید و عبارت دیگر به صورت غیر مستقیم بیش از ۱۰ برابر یک مهندس معمولی (10xEngineer) در تولید محصول شرکت و در راستای بهبود KPI نقش ایفا کنید.


refactoringبازنویسی
مهندس دون‌پایه. یک کم فیسبوک کار کردم، یک کم گوگل. یک کم postmates یک چیزی مثل پیک موتوری. حالا هم توی یک شرکت روبات خودران کار می‌کنم. تخصصم در ماشین‌لرنینگ و سیستم‌ها توزیع‌شده است.
شاید از این پست‌ها خوشتان بیاید