از پروژه بعدی این اشتباه رو تکرار نمی کنم، ولی چرا باز تکرار می شود؟

یکی از ویژگی‌های انسان این است که دائم و در هر شرایطی در حال یادگیری است و بهترین استاد هم تجربیات شکست‌های او است. اما چندین بارشده است که بشنویم که کسی گفته در پروژه بعدی فلان اشتباه را دیگه انجام نمی‌دهم، ولی در پروژه بعدی اشتباه بدتری انجام داده است  واقعاً مشکل کجا است چرا این یادگیری‌ها مانع اشتباهات بعدی نمی‌شوند؟

پروژه‌های نرم‌افزاری خطی نیستند

بسیاری از اوقات ما در پروژه‌ها، نیازمندی‌ها را اشتباه تشخیص می‌دهیم و بالطبع feature های اشتباهی را برای مشتری عرضه می‌کنیم، یا در انتخاب تکنولوژی اشتباه می‌کنیم و هزینه تولید و توسعه بالا می‌رود، یا بعداً می‌فهمیم  معماری یا طراحی, مناسب این پروژه نبوده است.

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

علت اینکه تجربیات دقیق ما در آینده به درد نمی‌خورند این است که:

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

راه چاره چیست؟

اگر قرار باشد تجربیات گذشته در آینده به درد نخورد پس چاره چیست؟ چه‌کار باید کرد؟

مدل فکر کردن را باید یاد گرفت نه اینکه یک ایده را عیناً پیاده‌سازی کرد

هرزمانی که پروژه شروع می‌شود، بارها از برنامه‌نویس‌ها یا نفرات مختلف شنیده‌ام، که می‌گویند ما دقیقاً می‌دانیم چه می‌خواهیم یا چه‌کار باید بکنیم، یا این دفعه فرق دارد و می ترکونیم. اینکه ما به مفروضات و دانسته‌های خود بسیار اطمینان داشته باشیم و سعی کنیم بسیاری از تصمیم‌ها را بدون در نظر گرفتن آینده نامعلوم همان اول پروژه بگیریم بسیار وضعیت را آماده شکست خواهد کرد.

اینکه من قبلاً این کار رو کردم، خوب نبود و این سری باید این کار رو بکنیم چون حتماً جواب می‌گیریم، دلیل خوبی نیست.

بیرون از جعبه باید فکر کرد

بسیاری از ما وقتی در حال تصمیم‌گیری هستیم، روی راه‌حل اصرار داریم و فکر می‌کنیم این بهترین راه‌حل است که از سمت خداوند برای ما نازل‌شده است، حتی به حرف دیگران هم گوش نمی‌دهیم و فقط در فکر پیاده‌سازی آن هستیم، منتهی بسیار دیر می‌فهمیم که این اشتباه بوده است.

بیرون از جعبه فکر کردن یعنی اینکه، همیشه یک درصد جای خطا برای ایده‌های خودمان در نظر داشته باشیم و سعی کنیم ایده‌های دیگران را هم بشنویم.

بهترین چیزی که در پروژه بعدی به درد شما می‌خورد این است که یاد بگیریم چگونه باید بیرون از جعبه فکر کرد.

در عدم قطعیت، بهترین انتخاب در کار نیست

ما درجایی قرار داریم که کاملاً با پدیده عدم قطعیت مواجه هستیم، یعنی خیلی وقت‌ها تا اواسط پروژه متوجه نمی‌شویم که در انتخاب تکنولوژی یا نیازمندی‌ها درست عمل کرده‌ایم یا نه. برای همین نمی‌شود در اول پروژه بهترین انتخاب را انجام داد، زیرا همیشه انتخاب بهتری هم در آینده پدیدار خواهد شد، پس ما به دنبال یک انتخاب خوب هستیم نه بهترین انتخاب.

بهبود مستمر کلید موفقیت

یکی از دلایلی که در روش‌های چابک Iterative کار می‌کنیم به دلیل عدم قطعیت است، یعنی ما باور داریم که یکسری چیز هست که نمی‌دانیم، یا بهتر بگویم “نمی‌دانیم که نمی‌دانیم”. برای همین بادانش الان شروع می‌کنیم و جلو می‌رویم و آماده پذیرایی از آنها هستم.

اما یادگیری‌های ما برای همان پروژه است و نه پروژه بعدی. پروژه بعدی یادگیری خودش را نیاز خواهد داشت.

Iterative به سبک ایرانی

ما قبلاً در روش‌های سنتی شش ماه تحلیل و طراحی انجام می‌دادیم  و شش ماه پیاده‌سازی و نهایتاً یک محصول به‌دردنخور می‌ساختیم، (به دلیل اینکه عدم قطعیت در نظر گرفته نمی‌شد) الان در ایران بسیاری از شرکت‌ها Iterative کار می‌کنند، یعنی همان محصول به‌دردنخور را در Iteration های مختلف می‌سازند و فقط دو هفته یک‌بار خوشحال هستیم که یک چیزی ساختیم. یعنی به عبارتی محصول هر دو فرآیند یکی است، فقط اسم‌ها فرق کرده است.

نتیجه‌گیری

به غیر اینکه ما در پروژه‌ها چیزهایی مانند زبان برنامه‌نویسی یا استفاده از ابزار را یاد می‌گیریم، بهترین هدیه برای پروژه بعدی طرز تفکر و مواجهه با مشکل است.
در پروژه‌های نرم‌افزاری، به دلیل عدم قطعیت در ابتدای پروژه هیچ انتخابی بهترین نیست.
بهترین یادگیری، یادگیری است که در همان پروژه به درد بخورد و نه در پروژه بعدی.
بهبود مستمر یعنی اینکه، همیشه سعی کنیم به سمت عالی بودن حر کت کنیم نه اینکه حالا بگذار در پروژه بعدی بهتر کارخواهیم کرد.

درباره اسد صفری

اسد صفری – مربی تحول چابک سازمان و تیم های نرم افزاری. مدارک حرفه ای: CSP - CSM - PSM - PSPO - CDA - Management 3.0 برخی تجربیات: رئیس دفتر تحول چابک شرکت داده ورزی سداد(بیشتر از ده تیم نرم افزاری) - مربی چابک شرکت رامند (تیم های موبایل و گیم سازی) - مدیر تولید نرم افزار SimplyDesk برای شرکت فرانسوی PCI - مربی مشاور شرکت های:خدمات انفورماتیک، ارکید فارمد، فراداده، الفبا برخی از سوابق مشاوره کوتاه مدت و تدریس : علی بابا، فناپ، تجارت الکترونیک پارسیان، بیمه سامان، مهندسین مشاور تجارت (بانک تجارت)، بیمه ایران، پارس آنلاین، شرکت رهنما، ورانگر، انتشارات پزشکی کوثر، فولا آلیاژی یزد، پارک علم فناوری کردستان و ... . عضو انجمن های بین المللی Agile Alliance - Scrum Alliance

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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