یه Feature قرار بود دو هفتهای آماده بشه.
روز اول دربارهی Architecture بحث کردیم.
روز دوم دربارهی Database.
روز سوم دربارهی اینکه Sync باشه یا Async.
روز چهارم هنوز داشتیم گزینهها رو مقایسه میکردیم.
روز پنجم یکی گفت:
«بذاریم فعلاً بیشتر بررسی کنیم.»
هفته دوم هم گذشت. Feature هنوز نوشته نشده بود.
جالب اینجاست که هیچکس تصمیم اشتباهی نگرفته بود.
اصلاً تصمیمی نگرفته بودیم.
این یکی از چیزهایی بود که بعداً فهمیدم:
گاهی ترس از گرفتن تصمیم اشتباه،
باعث میشه تیم وارد چرخهی Analysis Paralysis بشه.
برای هر تصمیم:
Option A
Option B
Option C
Option D
...
و همیشه یک دلیل جدید برای ادامهی بررسی وجود دارد.
در حالی که خیلی از تصمیمهای Engineering برگشتپذیرند.
اگر امروز یک Implementation انتخاب کنیم و فردا بفهمیم مناسب نیست،میتوانیم تغییرش بدهیم.
اما اگر سه هفته فقط دربارهاش صحبت کنیم،
آن سه هفته دیگر برنمیگردد.
برای همین الان وقتی با یک تصمیم مواجه میشوم، اول میپرسم:
این تصمیم Reversible است یا Irreversible؟
اگر Reversible باشد، لازم نیست برای رسیدن به ۱۰۰٪ اطمینان صبر کنیم.
با اطلاعات کافی تصمیم میگیریم،
پیاده میکنیم،Measure میکنیم،
و اگر لازم بود تغییر میدهیم.
چون در Engineering، تصمیم بد قابل اصلاح است.
اما تصمیم نگرفتن هم هزینه دارد.
و گاهی خیلی بیشتر از چیزی که فکر میکنیم. Perfect Decision نداریم؛ فقط Decisionی داریم که با اطلاعات فعلی، منطقیترین گزینه است.