استندآپ؛ دوست یا دشمن چابکی؟!

همه‌ی ما برامون پیش اومده که از حجم زیاد جلسات و زمانی که در طول هفته برای جلسات می‌ذاریم، خسته شده باشیم! از جمله مشکلاتی که باعث میشه جلسات خسته کننده باشه، تعداد زیاد، طولانی شدن و محتوای تکراری یا بی استفاده برای اعضای تیمه. یکی از جلساتی که هر روز تکرار می‌شه و ممکنه برای شما و تیمتون حوصله سر بر باشه، جلسه‌ی <<استندآپ روزانه>> است.بیاین در مورد این که تو جلسات استندآپ چی می‌گذره یه مروری داشته باشیم:استندآپ چیه؟استندآپ در یک نگاه، یک جلسه‌ی ۱۵ دقیقه‌ایه که هر روز صبح در یک اسپرینت برگزار می‌شه و اعضای تیم توسعه‌ی محصول به صورت خلاصه می‌گن که:روز قبل چیکار کردم؟امروز روی چی می‌خوام کار کنم؟چه موانع و مشکلاتی سر راهم هست؟ چه چیزی کار من رو بلاک کرده؟مزایای جلسات استندآپدلایل زیادی برای برگزاری جلسات استندآپ وجود داره؛ ایجاد روحیه‌ی کار تیمی و شفافیت بین اعضای تیم از مهم‌ترین نتایج جلسات استندآپ روزانه است. جلسه‌ی استندآپ به همه‌ی‌ اعضای تیم این دید رو میده که هر کسی برای تولید محصول مورد نظر داره چیکار میکنه و چقدر پیشرفت داشته. پس میشه گفت استندآپ فقط جلسه‌ی "Status Update" نیست و اعضای تیم با گفتن کارهای روز قبل و روز جاری، باعث ایجاد تعهد به هم میشن. در واقع استندآپ کمک می‌کنه ببینیم برنامه‌ریزی‌ای که اول اسپرینت انجام دادیم چقدر در راستای رسیدن به هدفمون بوده است." با این حال برخلاف مزایایی که گفته شد، استندآپ میتونه با چابکی در تضاد باشه! اما چطور؟ "معایب جلسات استندآپدر برخی موارد :بحث به بی‌راهه کشیده می‌شه و بیشتر از ۱۵ دقیقه طول می‌کشه.موارد تکراری و خسته کننده مطرح می‌شه.موارد مطرح شده درست نوشته نمی‌شن و اگه بشن هم خونده نمی‌شن.موارد مطرح شده به خصوص وقتی که در مورد بلاکرها (Blocker) صحبت می‌شه، برای بقیه اعضای تیم اهمیتی نداره.این موارد تجربه‌ی شخصی من از مشکلات جلسه‌ی استندآپ هست که باعث شده بود خیلی به درد تیم ما نخوره. ممکنه استندآپ برای بعضی از تیم‌ها (مثلا تیم‌هایی با روند کاری Waterfall)، اگه طبق اصول خودش برگزار شه، واقعا مناسب باشه!چیزی که ما بهش رسیدیم اینه که تنها جایی که استندآپ به درد ما می‌خوره، نزدیک لانچ محصوله، که فرآیند تست‌، برطرف کردن مشکلات و آماده سازی نهایی محصول برای لانچ رو چک می‌کنیم."توی خیلی از شرکت‌ها مشاهده می‌شه که یه سری از جلسات گذاشته می‌شن، فقط به این دلیل که جاهای دیگه گذاشته می‌شن! در صورتی که بخش قابل توجهی از این جلسات تشریفاتی بوده و معمولا مشکلی رو حل نمی‌کنن!"جلسه تصمیم‌گیری؛ جایگزین مناسبی برای استندآپ!حالا بیشتر در مورد این توضیح می‌دم که جلسه <<تصمیم‌گیری>> چیه و ما چطور جلسات تشریفاتی، مثل استندآپ رو با جلسه تصمیم‌گیری جایگزین کردیم؟چرخه‌‌ی تولید محصول به طور ساده از دو قسمت تشکیل میشه:تصمیم‌گیری‌هاتوسعه محصولمعمولا قبل از شروع توسعه‌ی محصول به یک سری تصمیم گیری‌ها احتیاج داریم. این تصمیم گیری‌ها در حین توسعه‌ هم کماکان ادامه دارن، مثل:طراحی امکانات محصول (فیچرها)چالش‌های فنی پیاده‌سازینیازمندی‌ها و موانع به وجود اومدهنحوه‌ی پیاده سازی فنی و ...معمولا اول چرخه‌ی تولید، تصمیمات بیشتر و بزرگتری گرفته میشه و هرچی به لانچ محصولمون نزدیک‌تر می‌شیم، این تصمیمات کوچک‌تر و تعدادشون کمتر میشه. اگه یک بار دیگه به نحوه‌ی برگزاری جلسات استندآپ نگاه کنیم، متوجه می‌شیم که دو تا سوال اول که "روز قبل چیکار کردم؟ و امروز می‌خوام چیکار کنم؟" روند انجام کار رو کنترل می‌کنه، که برای پاسخ به این دو تا سوال، می‌شه به جای استندآپ، به راحتی از ابزارهای آنلاین مثل Trello یا Jira استفاده کرد و در واقعیت مدت زمان زیادی رو در روز ذخیره کرد.این دو سوال برای تیم ما وقتی اهمیت پیدا می‌کنن که به پیدا شدن موانع ختم بشن، که ما اونا رو توی دسته‌ی جلسات <<تصمیم‌گیری>> قرار می‌دیم.اما سوال سوم استند‌آپ که در مورد موانع است! اگه کسی توی کار بلاک شد چرا باید صبر کنه و توی جلسه استندآپ روز بعد مشکلشو بگه؟ احتمالا تو هر سازمان با هر ساختاری، یک زمانی زودتر از استندآپ روز بعد پیدا می‌شه که کسی که بلاک شده، با بلاکرش (Blocker) یک جلسه <<تصمیم‌گیری>> بذاره و مشکل رو سریع‌تر حل کنن.باید تا حد امکان بروکراسی ها رو از بین برد و تا جایی که میشه زمان رو هدر نداد.یه نکته‌ی خیلی مهم اینه که، در صورت حذف استندآپ، صاحب یا مدیر محصول (Product Manager/Product Owner) که همیشه در جریان موانع (Blocker) و تصمیمات مورد نیاز هست، باید فرهنگ "برگزاری جلسات تصمیم‌گیری در سریع‌ترین زمان ممکن" رو، برای همه‌ی اعضای تیم جا بندازه. در غیر این صورت حذف استندآپ چیزی جز دردسر به همراه نداره!در تیم ما هرجایی که یکی از اعضای تیم دیگه نتونه کارشو ادامه بده، به اصطلاح می‌گیم بلاک شده، حالا این بلاک شدن می‌تونه از هر جنسی یا در هر مرحله‌ای از فرآیند تولید محصول باشه؛ مثلا وقتی دیزاین فیچر برای شروع توسعه نهایی نشده یا تیم زیرساخت دیتابیس مورد نیاز تیم بک-اند رو تحویل نداده و …..پس جلسه‌ی تصمیم‌گیری، وقتی یک یا چند نفر از اعضای تیم بلاک می‌شن گذاشته می‌شه.چطور با چندتا نکته‌ی ساده، جلسات (مخصوصا جلسات تصمیم‌گیری) رو بهینه کنیم؟تقریبا تمام جلساتی که در چرخه‌ی تولید محصول گذاشته می‌شن، از جنس تصمیم‌گیری هستن. ما با رعایت کردن این چندتا نکته ی ساده، که احتمالا همه می‌دونیم ولی معمولا رعایت نمی‌کنیم، تا حد خیلی خوبی جلساتمون رو بهینه کردیم:۱. در صورت نیاز در اولین فرصت ممکن جلسه گذاشته می‌شه.۲. قبل از جلسه، محتوای جلسه (Agenda) برای افرادی که هستن فرستاده می‌شه تا افراد با ذهن آماده در جلسه شرکت کنن و هدفشون از شرکت در جلسه رو بدونن. (البته نه واسه جلسه ۵ دقیقه‌ای! :) )۳. محتوا و زمان جلسه توسط یک نفر مدیریت می‌شه تا از انحراف آن تا حد ممکن جلوگیری شه. (مثلا مدیر محصول یا مسئول تیم فنی)۴. مطمئن شیم تصمیمات گرفته شده منجر به پیش‌برد کار یا unblock کردن کارها می‌شه.۵. نتیجه‌ی جلسه، جمع‌بندی و توی کارا لحاظ می‌شه، همچنین مسئول انجام هر کار (Owner) همان جا مشخص و چک‌لیست‌ مرتبط آپدیت می‌شه.به طور کلی شرکت‌هایی که از متدهای چابک (Agile) استفاده می‌کنن، بدون رعایت کردن این چند نکته در جلسات، به مشکل جدی برمی‌خورن و تعداد زیاد این جلسات در چرخه‌ی تولید محصول در این تیم‌ها، بیانگر اهمیت بهینه‌سازی این جلسات است.جمع بندیدر خیلی از موارد، ممکنه جلسات استندآپ روزانه اونطور که باید برای تیم شما مناسب نباشه. همین الان به روند برگزاری جلسات استندآپ تو تیم خودتون نگاه کنید، به نظرتون تا چه اندازه این جلسات باعث تسریع روند تولید محصول در تیم شما شده؟یکی از دلایل طولانی شدن چرخه‌ی تولید محصول، ممکنه تعلل در تصمیم گیری و اتلاف وقت در جلساتی مثل استندآپ باشه، که میتوان با جایگزین کردن <<جلسات استندآپ روزانه>> با <<جلسات تصمیم گیری>> که در سریع ترین زمان ممکن گذاشته میشن، تا حد خوبی از بروز این موارد جلوگیری کرد.در نگارش این متن، علاوه بر تجربه‌ی شخصی، از منابع گوناگونی کمک گرفته شده است که در ادامه به مرور برخی از آن‌ها می‌پردازیم:Why “Standups” are Useless and How to Run Great Product Team MeetingsWhy Daily Stand-ups are the worst and what to do about itYou do not need standup