خب قبل از هر چیز باید خوب برنامه نویس ها را بشناسیم! در مطالب بعدی حتما در رابطه با خلق و خو ی عمومی یک برنامه نویس توضیحاتی ارائه خواهم کرد، اما فکر می کنم نیاز به یک تحقیق میدانی و آکادمیک اساسی در این زمینه با تلفیق روانشناسی باشد تا بهتر بتوان به این مسئله پرداخت.
اگر کتاب های مدیریت پروژه را مطالعه فرموده باشید و یا در زمینه مدیریت پروژه فعال باشید حتما با این قضیه آشنا هستید که اصلی ترین رکن هر پروژه نیروی انسانی آن پروژه می باشد . به عبارتی این منابع انسانی پروژه می باشند که مهر موفقیت و یا شکست پروژه را می زنند پس یکی از دغدغه های اصلی مدیران پروژه مدیریت منابع انسانی می باشد . مدیریت منابع انسانی در پروژه های توسعه نرم افزار یکی از سخت ترین کارهای مدیر پروژه می باشد. در ادامه به این سوال پاسخ خواهم داد که چرا مدیریت منابع انسانی پروژه های توسعه نرم افزار مشکل تر است ؟ و راجع به مدیریت نیروی انسانی (برنامه نویس) به سبک چابک صحبت خواهم کرد.
چرا مدیریت منابع انسانی پروژه های توسعه نرم افزار مشکل تر است ؟
به این دلیل که نرم افزار تولید نمی شود بلکه توسعه داده می شود و این توسعه کلید این معما است. اگر دقت کرده باشید در همه کتاب های مرجع و اصلی به جای واژه Production از Development استفاده شده است که کاملا درست است . البته اینکه نرم افزار قابلیت تولید ندارد بسیار خوب است چرا که اگر اینگونه نبود همه ما باید به دنبال شغلی غیر از توسعه نرم افزار می گشتیم زیراکه شرکت جاه طلبی مانند مایکروسافت همانند شرکت های تولید خودرو خط تولید راه مینداخت و همه را از کار بیکار می کرد بدلیل اینکه هر چه که مشتری درخواست میکرد می توانست با اضافه کردن یک خط تولید جدید تولید و عرضه نماید.
فرق توسعه و تولید را با بیان یک مسئله توضیح می دهم . فرض کنید یک فست فود داریم که در آن غذای آماده برای ملت سرو می شود . خوب این فست فود تولید است بدلیل اینکه شما یک سری آدم که نیاز نیست متخصص باشند را به عنوان یک ماشین تولید دور هم جمع کردید و این ماشین تولید می کند .
این ماشین تولید دارای خصوصیات زیر است :
- این ماشین خطایی در تولید ندارد (در ساخت ساندویچ همبرگر error ای وجود ندارد) .
- شما به افرادی که تشکیل دهنده ماشین تولید هستند به عنوان یک چرخه دنده نگاه می کنید که هر وقت لازم شد می توانید عوضش کنید و یک چرخ دنده بهتر بگیرید .
- کاری که این ماشین و یا یک ساندویچ درست کن انجام می دهد یکنواخت و پایدار است (مثلا معلوم است محمود یک ساندویچ همبرگر را در عرض 2 دقیقه به خورد مشتری می دهد ) .
- رویه کاریشان استاندارد است ( مثلا معلوم است برای تولید پیتزای قارچ به چه موادی نیاز است و چگونه باید این مواد با هم مخلوط و پخته شود).
- نیازی به تست نیست (ساندویچ رو اگر تست بکنید مشتری ناراحت خواهد شد ) .
ولی در توسعه نرم افزار ما به هیچ وجه چنین خصوصیاتی نداریم . اعضای تیم ما حتما باید متخصص امور توسعه نرم افزار باشند . در توسعه می توان خطاهای مهلکی داشت به نحوی که کل پروژه Fail شود . اعضای تیم توسعه به آسانی و همیشه قابل تعویض نیستند . کاری که انجام می دهند همیشه یکنواخت و پایدار نیست . رویه کاری استانداری که بتوان برای همه توسعه گران نرم افزار پیچید وجود ندارد و باید نسبت به اقتضای پروژه و محصول کار شود . 100% محصول و یا برآیند پروژه باید تست شود .
با مقایسه بین تولید و توسعه می توان به اهمیت نیروی کار پی برد . در چنین شرایطی که نیروی کار بسیار مهم می باشد و در واقع کل پروژه نیروی کار است آیا نیاز به مدیریت صحیح بر روی این منبع احساس نمی شود؟
شرکت های توسعه نرم افزار در ایران معمولا و اکثرا در مقوله مدیریت منابع انسانی با مشکل مواجه هستند. به همین دلیل است که اکثر برنامه نویس ها در محیط کاری خود احساس راحتی نمی کنند و همیشه عذاب می کشند و اکثرا فکر می کنند که در حال حیف شدن می باشند و باید در شرکت هایی مثل گوگل و یا مایکروسافت کار کنند .
دلیل اینکه برنامه نویس در محیط کار احساس راحتی نمی کند بدلیل مدیریت اشتباه می باشد . مدیریت جوی را درست می نماید که برنامه نویس در آن جو نمی تواند نفس بکشد و همیشه دوست دارد در جای دیگری جز آنجا کار کند . به نظر من مدیران باید به قول مدیران آمریکایی به نیروی انسانی کلک بزنند (کلک به منزله ترغیب به کار است و نه چیز دیگر) . کلک به این صورت که کاری بکنیم نیروی کار علاقه مند به پروژه بشود . گفتم به پروژه و نه برنامه نویسی به این دلیل که خوشبختانه اکثر برنامه نویس های ما به برنامه نویسی علاقه شدیدی دارند ولی متاسفانه به خود پروژه و یا محصول علاقه چندانی ندارند . برنامه نویس کاری ندارد که پروژه به کجا میرود آیا Fail می شود یا نه ؟ آیا پروژه سر وقت تمام می شود یا نه ؟ و این خیلی بد است که برنامه نویس فقط می خواهد رفع تکلیف کند .
برای اینکه بتوانیم برنامه نویس ها را از حالت رفع تکلیف خارج نماییم باید انگیزه و علاقه در آنها به وجود بیاوریم . شاید بعضی از مدیران فکر می کنند انگیزه فقط با حقوق بیشتر به وجود می آید ! بلی این مورد هم بی تاثیر نیست ولی اگر یک شرکت به برنامه نویس شما 10 هزار تومان هم بیشتر بدهد او خواهد رفت . پس یک انگیزه دهنده قویتر و بهتر نیاز است . به نظر بنده مهم ترین انگیزه درگیر کردن برنامه نویس به کل پروژه و ایجاد جو دوستانه (و نه ارباب رعیتی ) بین برنامه نویسان و مدیران است . به نظر شما چگونه می توان برنامه نویس ها را درگیر کل پروژه کرد به صورتکی که خودشان را مسئول بدانند ؟
بلی با رجوع به عنوان مقاله حتما خواهید توانست به این سوال پاسخ دهید .
Agile به ما کمک خواهد کرد که انگیزه لازم را در تیم توسعه ایجاد نماییم
ما در Sprint Planning کل تیم را درگیر پروژه می کنیم چراکه همه نظر می دهند که Story A چند روز کار می برد و این یعنی همه درگیر Story A هستند در حالیکه شاید یک نفر Story A را انجام خواهد داد. در نوبت بعدی بر روی Daily Scrum تاکید کردم که این جلسه در نوع خود یک انگیزه دهنده ناب می باشد .
در روش سنتی اول صبح هیچ کس حوصله ندارد و به محض رسیدن پشت کامپیوتر مستقر می شود و شروع به تق و توق می کند , انگار همه با هم قهرند . ولی در اسکرام اینگونه نیست , در اول صبح قبل از شروع به تق و توق تیم توسعه جلسه روزانه اسکرام را تشکیل می دهد. این جلسه که معمولا با بگو و بخند همراه است باعث می شود تیم روز را به صورت Active شروع نماید.
مورد دیگر Self-Organize بودن تمام متدلوژی های Agile مانند اسکرام می باشد . به طوریکه نیاز به سازماندهی آنچنانی اعضای تیم توسعه نیست و اعضای تیم بدلیل آشنایی با کل پروژه و شناخت کافی از نیازمندی های پروژه سازماندهی می شوند. و این هم می تواند باز در انگیزه بخشیدن به نیروی کار موثر باشد.
خلاصه تمام مطالب اینکه Agile می تواند یک جو دوستانه و از همه مهمتر یک جو فعالانه (جوی که همه فعالند و نتیجه پروژه برای همه اعضای تیم مهم است ) برای پروژه های توسعه نرم افزار به ارمغان بیاورد. پس فکر می کنم وقتش رسیده باشد که چابک شوید!
در مقاله بعدی بالاخره به سوی اسکرام حرکت می کنیم!