روش کار
روش ما مدون است — و به همین دلیل با روش شما جور درمیآید
آنچه در ادامه میخوانید، رویههایی است که خودمان هر روز اجرا میکنیم و مکتوبشان کردهایم. هدف از نوشتنشان این نیست که قالبی برای شما بسازیم؛ این است که وقتی با ما کار میکنید بدانید چه انتظاری داشته باشید، و بتوانید همان استاندارد را از هر تیم دیگری هم بخواهید.
بیشتر تفاوت بین پروژهای که خوب پیش میرود و پروژهای که نمیرود، در انتخاب فناوری نیست. در این است که تصمیمها نوشته شدهاند یا نه، معلوم است کدام ادعا بررسی شده یا نه، و وقتی کسی از تیم میرود چه چیزی با او میرود.
ما اینها را بهعنوان بخشی از کار مهندسی میبینیم، نه کاغذبازی جانبی. آنچه در ادامه میآید، همان رویههاست — بدون جزئیات فنی سامانههای داخلیمان، که جای انتشارشان اینجا نیست.
رویهها
هشت چیزی که در هر پروژه رعایت میکنیم
تصمیمها نوشته میشوند، با گزینههای ردشده
هر تصمیم فنی مهم ثبت میشود: اول خود تصمیم، بعد دلیلش، و بعد گزینههایی که بررسی و رد شدند و چرا.
سندی که فقط برنده را مینویسد، همان بحث را شش ماه بعد از نو باز میکند. وقتی تصمیمی عوض میشود، تصمیم قبلی حذف نمیشود — «جایگزینشده» علامت میخورد و سر جایش میماند، چون خود آن بازنگری هم اطلاعات است.
هر ادعا تاریخ دارد و «تأییدشده» از «فرضشده» جداست
در مستندات ما مشخص است که کدام جمله بررسی و تأیید شده، در چه تاریخی، و کدام هنوز فرض است.
ادعای بیتاریخ بیصدا کهنه میشود و همچنان به آن اعتماد میشود. بیشتر خطاهایی که در بازبینیهای خودمان پیدا کردهایم، از همین جنس بودهاند: چیزی که روزی درست بوده و کسی دوباره بررسیاش نکرده.
هر واقعیت فقط در یک جا ثبت میشود
مستندات ما تفکیکشدهاند: تصمیمها یک جا، نحوهٔ ساخت جای دیگر، و وضعیت واقعی سامانهٔ در حال اجرا جای سوم. بقیه به آن لینک میدهند، نه اینکه تکرارش کنند.
وقتی یک واقعیت در پنج سند تکرار شود، روزی که عوض شود در یکیشان عوض میشود و چهار سند غلط باقی میماند. تفکیک مالکیت، این را از ریشه حذف میکند.
اسرار در مستندات نیستند — فقط نامشان هست
در هیچ سند و هیچ مخزنی مقدار یک کلید، رمز یا رشتهٔ اتصال نوشته نمیشود. آنچه ثبت میشود فهرست نامهاست و اینکه مقدار واقعی کجا نگهداری میشود.
این تفاوت عملی دارد: تحویل مستندات به شما هیچوقت به معنای تحویل دسترسی نیست، و چرخش یک کلید به بازنویسی هیچ سندی نیاز ندارد.
قرارداد روشن بین برنامه و بستر اجرا
بهجای اینکه هر پروژه شیوهٔ استقرار خودش را اختراع کند، یک قرارداد مکتوب میگوید بستر چه چیزی در اختیار برنامه میگذارد و در مقابل چه انتظاری دارد.
نتیجهاش این است که راهاندازی محصول دوم شبیه محصول اول است، عضو جدید تیم چیز تازهای یاد نمیگیرد، و تحویل پروژه به تیم شما یک سند دارد نه یک جلسهٔ شفاهی.
یافتهٔ امنیتی در لحظهٔ کشف ثبت میشود، نه در لحظهٔ رفع
هر یافتهٔ امنیتی ثبت میشود — حتی وقتی فوری قابل رفع نیست، حتی وقتی مسئولش ما نیستیم. هیچ ردیفی حذف نمیشود؛ یا با شواهد بسته میشود یا صریح و تاریخدار پذیرفته میشود.
دفتری که فقط مشکلات حلشده را نگه میدارد، آرامش کاذب میدهد. اولویتبندی هم بر اساس پیامد و میزان دسترسپذیری انجام میشود، نه بر اساس اینکه اسم مشکل چقدر ترسناک است.
دروازه پیش از تخصیص منابع، نقطهٔ بازگشت پیش از تغییر
پیش از راهاندازی هر چیزی، ظرفیت و هزینهاش بررسی میشود. پیش از هر مهاجرت و ارتقایی، نقطهٔ بازگشت تعریف و نوشته میشود.
تصمیم دربارهٔ برگشتن، وسط یک بحران و ساعت چهار صبح، تصمیم خوبی نمیشود. پس آن تصمیم را از قبل و در آرامش میگیریم.
استک پیشفرض داریم — و استثناها را صریح مینویسیم
پروژههای جدید از یک پایهٔ مشترک شروع میشوند تا هر بار چرخ از نو اختراع نشود. اما این یک قانون نیست: هر جا دلیل فنی یا کسبوکاری وجود داشته باشد، انتخاب متفاوت است و دلیلش ثبت میشود.
محصولات موجودمان استکهای متفاوتی دارند و هیچکدام بهزور مهاجرت داده نشدهاند. پایهٔ مشترک برای این است که کارهای تکراری سریعتر شوند، نه اینکه انتخاب را محدود کند.
ابزار
هوش مصنوعی، آنجا که واقعاً کمک میکند
بخشی از کارهای تکراری ما — بررسی مستندات برای ناسازگاری، نقشه درآوردن از کدی که کسی نمیشناسد، آمادهسازی گزارشهای دورهای — با کمک ابزارهای هوش مصنوعی انجام میشود. این برای ما یک آزمایش نیست؛ بخشی از روش روزمره است و در همان مستنداتی ثبت شده که بقیهٔ رویهها.
اما مرزش هم روشن است. هیچ خروجیای بدون بازبینی انسانی وارد کار نمیشود، مسئولیت هر تغییر با شخصی است که آن را تأیید کرده، و دادهٔ محرمانهٔ مشتری وارد هیچ سرویس بیرونی نمیشود. برای پروژههایی که قرارداد محرمانگی سختگیرانه دارند، این ابزارها یا روی زیرساخت خودمان اجرا میشوند یا اصلاً استفاده نمیشوند.
نتیجهاش برای شما یک چیز است: وقت مهندس صرف تصمیمگیری و طراحی میشود، نه صرف کارهایی که ابزار بهتر انجامشان میدهد.
انعطاف
چطور با شما کار میکنیم
داشتن روش، برای این است که بتوانیم با شرایط شما تطبیق بدهیم — نه برعکس.
با فرایند شما
اگر سازمان شما روش، ابزار مدیریت پروژه یا چرخهٔ تأیید خودش را دارد، ما در همان کار میکنیم. روش ما قالبی نیست که به شما تحمیل شود؛ چیزی است که وقتی شما روشی ندارید، خلأ را پر میکند.
با تیم شما
از تحویل کامل پروژه تا اضافه شدن بهعنوان بخشی از تیم فنی شما. در حالت دوم، همان قواعد بازبینی و مستندسازی را رعایت میکنیم که تیم شما دارد — نه قواعد خودمان.
با استک شما
اگر سامانهای دارید که باید ادامه پیدا کند، روی همان کار میکنیم. توصیه به تغییر فقط وقتی مطرح میشود که دلیل عددی داشته باشد، و آن دلیل را مینویسیم تا خودتان قضاوت کنید.
روی زیرساخت شما
استقرار روی سرورهای خودتان، مرکز دادهٔ انتخابی شما، یا زیرساخت ما. برای سازمانهایی که الزام نگهداری داده در داخل دارند، این تصمیم از ابتدای طراحی دیده میشود نه در پایان.
با مدل قرارداد شما
پروژهای با دامنهٔ مشخص، تیم اختصاصی ماهانه، یا نیروی افزوده. هر سه را انجام میدهیم و در جلسهٔ اول میگوییم کدامیک به وضعیت شما میخورد — حتی اگر آن یکی برای ما کوچکتر باشد.
و با آنچه از قبل دارید
مستندات ناقص، تیم قبلی که رفته، کدی که کسی نمیفهمد. این وضعیت شایع است و بخشی از کار ماست: اول نقشه درمیآوریم و مینویسیم، بعد تغییر میدهیم.
همین روش، به تفصیل
فرآیند تولید، از هفت زاویه
هر رویهای که بالا آمد، جایی مفصل نوشته شده — با معیارها، اعداد و مواردی که در پروژههای واقعی به آنها برخوردهایم.
کل مسیر
نقشهٔ هفت مرحله و خروجی مکتوب هرکدام.
امنیت
امنیت تصمیم معماری است، نه مرحلهٔ آخر پیش از تحویل.
کارایی و سرعت
عدد پیش از ساخت تعیین میشود و در تولید اندازه گرفته میشود.
نگهداشت و کاهش باگ
کدی که شش ماه بعد قابل تغییر است، و باگی که برنمیگردد.
تست
کدام خرابی گران است، و ارزانترین راه گرفتنش کدام است.
ساخت، انتشار و بازخورد
خط لولهای که دور زده نمیشود، و انتشاری که کسلکننده است.
تلمتری و داده
دادهای که تصمیم میسازد، و دادهای که فقط ریسک است.
و یک نکتهٔ صادقانه
هیچ تیمی همهٔ اینها را همیشه بینقص اجرا نمیکند و ما هم نمیکنیم. تفاوت در این است که وقتی جایی از قلم میافتد، ثبت میشود و قابل پیگیری میماند — بهجای اینکه فقط کسی که آنجا بوده بداند.
بقیهاش در بلاگ است — از مدیریت رخداد و دفترچههای اجرا تا راه خروج از وابستگی به تأمینکننده — و چرخهٔ تولید همان مسیر را مرحلهبهمرحله با خروجی هر گام فهرست میکند.
میخواهید بدانید برای پروژهٔ شما چه شکلی میشود؟
در جلسهٔ اول، همین سؤال را جواب میدهیم — و اگر روش شما با ما جور درنیاید، همان را میگوییم.