اینجا یک وبلاگ آشپزی نیست که من شش صفحه را برای توصیف سفرهای خود به مناطق روستایی ایتالیا صرف کنم، و بگویم که چه مقدار پنیر باید روی لازانیا بریزید. در ادامه به بدترین سوال از یک توسعه دهنده که میتوانید بپرسید میپردازیم.
بحث ما این است، میخواهیم در مورد توسعه نرم افزار صحبت کنیم. بدترین سوالی که شما به عنوان مدیر توسعه نرم افزار میتوانید از یک توسعه دهنده بپرسید این است: “چه زمانی کار شما تمام میشود؟”
خودشه. حالا که فهمیدید بدترین سوال چیست، مقاله را تا انتها بخوانید زیرا بهترین سوالی که میتوانید بپرسید را در انتهای مقاله نوشتیم!
بدترین سوال برای پرسیدن از یک توسعه دهنده : “چه زمانی کار شما تمام میشود؟”
این سوال چه مشکلی دارد؟ آیا مدیران نیازی به دانستن زمان انجام کارها ندارند؟ اگر آنها نپرسند چگونه دیگر میتوانند زمان را مدیریت کنند یا حتی برنامه ریزی کنند؟ اصلا کار مدیر این است که بداند چه زمانی کارها انجام میشود و کی میتواند پروژه را تحویل بدهد.
خود را به عنوان یک توسعه دهنده تصور کنید (فرض کنید شما در برخی از چارچوبهای Agile کار میکنید و بخشی از داستان هستید، اما این سوال بدون توجه به مدل توسعهای که در آن کار میکنید بد است). کار شما این است که پشت یک میز بنشینید و ساعتهای طولانی، کد وارد کنید.
برخی از مدیران میپرسند: “چه زمانی این کار تمام میشود؟” شما میدانید که هنوز کلی کد برای نوشتن دارید. شما میدانید که برای این کد باید با User API را کال کنید زیرا به آن اسناد نیاز دارید اما تا کنون از آن استفاده نکردهاید. شما میدانید که باید برخی از سیستمهای پیکربندی کاری خود را بازنویسی کنید و شما باید این را در سیستم خود اعمال کنید.
با دانستن همه اینها، شما چه میگویید؟ آیا شما برای هر یک از ده موردی که برای انجام این امر باید اتفاق بیفتد، یک سناریوی مناسب را در نظر میگیرید؟ آیا تصور میکنید که مشکلی پیش خواهد آمد، هزاران اتفاق ممکن است پیش بیاید، زمانی که هیچ تصوری از این اتفاق ندارید چه باید بکنید؟ چه اتفاقی میافتد اگر بدون تفکر بگویید: “احتمالاً حدود سه روز کار دارد” اما سپس میفهمید که اسناد و کدهایی که وارد کردهاید به طرز وحشتناکی بهم ریخته هستند و مجبور میشوید با ارسال ایمیل و تماس از آنها تقاضای وقت بیشتر بکنید، میتوانید دشواری این شرایط را درک کنید؟ چگونه این همه آشفتگی، پیچیدگی و عدم اطمینان را میتوانید در پشت یک پیام نگهدارید؟
به عنوان یک توسعه دهنده نمیتوانید جواب دقیقی به این سوال بدهید. این وظیفه شما به عنوان یک مدیر است که تنش و اضطراب را از کارمندان خود دور کنید.
مشکل با سوال “کار شما کی تمام میشود؟” این است، اگر بخواهم با یک مثال قضیه را توضیح بدهم، تصور شما از توسعه نرم افزار احتمالا چیزی مانند فرآیند تولید است، مجموعهای از مراحل قابل پیش بینی که هر زمان مشخصی نیاز دارد. شما برخی از کدها را مینویسید، برخی از کدها را آزمایش میکنید، برخی از کدها را مستقر میکنید و کار شما تمام است.
متأسفانه در واقعیت، توسعه نرم افزار مجموعهای از مراحل قابل پیش بینی نیست. این فرآیند یک شبکه پیچیده از مسیرهای ممکن با شاخهها، بن بستها و حتی مراحلی که غیرضروری به نظر میرسند. به همین دلیل است که توسعه نرم افزار در مقایسه با تولید، بیشتر شبیه فرآیند کشف یا اختراع علمی است. چه مدت طول میکشد تا نظریهای کشف شود؟ شاید سال دیگر، شاید هرگز، کسی چه میداند؟ مانند کشف علمی توسعه نرم افزار نیز غیرقابل پیش بینی، دارای موانع فراوان، پر از مسائل پیش بینی نشده، مسیرهای جانبی و بن بستها است. همچنین تعداد زیادی ایده وجود دارند که در ابتدا اجرایی و عملی به نظر میرسند اما پس از آزمایش متوجه میشوید که خلاف تصور شما بوده است.
پاسخ صادقانه به سوال “کار شما کی تمام میشود؟”، “این مسئله پیچیده است” میباشد.
بنابراین وقتی این سوال مطرح میشود چه اتفاقی میافتد؟ توسعه دهنده مجبور به دادن پاسخی احتمالی میشود، که آن پاسخ بنیان اصلی برنامه ریزیها و امیدهای افراد زیادی میشود. قبلتر هم گفتیم که اتفاقات زیادی احتمال دارد پیش بیاید، در برابر این مسائل چه کسی مسئول است؟ معلوم است توسعه دهنده، زیرا او بود که زمان پایان کار را اعلام کرد.
اگر شما یک مدیر هستید و با پرسیدن سوال “کار شما کی تمام میشود” توقع شنیدن یک عدد دقیق یا یک موعد نزدیک را دارید، برای شما متاسفم. شما سختی کار توسعه دهنده زیر دست خود را درک نمیکنید. شما او را وادار به گفتن حرفهای غیر دقیق میکنید.
برآورد، آنچه در واقع باید بپرسید
مدیران به شیوه خاصی که مخصوص خود آنهاست به مسائل نگاه میکنند. احتمالا آنها با خود فکر می کنند که من یک نویسنده وبلاگ ساده لوح هستم که واقعیت را درک نمیکنم. آنها میگویند: “پروژهها دارای جدول زمانی هستند و رهبران شرکت باید بدانند که پروژه چگونه تا زمان مهلت قانونی بایستی تکمیل شود.”
تا حدودی با حرف شما مدیران موافقم، اما تعیین برآورد تکمیل و پیگیری کار تیم در مهلتهای قانونی وظیفه شما به عنوان یک مدیر است. وظیفه دشوار خود را بر عهده دیگران قرار ندهید و با مجبور کردن آنها برای ارائه یک برآورد زمانی دقیق، آنها را تحت فشار قرار ندهید. من نمیتوانم تمام مشکلات مدیریتی شما را حل کنم، اما دو پیشنهاد برای یافتن جواب سوال “کار کی تمام میشود؟” دارم.
اول گرچه نمیتوانید تاریخ اتمام توسعه را به راحتی تخمین بزنید، اما میتوانید تاریخ اتمام وظایف را تخمین بزنید. شما به عنوان یک مدیر با تجربه، که با یک تیم پروژههای مختلفی را انجام دادهاید احتمالا میتوانید با مقایسه حجم کار با پروژههای قبلی یک عدد تقریبی برای تاریخ اتمام کار توسعه دهندگان تخمین بزنید. البته این زمان هم دقیق نخواهد بود و بایستی یک زمان اضافه برای اتفاقات احتمالی در نظر بگیرید.
این جواب کوتاه بود. پاسخ طولانی این است که باید به برآورد نسبی، پیش بینی سرعت، ضریب خطا و عوامل بسیار دیگر را در نظر بگیرید، مهمترین نکته هم مدل توسعه ی شماست. صادقانه بگویم، اگر واقعا مدیر هستید باید از قبل همه اینها را بدانید. با استفاده از این فاکتورها میتوانید با دقت معقولی زمان پایان کار را تخمین بزنید.
دوم برای بدست آوردن برآورد پایان کار، یک سوال نسبتا مشابه اما بسیار بهتر وجود دارد که میتوانید بپرسید. با پرسیدن این سوال اطلاعاتی را که به دنبال آن هستید به شما می دهد اما توسعه دهنده را هم در شرایط سخت قرار نمیدهد. تنها تفاوت این است مسئولیت این کار بر عهده مسئول اصلی یعنی خود شما قرار میگیرد. خب آماده دانستن آن سوال هستید؟ دفترچه یاد داشت خود را باز کنید و این را بنویسید: “چه کاری باقی مانده است؟”
مساله در این حد ساده و واضح است. هر توسعه دهندهای به راحتی و با خوشحالی به شما پاسخ میدهد.
به جای پرسیدن “چه زمانی کار شما تمام میشود؟” بپرسید “چه کاری باقی مانده است؟”
با توجه به این سوال، توسعه دهنده ما احتمالا میگوید: “بسیار خب من دیروز بیشتر اسکلت اصلی کدنویسی را کامل کردم. من برای دسترسی به اطلاعات بیشتر بایستی به سیستم متصل باشم، سپس کدهای پیکربندی جدید را بنویسم. سپس همه اینها را ادغام کنم. باید بر روی پروژه کار کنم تا اطمینان حاصل کنم که API که مینویسم دچار مشکل نمیشوند. در انتهای کار، پس از انجام تمامی این مراحل بایستی کدها را مرور کنم”.
به عنوان یک مدیر اینها اطلاعاتی هستند که باید بدانید. بله، شما باید فکر کنید تا این اطلاعات را به یک زمان تقریبی یا دقیق تبدیل کنید. شما باید تمامی مراحل از جمله نوشتن کدها، دسترسی به API و مرور را در نظر بگیرید. این کار به تلاش و محاسبه نیاز دارد، اما شک نکنید که میتوانید این کار را انجام بدهید.
خب حالا میتوانیم بگوییم که تخمین زمان تقریبی در توسعه نرم افزار غیرممکن نیست. در این برآوردها اطمینان و قطعیت وجود ندارد، پس توقع نداشته باشید در یک تاریخ دقیق مثل یک تیر کار تمام شود. احتمال اینکه کار زودتر یا دیرتر تکمیل شود وجود دارد. پاسخگویی در مورد عدم اطمینان، دانستن چگونگی برقراری ارتباط، دانستن نحوه محافظت از روند و مسئولیت “اشتباه” بودن تخمینها بر عهده شما است. شما به عنوان مدیر وظیفه دارید بر انجام کار نظارت کنید.
اگر درک فنی یا تجربه ی کافی برای تخمین زدن را ندارید، پس حداقل سوال کننده نباشید. سوالات خود را متوقف کنید و کسی را اجیر کنید که کار شما را انجام یدهد. شاید مدیریت مدیران برای شما مناسبتر باشد نه؟
اولین استراتژی (تخمین نسبی، محاسبه کارکردها) نیازمند اطلاعات کلان پروژه است، جایگاه شما به عنوان مدیر باعث دسترسی شما به این اطلاعات میشود. مورد دوم (“چه کاری باقی مانده است؟”) که اطلاعات ریز قضیه را در اختیار شما قرار میدهد. به صورت ترکیبی، این دو ابزار به شما امکان میدهند که سوال “کی کار شما تمام میشود” را با یک سوال دقیقتر جایگزین کنید.
مدیرانی که تاکنون موفق به این کار شدهاند، بایستی تبدیل به الگوی شما بشوند. شما برای توسعه نرم افزار بسیار مهم هستید. اجازه ندهید سوالات بد رابطه شما با تیمهای توسعه دهنده را خراب کند. برای سرزنش توسعه دهندگان درمانده، سوالات بیپاسخ نپرسید. باعث اطمینان خاطر کارمندان خود شوید.
بفهمید تیم شما چه کاری انجام میدهد، معیارهایی را که به شما میگویند چگونه کار میکند. درک کنید و “چه زمانی کار شما تمام میشود؟” را از واژگان مدیریتی خود سوال کنید.
حال که بدترین سوال از یک توسعه دهنده که میتوانید بپرسید را دریافتید میتوانید از دیگر مقالات سایت اول نیوز دیدن کنید.