PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : برنامه ریزی استراتژیک برای شرکتهای نرم افزاری 6 - یارکشی



Y@SiN
11-19-2009, 07:33 PM
بچه که بودیم در مدرسه هر وقت قرار بود فوتبال بازی شود و یا یک بازی دسته جمعی و گروهی بازی کنیم، اولین کاری که می شد "یارکشی" بود که همه می دانید، به شکلی که دو نفر سرگروه، سعی می کردند، تیم مورد نظر خودشان را از بین بچه ها انتخاب کنند، اول قوی تر ها انتخاب می شدند تا نوبت به ضعیف ها برسد و تقسیم شوند. (یکی مثل من را هم که هیچ وقت در فوتبال انتخاب نمی کردند، چون بلد نبودم و فقط بازی را خراب می کردم!)
مدیران شرکتهای نرم افزاری و مدیران پروژه هم باید فرآیند "یارکشی" را خوب بلد باشند و به صورت برنامه ریزی شده راجع به آن فکر کنند. به عقیده من دو زمان حساس برای یارکشی وجود دارد که اگر در آن دقت کنیم، شرط لازم برای موفقیت را برقرار کرده ایم و اگر اشتباه کنیم، شکست کارمان تقریبا قطعی است. این دو زمان عبارتند از :
- زمان تاسیس شرکت و یا استخدام نیرو: در این زمان شما باید از داشته ها (رزومه افرادی که پیشنهاد شده اند) بهترین ترکیب را با توجه به میزان بودجه خود انتخاب کنید. دقت کنید که حتی اگر پول کافی هم داشته باشید، انتخاب همه قوی ترین ها انتخاب درستی نیست، در یک شرکت کارهایی هست که افراد قوی از انجام آن خسته می شوند و انگیزه کافی برای آن ندارند و باید کسانی باشند که آن کارها را انجام دهند. (درست مثل رئال مادرید که می گویند پرستاره است، اما معمولا ناموفق! نشوید)
- زمان تشکیل تیم پروژه: معمولا شرکتهای تولید کننده نرم افزار به صورت پروژه ای کار می کنند و اغلب چند پروژه به صورت موازی را دنبال می کنند. برای همین در زمان آغاز فرآیند توسعه هر پروژه نیز باید تیم خود را از بین داشته ها (گروه های تخصصی شرکت خود) انتخاب کنید.
دقت کنید، هزینه تغییر در تیم (چه در پرسنل شرکت، چه در تیم پروژه) بسیار سنگین تر از هزینه تشکیل اولیه است، پس در انتخاب خود دقت کنید و از اینکه زمان زیادتری صرفشود و وسواس بیشتری به خرج دهید اصلا نگران نباشید، این زمان در طول حیات پروژه نقش خود را نشان خواهد داد.

نکته دیگر اینکه به جز تخصص هر کس باید به شرایط روحی و کاری وی هم دقت شود. دو برنامه نویس هم سطح در دانش فنی، به لحاظ شخصیتی کاملا می توانند متفاوت باشند. برای مثال برنامه نویسی کارهای تولید مولفه (Component) را بیشتر دوست دارد، برنامه نویس دیگر طراحی واسط کاربری، یکی برنامه را سریع می نویسد و آنچه را نمی داند یاد می گیرد، اما برنامه اش ممکن است خطاهای ریز و درشت داشته باشد،یکی کند است و ساکن اما در عوض برنامه تولیدی اش کمترین خطا را داشته باشد.
بنابراین باید دقت کنید که با توجه به ماهیت شرکت و پروژه، چه برنامه نویسی با چه مشخصه ای می خواهید، گاهی ترکیب دو برنامه نویس مختلف برای یک کار، اثر خوبی دارد. (به بحث Pair Programming در متدولوژی XP مراجعه کنید.)
نکته دیگری که اهمیت آن بسیار زیاد است، داشتن روحیه کار گروهی در تیم است، چه بسیار افراد باهوش و خلاقی که نمی توانند در یک تیم کار کنند و این برای یک پروژه نرم افزاری که اغلب به صورت گروهی تولید می شود بسیار مضر است و بهتر است یا عطای این افراد را به لقایشان ببخشید یا سعی کنید روحیه کار گروهی و تیمی را به آنها آموزش دهید.
در یک تیم پروژه سعی کنید، به جز افراد قوی گروهتان یک یا دو نفر افراد ضعیف تر را هم انتخاب کنید، تا ضمن کمک به قوی تر ها و انجام خورده کاریهایی که قوی تر ها دوست ندارند انجام دهند و یا از دستشان در می رود، در کنار آنها آموزش هم ببینند و تجربه کسب کنند.
در یک شرکت نرم افزاری یک پروژه به تنهایی مهم نیست، بلکه تاثیرش بر سایر پروژه های بعدی نیز مهم است و سعی کنید به اندازه کافی تیمتان را برای انجام پروژه های بعدی توانمند کرده، متکی به یک یا دو نفر ثابت نباشید که "نیروی کامپیوتری بی وفاست!"
در پایان می خواهم به بحث مهندسی مجدد تیم ها هم اشاره کنیم، اگر هدفی برای کار خود ترسیم کرده اید و می بینید به آن نمی رسید، به جز بررسی سایر علل، گروه کاریتان را هم بررسی کنید، شاید خوب یار کشی نکرده اید و یا از افراد در پست غیر تخصصیشان استفاده کرده اید. باید یا در تیم جابجایی انجام دهید، آموزش مجدد ارائه کنید، ترکیب تیم را عوض کنید و نیروی تازه نفس به آن اضافه کنید، یا حتی شاید لازم باشد کل تیم را منحل و تیم جدیدی تشکیل دهید، از این کار نترسید که موفقیت شما بسته به آن است.
همین!