فرق کلوچه سازی با توسعه نرم افزار

فرق کلوچه سازی با توسعه نرم افزار

–          من : “اکبر آقا، سلام. دستگاههای جدید مبارک”

–          اکبر آقا : “قربونت، خواستیم خط تولید رو مکانیزه بکنیم”

–          من : “برای چی؟ اینطوری یک سری آدم هم که بیکار میشن”

–          اکبر آقا :”ببین دیگه کارگر صرف نمیکنه کلی هم ناز و نوز داره، گذشته از این ما میخاییم تولیدمون رو دو برابر کنیم با این ماشین ها میتونیم چند شیفت تولید کنیم”

 همیشه وقتی از دوستان یا همکاران یا شرکت های مختلفی که در آن هستیم “لفظ خط تولید نرم افزار” رو می شنوم یاد این خاطره میفتم. برای همین دوستان نزدیک که با من کار کرده اند می دونند که همیشه از “ما که کلوچه تولید نمی کنیم …” استفاده می کنم.

 اما واقعا چرا تولید کلوچه با توسعه نرم افزار فرق دارد؟

 –          هر چقدر بیشتر بهتر؟!

در خط تولید معمولا هر چقدر بیشترش بهتره، یعنی خط تولید رو سه شیفته می کنند تا تولید بیشتر بشه، ولی در نرم افزار کمش بهتره. اگر تجربه پروژه نرم افزاری دارید، لازم هم نیست کتاب پرسمن رو خونده باشید، خواهید فهمید که مابین “تعداد قابلیت ها یا ویژگی ها یک نرم افزار” و “هزینه نگه داری” یک رابطه مستقیم وجود دارد. خیلی ساده، ویژگی بیشتر یعنی باگ بیشتر، باگ بیشتر یعنی دیباگ بیشتر، دیباگ بیشتر یعنی زمان بیشتر، این یعنی عصاب خوردی برنامه نویس ها و هزینه کارفرمای بدبخت.

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

–          افکار کلوچه سازی به جای نرم افزاری

فرق نداره که روش توسعه  اسکرام باشد یا واترفال. مسئله این هست که فکر کلوچه سازی است.

مدیران فکر می کنند چون به برنامه نویس ها پول داده اند پس باید پدر اونها رو در بیارند و تولید رو به حداکثر برسانند، ویژگی پشت ویژگی. برنامه نویس ها هم که چون پول گرفته اند و احساس گناه می کنند فکر می کنند هر چقدر بیشتر کد تولید کنند بهتره. مشتری هم که قراره پول بده بابت نرم افزار، کار نداره نرم افزار برای چه کاری هست، میخاد همه چی داشته باشه.

–          لعنت به نیازمندی ها

یکی از بدترین کلماتی که وارد نرم افزار شد همین کلمه “نیازمندی” بوده است. نیازمندی یعنی اینکه به تو ربطی نداره چرا این رو باید انجام بدی، تو باید کارت رو انجام بدی. نیازمندی اینکه این اینطوری هست و باید باشه. نیازمندی یعنی اینکه از اولش همین طوری بوده و باید باشه.

باید باشه … کی گفته باید باشه؟!؟!؟! که گفته اصلا نیازه؟ چرا اصلا نیازه؟

همین لفظ نیازمندی ها که یک سری دوستان تنهایی اول پروژه ها شروع می کنند به تهیه آنها، بعد دست برنامه نویس ها میرسه برای تولید.

نشانه های افکار کلوچه سازی در پروژه های نرم افزاری

  • مدیران می خواهند چند نفر برنامه نویس جدید به پروژه اضافه کنند تا سرعت تولید رو بالا ببرنند.
  • مدیران برای اینکه بیشتر تولید کنند، به ازای انجام کار بیشتر پاداش یا کارانه می دهند.
  • هر چقدر بیشتر تولید کنیم بهتره. خروجی هر چقدر بیشتر می شود (Feature بیشتر) خوشحال تر می شویم، بدون اینکه در نظر بگیریم تاثیر این خروجی بر کاربران چی هست؟!
  • یک برنامه نویس شاخ میاریم (سرکارگر) بقیه برنامه نویس ها در حد تایپیست؛ اون فکر می کنه بقیه انجام می دهند.
  • اول تولید می کنیم بعد دنبال این می گردیم که چه کسی مشتری این محصول ما است.
  • برنامه نویس ها کاری با مصرف کننده ندارند و فقط موظف هستند نیازمندی ها را انجام بدهند همین.

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

چابک و موفق باشید