تصور کنید وارد مغازه قصابی شدهاید و به آقای قصاب سفارش یک شقه ران گوسفندی دادهاید! حالا به ابتدای جمله برگردید! بله عرض کردم که «تصور» کنید!
جناب قصاب تند و تیز شروع به بریدن و تکه کردن گوشت میکند. شما هم منتظر ایستادهاید و در این خیال که به زودی چه خورشت و آبگوشتهای لذیذی خواهید خورد، فرو رفتهاید.
همینطور که در خیال خود شناورید، بیایید حرکات تند و تیز جناب قصاب را با سرعت آهسته تماشا کنیم. چاقوی تیزش را در حجم گوشت فرو میکند و بعد از هر دو سه برش، آن را با سوهانی که همیشه دم دستش هست، تیز میکند. این کار را به قدری سریع انجام میدهد که گویی جزو مراحل آماده کردن سفارش شماست. او از شما نمیپرسد که آیا به من وقت میدهید که چاقویم را تیز کنم یا نه؟!
قصاب داستان ما، به دلیل اینکه همیشه حواسش به تیز بودن چاقویش بوده و آن را مرتب تیز کرده است، دیگر نیازی ندارد که برای تیز کردن چاقویش وقت زیادی صرف کند. سه چهار بار که چاقو را به سوهان بکشد، تیز میشود. کاری که چند ثانیه بیشتر وقت نمیگیرد!
اگر این کار را به صورت مرتب انجام ندهد، آنوقت به مشتری چهارم و پنجم نرسیده، «مجبور» میشود که مشتری را «معطل» کند تا چاقوی جدیدی تهیه کند و یا با چاقوی کند و کهنه شده، با زور و تقلا کارش را پیش ببرد.
این وضعیت برای ما توسعهدهندگان نرمافزار، وضعیتی آشناست. ما معمولا وقتی برای تیز کردن چاقو نمیگذاریم و زمانی به فکرش میافتیم که چاقوی ما حسابی کند شده و خسته و فرسوده شدهایم.
ریفکتور (Refactor)، بخوانید تیز کردن چاقو باید جزیی از فعالیتهای روزانهی ما باشد. جوری که هیچوقت نخواهیم که برای تیز کردن چاقوی توسعه، از مشتری فرصت بگیریم و وقتش را تلف کنیم. پس مثل آقای قصاب ریفکتور کنیم، هر روز، روزی چند بار.
راستی آبگوشتتان نوش جان!