چندین بارشده است بشنویم که کسی گفته در پروژه بعدی فلان اشتباه را دیگه انجام نمیدهم، ولی در پروژه بعدی اشتباه بدتری انجام داده است واقعاً مشکل کجا است چرا این یادگیریها مانع اشتباهات بعدی نمیشوند؟
پروژههای نرمافزاری خطی نیستند
بسیاری از اوقات ما در پروژهها، نیازمندیها را اشتباه تشخیص میدهیم و بالطبع فیچرهای اشتباهی را برای مشتری عرضه میکنیم، یا در انتخاب تکنولوژی اشتباه میکنیم و هزینه تولید و توسعه بالا میرود، یا بعداً میفهمیم معماری یا طراحی, مناسب این پروژه نبوده است.
کاری که شاید اغلب ما میکنیم این هست که تصمیم میگیریم این اشتباه را تکرار نکنیم. ولی مشکل اینجاست که هیچ پروژهای شبیه هم نیست، و شاید تا آخر عمرتان شرایط یکسانی به وجود نیاید تا فرصت پرهیز از آن اشتباه را بیابید. حتی اگر شما همان پروژهها را از اول بازنویسی کنید، احتمال اینکه دوباره اشتباه کنید وجود خواهد داشت.
علت اینکه تجربیات دقیق ما در آینده به درد نمیخورند این است که:
- پروژههای نرمافزاری شبیه هم نیستند
- حتی اگر موضوع پروژه برای ما تکراری باشد، آدمها و نفرات جدید شرایط متفاوتی در پروژه ایجاد خواهند کرد.
- تکنولوژیها و نیازمندیها دائم در حال عوض شدن هستند، پس نا اطمینانی و عدم یقین به درست بودن انتخابها دائم با ما است.
- دانش جدید یعنی انتخابهای جدید، و انتخابهای جدید یعنی امکان اشتباههای جدید.
راه چاره چیست؟
اگر قرار باشد تجربیات گذشته در آینده به درد نخورد پس چاره چیست؟ چهکار باید کرد؟
مدل فکر کردن را باید یاد گرفت نه اینکه یک ایده را عیناً پیادهسازی کرد.
هرزمانی که پروژه شروع میشود، بارها از برنامهنویسها یا نفرات مختلف شنیدهام، که میگویند ما دقیقاً میدانیم چه میخواهیم یا چهکار باید بکنیم، یا این دفعه فرق دارد و میترکونیم. اینکه ما به مفروضات و دانستههای خود بسیار اطمینان داشته باشیم و سعی کنیم بسیاری از تصمیمها را بدون در نظر گرفتن آینده نامعلوم همان اول پروژه بگیریم بسیار وضعیت را آماده شکست خواهد کرد.
اینکه من قبلاً این کار رو کردم، خوب نبود و این سری باید این کار رو بکنیم چون حتماً جواب میگیریم، دلیل خوبی نیست.
بیرون از جعبه باید فکر کرد
بسیاری از ما وقتی در حال تصمیمگیری هستیم، روی راهحل اصرار داریم و فکر میکنیم این بهترین راهحل است که از سمت خداوند برای ما نازلشده است، حتی به حرف دیگران هم گوش نمیدهیم و فقط در فکر پیادهسازی آن هستیم، منتهی بسیار دیر میفهمیم که این اشتباه بوده است.
بیرون از جعبه فکر کردن یعنی اینکه، همیشه یک درصد جای خطا برای ایدههای خودمان در نظر داشته باشیم و سعی کنیم ایدههای دیگران را هم بشنویم.
بهترین چیزی که در پروژه بعدی به درد شما میخورد این است که یاد بگیریم چگونه باید بیرون از جعبه فکر کرد.
در عدم قطعیت، بهترین انتخاب در کار نیست
ما درجایی قرار داریم که کاملاً با پدیده عدم قطعیت مواجه هستیم، یعنی خیلی وقتها تا اواسط پروژه متوجه نمیشویم که در انتخاب تکنولوژی یا نیازمندیها درست عمل کردهایم یا نه. برای همین نمیشود در اول پروژه بهترین انتخاب را انجام داد، زیرا همیشه انتخاب بهتری هم در آینده پدیدار خواهد شد، پس ما به دنبال یک انتخاب خوب هستیم نه بهترین انتخاب.
بهبود مستمر کلید موفقیت
یکی از دلایلی که در روشهای چابک چرخشی یا در به صورت اسپرینتی کار میکنیم به دلیل عدم قطعیت است، یعنی ما باور داریم که یکسری چیز هست که نمیدانیم، یا بهتر بگویم “نمیدانیم که نمیدانیم”. برای همین با دانش الان شروع میکنیم و جلو میرویم و آماده پذیرایی از آنها هستم.
اما یادگیریهای ما برای همان پروژه است و نه پروژه بعدی. پروژه بعدی یادگیری خودش را نیاز خواهد داشت.
اسپرینت ها به سبک ایرانی
ما قبلاً در روشهای سنتی شش ماه تحلیل و طراحی انجام میدادیم و شش ماه پیادهسازی و نهایتاً یک محصول بهدردنخور میساختیم، (به دلیل اینکه عدم قطعیت در نظر گرفته نمیشد) الان در ایران بسیاری از شرکتها چرخشی کار میکنند، یعنی همان محصول بهدردنخور را در اسپرینت های مختلف میسازند و فقط دو هفته یکبار خوشحال هستیم که یک چیزی ساختیم. یعنی به عبارتی محصول هر دو فرآیند یکی است، فقط اسمها فرق کرده است.
نتیجهگیری
به غیر اینکه ما در پروژهها چیزهایی مانند زبان برنامهنویسی یا استفاده از ابزار را یاد میگیریم، بهترین هدیه برای پروژه بعدی طرز تفکر و مواجهه با مشکل است.
در پروژههای نرمافزاری، به دلیل عدم قطعیت در ابتدای پروژه هیچ انتخابی بهترین نیست.
بهترین یادگیری، یادگیری است که در همان پروژه به درد بخورد و نه در پروژه بعدی.
منبع: https://t.me/iranagile