چگونه یک تیم نرم افزاری را مدیریت کنیم؟

Photo by Austin Distel on Unsplashدر این مقاله به بررسی راهکارهای مدیریت یک تیم نرم افزاری برای رسیدن به محصول نهایی می پردازیم. می توان از این تکنیک ها برای مدیریت تیم های غیر نرم افزاری هم استفاده کرد. اما چون تجربه بنده بیشتر نرم افزاری هست، عنوان این مقاله را بر این اساس قرار دادم.این مقاله حاصل تجربه هایی است که از موفقیت ها و شکست ها در پروژه ها مختلف در شرکت های مختلف اعم از پتروشیمی، مواد غذایی، موبايل و … و مخصوصا پروژه هایی که خود در آن ها مدیر تیم بوده ام، هست. امیدوارم موردعنایت خوانندگان قرار بگیرید و مهمتر از همه مورد استفاده قرار گیرد. در نهايت خوشحال خواهم شد اگر پیشنهادات شما را در زمینه بهبود بخشیدن به این پروسه مهم یعنی مدیریت یک تیم، بشنونم یا بخوانم.پیشاپیش عذرخواهی می کنم بابت این که نوشته های من عکس ندارندویژگی ها یک مدیربیاید سريعا برویم سر اصل مطلب. مهم ترین و اصلی ترین چیزی که سبب پیشرفت هر تیمی می شود یک مدیر خوب هست و بر عکس. مدیری که نداند چه چیزی می خواهد چگونه می تواند تیم را در جهت دست یافتن به هدف رهبری کند. با مدیران زیادی کار کردم می خواهم یک حقیقت نا نوشته را برای شما بیان کنم که یک مدیر خوب ذاتی است یعنی ویژگی است که از دوران کودکی پرورش می یابد. مديران زیادی را می بینم که هزاران مدرک مدیریت گرفته اند اما قدرت مدیریت و رهبری تیم را ندارند.متاسفانه به وفور شاهد مديران زیادی هستیم که به خاطر بله قربان گویشان مورد تایید مديران بالاتر یا سرمايه گذاران یا موسسان شرکت هستیم. چنین مدیرانی چون قدرت نه گفتن به مدیران بالا رتبه را ندارند و می ترسند که این سمت مهمی که به دست اورده اند را از دست بدهند سبب می شوند که نه تنها خود این سمت را از دست بدهند بلکه بهترین برنامه نویسان تیم را هم از دست بدهند. چنین مدیرانی دائما دنبال نیروهایی می گردند که آن ها تایید کنند یا چابلوسیشان را بکنند. اگر در تیم برنامه نویسان حرفه ای وجود داشته باشند تیم به چند دسته تقسیم می شود و فروپاشی تیم قطعی است.در ادامه چند ویژگی مهم از یک مدیر خوب را باهم بررسی می کنیم.قدرت نه گفتناین ویژگی برای همه انسان ها خیلی مهم است: چیزی را که قبول ندارید را نپذیرید. مثلا به شما می گویند تعطیلات نوروز را در شرکت بمانید تا مدیر محترم شما بيشتر دیده شود. اینجا جایی هست که شما بایستی نه بگویید حتی اگر نتیجه اش اخراج شما باشد. چون این خواسته معقولی نیست. به فرض این که شما این خواسته را قبول کردید چه تضمینی وجود دارد قرارداد بعدی شما را تمدید یا تجدید کنند. پس به قول نیما: چایت را بنوش، نگران فردایت نباشاگر یک مدیر این ویژگی را داشته باشد سبب می شود افراد تیم به شما اعتماد کنند و این یعنی نیمی از موفقیت. مدیران ضعیف فقط برای نیروهای تحت مدیریت خود چنین رفتاری را دارند و آن هم به شیوه ارباب رعیتی.قاطع بودنوقتی شما از یک نفر خواسته ای را دارید بایستی آن را با قاطعیت درخواست کنید و در گرفتن نتیجه مورد نظر قاطع باشید. البته درخواستتان باید منطقی باشد. بعضی وقتا به خاطر ارتباطات رفاقتی مدیر با بعضی از برنامه نویسان درخواست به شیوه ضعیف و لحن ضعیف بیان می شود.خودم از نزدیک شاهد این قضيه بودم که یک مدیر، کاری را به یک برنامه نویس انتساب کرده است، این کار نهایتا با فرجه ۲ هفته زمان می برد بعد از چهارهفته جلو همه با یک لحن شل و ول و طنز به برنامه نویس می گه ببینیم بالاخره آقای فلان این کار رو کی تموم می کنه. این کار چند مشکل داره ۱. جلو همه نبايد چه با خنده و چه با ناراحتی کسی را باب انتقاد قرار دهید ۲. این حالت شل و ول بودن این حس رو به بقیه انتقال میده که چرا دارم خودمو خسته می کنم و زحمت می کشم اینا که همینجوری دارن حقوق می دن.بهتر است ساكت بمانم تا این که شیوه بیان ضعیفی را به کارگیرم.پس در درخواست و پیگیری کارها قاطع باشید.عادل بودنمهمترین و مهمترین و مهمترین ویژگی یک مدیر است. به وفور این مورد را در شرکت ها مشاهده می کنیم کسی که ۲۰ میلیون حقوق میگیره کارهاش به مراتب کمتر و سبک تر از کسی هست که کاراموز هست یا ماهی ۸ میلیون حقوق می گیره.نحوه تخصیص کارها بایستی براساس میزان حقوق نیرو باشد. افرادی که توانایی بالایی دارند و حقوق پایینی درخواست کرده اند، پیوسته بایستی حقوق آن ها بیشتر شود تا با سایر نیروها در یک توازن قرار گیرند. چون وقتی مشخص شود (که می شود) که نیرویی که کار بیشتر و حقوق پاینتری می گیرد امیدش را از دست می دهد و انسان است ممکن است کارهای عجیب غریبی از او سر بزند.راه حل دیگر این است که در مصاحبه اگر مشخص شد که توانایی خیلی بالایی دارد و حقوق کمی درخواست کرده است او را رد کنید و اگر او را متوجه اشتباهش کنید لطف بزرگی در حق او انجام داده اید. تا حالا در ایران موردی گزارش نشده است که انقدر با معرفت باشد :)عدم تبعیضبه هیچ وجه نبايد با برخی افراد خیلی صمیمی باشید و با برخی خیر. این کار سبب می شود که اعتماد ها از بین برود و اعضای تیم سست شوند. رحیم پاشو بیا تو اتاقم کارت دارم پسر. چطوری با مرام دیروز منتظرت بودم بیای، نیومدی. خارج شرکت هر رفتاری داشتید مهم نیست اما داخل شرکت همه را با یک چشم ببینید.مدیر بایستی هدف داشته باشد و همه را برای رسیدن به آن هدف تشويق کنداگر مدیر با این دید به قضیه نگاه کند که بریم جلو ببینیم ببینیم چی میشه و هیچ گونه نقشه ی اولیه ای نداشته باشد هیچ کس نمی تواند وظایف خود را به درستی انجام دهد چون که هدف مشخصی وجود ندارد. برای مثال، ما می خوایم یک باشگاه مشتریان پیاده سازی کنیم و بریم ببینیم خدا چی می خواد. این نکته را خاطر نشان کنم که اصلا نیازی نیست که برنامه نویس ها از جزییات تمام کارها با خبر باشند، بلکه این قضیه برای خود مدیر مهم است که بداند چه می خواهد تا دیگران را در مسیر درست قرار دهد. بارها پیش أمده است که برنامه نویسی از یک مدیر در مورد کاری که می خواهد انجام دهد سوالی می پرسد و مدیر نمی تواند جواب درستی ارایه دهد تا این که خود برنامه نویس یک راه حل ارایه می دهد و پیاده سازی می کند و در نهایت تغییر هم می کند. این امر سبب از دست دادن زمان زیادی می شودمدیر بایستی برنامه نویسان را درک کنداگر مدیر یک تیم، خودش برنامه نویس بوده باشد به احتمال زیاد برنامه نویسان را به راحتی می تواند درک کند. برنامه نویسان معمولا انسان های درونگرایی هستند و ارتباط برقرار کردن با ان ها نسبت به برونگراها سخت تر است. بعضی وقت ها با یک تشکر ساده، در آن انگیزه ای ایجاد می کنید که به راحتی از پس سخت ترین کارها بر می آیند در حالی شاید با حقوق بيشتر هم نتوانید چنین انگیزه ای را در آن ها ایجاد کنید. اگر کارمندی ناراحت است باید به او زمان داد تا مشکلش را حل کند نه اینکه چرا امروز سلام نکرد الان حالشو می گیرم.مدیر حرف آخر را می زندمدیر همیشه باید تصمیمات نهایی را بگیرد و نتایج را به بقیه اعلام کند. نباید یک برنامه نویس برای برنامه نویس دیگر تعیین تکلیف کند. بعضی وقت ها یک تصمیم اشتباه است اما به نفع تیم و پروژه است و مدیر نباید از این تصمیم صرف نظر کند و باید با قاطعیت آن را اعلام کند.قدرت مدیریت بحرانهمه ما روزهای سخت و طوفانی را در زندگی تجربه کرده ایم. وقتی پروژه روی اینترنت می رود یا پابلیش می شود و مشتریان زیادی پشت در هستند و باگ دارد یا مشکلی دارد، نباید دنبال مقصر بگردیم. در مرحله اول بایستی مدیر آرامش خود را حفظ کند چون مدیر نگران، در تیم استرس ایجاد می کند و به جای اینکه کارها خوب پیش برود بدتر هم خواهد شد. حتی اگر لازم باشد، مدیر می تواند کل روز را داخل اتاقش به مدیتیشن بپردازد یا با یک نفر دردودل کند یا گریه کند، اما نباید نگرانیش را به تیم منتقل کند.مدیر بودن واقعا مسولیت بزرگی هست که متاسفانه همه دنبال پولش هستند و عدالت را فدای پول می کنند اگر واقعا می دانید که نمی توانید مدیر خوبی باشید به خاطر تیم کناره گیری کنید. موضوع فقط حقوق نیست بلکه به افراد تیم ضربه ها جبران ناپذیری را وارد می کنیددر ادامه به چند نکته در مورد کار و برنامه نویسان اکتفا می کنم و بیشتر از این وقت شما نمی گیرمچگونه یک کار را از یک برنامه نویس بخواهیم که انجام دهدبهترین روش بورد هست سعی کنید یک بورد داشته باشید که همه کارها با درجه اهمیتشان در ان درج شده باشند.اگر از اسکرام استفاده می کنید می توانید از تسک بورد های gitlab، trello، jira و … استفاده کنید.مهم نیست از کدام یک از این ها استفاده می کنید مهم این است که مدیریت خوبی داشته باشید. مدیرهای خوبی را دیده ام که از excel استفاده می کردن. مدیران بدی را هم دیده ام که از بهترین ابزارها استفاده می کردند. اما یک مدیر خوب در نهایت برنده است.کارها را زمانبندی کنید برخی از کارها امکان زمانبندی ندارند اما بنویسید برای بررسی اولیه این کار، ۱ روز زمان لازم است تا مشخص شود کل کار چقدر زمان می خواهد.وقتی زمانبندی ها مشخص شد دیگر نیازی نیست چپ و راست بیفتید دنبال برنامه نویس ها، چی شد چی شد راه بیاندازید. شما می توانید با خیال راه راحت بروید داخل اتاقتان بنشنید و به تسک های اسپرینت بعدی فکر کنید.جلسات را تا حد امکان کاهش و در صورت نیاز حذف کنیدمدیران فقط باید در صورت نیاز جلسه برگزار کنند نه این که به طور مداوم جلسه بگذارد با برنامه نویس با آبدارچی با پیک موتوری و … . یک مدیر بایستی فقط در صورت لزوم و جایی که برنامه نویسان یا کارمندان از مسیر خارج می شوند با آن ها جلسه بگذارد، اگر با یک پیام متنی آن را رفع و رجوع کرد بهتر است که جلسه هم حذف شود. برنامه نویسان بهتر است کنسول یا فوتبال دستی بازی کنند تا اینکه مدام در جلسه باشند. یک برنامه نویس بایستی خودش را با کاری که انجام می دهد اثبات کند نه با حرف زدن.در یک جلسه شرکت داشتم که موضوع بحث كلمه “گذاردن “بود که با “ز” نوشته می شود یا “ذ”، که دو ساعت طول کشید.اگر تسک های اسپرینت یک برنامه نویس زودتر از موقع مقرر تمام شد، چه کنیماگر یک برنامه نویس تسک هایش را زود تر از موعد مقرر تمام کرد می تواند به حساب شرکت به خانه برود. اما مدیر محترم زیر سوال می رود، خدایا با این قضيه چه کنیم؟تسک ها بایستی کار مورد نظر را انجام دهند و کاملا تست شده باشند اگر شخص تست کننده، تاییده را داد برنامه نویس می تواند به خانه برود. یا اگر خود برنامه نویس هم مایل باشد می توانید تسک های جدیدی را وارد اسپرینت کنید و به ازای آن به او پاداش بدهیداگر تسک های اسپرینت یک برنامه نویس تمام نشد چه کنیمدر تخصیص تسک ها دچار اشتباه شده ایم یا یک مشکل پیش بینی نشده ای پیش امده است که بایستی در اسپرینت بعدی آن را ادامه دهیم، اما تسکی که این مشکل را ایجاد کرده است را به برنامه نویس دیگری می دهیم که تسک های اسپرینت قبلی را زوتر تمام کرد البته با در نظر گرفتن میزان حقوق. توجه داشته باشید تسک های نصفه انجام شده را نبايد به برنامه نویس دیگری انتساب کرد. اگر برنامه نویس ۲ روز زمان گذاشته باشد و متوجه کاری که انجام می دهد، نشده باشد در توضیحاتی که ارایه می دهد می توان این قضیه را متوجه شد. انگاه می توان آن تسک را در اسپرینت بعدی به برنامه نویس دیگری انتساب کرد.نکته: ميزان حقوق فرد و تخصیص تسک را می توان اینگونه بیان کردیک تسک داریم: که عملیات حساب کردن امتیاز کاربر را در یک scehdule سیستم انجام می دهداین تسک برای برنامه نویسی که ۲۰ میلیون حقوق می گیرد بایستی در یک هفته انجام شوداما برای برنامه نویسی که ۱۰ میلیون حقوق می گیرد قضیه متفاوت است حتی اگر نسبت به برنامه نویس فوق حرفه ای تر باشد او می تواند آن را در ۲ هفته انجام دهد.پس اگر تسک های اسپرینت یک برنامه نویس تمام نشد می توان از این حالت برای بررسی نیروها استفاده کرد و نقاط قوت و ضعف نیروها در عمل را می توان پیدا کرد. مثلا این نیرو در انجام تسک های چالش دار بهتر است و ان نیرو در انجام تسک های روتین. قاعدتا نیروی که تسک های چالشی انجام می دهد بایستی حقوق بیشتری هم بگیرد.مدیریت افراد باهوش - حرفه ایشما نمی توانید چند فرد باهوش را در یک تیم گرد هم آورید. مدیریت چنین افرادی به شدت سخت است. من در اینجا بین افراد باهوش و افراد حرفه ای تمایز قایل می شوم. افراد باهوش مسایل را به راحتی درک می کنند و برای آن راه حل پیدا می کنند. اما افراد حرفه ای یک سطح بالاتر هستند به این نوع افراد در تیم بيشتر از افراد باهوش اعتقاد دارم. افراد حرفه ای شاید باهوش نباشند اما دارای ساختار و اصول هستند. شما مطمن هستید که کدی که افراد حرفه ای می نویسند به راحتی قابل نگهداری هست. کدی که قابل نگهداری باشد، برد تیم را در تغییرات، حتمی می کند.در چه پروژه های از افراد باهوش بهره ببریماز افراد باهوش برای پروژه های چالشی و معمایی می توان خیلی بهره برد مثلا طراحی یک سیستم برای خرید و فروش هوشمند سهام، بدست آوردن حالت روحی فرد از روی عکس، اکثر پروژه های هوش مصنوعی …. بهتر است از افراد باهوش برای پروژه های انفرادی بهره برد که تعامل کمتری با دیگران وجود دارددر چه پروژه هایی از افراد حرفه ای استفاده کنیماز افراد حرفه ای در پروژه های تیمی به خوبی می توان بهره برد. چون اصول را در تیم رواج می دهند. و با حوصله و صبري که در انتقال دانش دارند در تیم ناراحتی ایجاد نمی کنند. می توان از آن ها در پروژه های بانکی، پروژه های ملی مانند پست، مهاجرت، هوشمند سازی کارت ملی، … بهره برد