این جریان مدیر پروژه شدن برنامه نویس ها در ایران حکایتی بس طولانی دارد که در این پست قصد مختصر بررسی در این باب را دارم . قبل از شروع بحث موردنظر لازم می بینم نظر خودم را در مورد لزوم مدیر پروژه در پروژه های توسعه نرم افزار عرض کنم : به نظر بنده در 90% پروژه های توسعه نرم افزار در ایران نیازی به نقشی با نام مدیر پروژه نیست زیرا این پروژه ها دارای خصوصیات یک پروژه واقعی نیستند که نیازی به مدیریت پروژه باشد : مثلا به مدیر پروژه بودجه اختصاص داده نمی شود که او بتواند Cost Management بکند یا بتواند نیروی کار مورد نیاز را استخدام بکند و یا … . به طوری کلی مدیر پروژه ای که در اینگونه پروژه ها فعالیت می کند دارای مجوز و اختیارات لازم نیست : یعنی عملا Iron Triangle پروژه در دستان او نیست . البته علاوه بر اینکه مالکان شرکت او را محدود کرده اند , او وظایف یک مدیر پروژه را نیز انجام نمی دهد . برای مثال یک شرکت آگهی زده است که :
به یک مدیر پروژه نرم افزاری حاذق نیازمندیم با شرایط ذیل :
- توانایی کامل طرح ریزی کامل پروژه
- توانایی مدیریت
- توانایی برنامه نویس با زبان #C
کاملا از شرایط درخواستی معلوم است کسی که قرار است این کارها را انجام بدهد اسمش مدیر پروژه نیست (البته با توجه به تعاریف انیستیتو PMI ) . در ایران انتظار میرود که مدیر پروژه کل پروژه را طرح ریزی و طراحی کند . یعنی او عملا کار تحلیل گر و طراح را انجام می دهد . بلی بنده قبول دارم که مدیر پروژه باید توانایی طرح ریزی داشته باشد ولی نه تحلیل و طراحی محصول در بعد فنی و تکنیکی مثلا استخراج Class Diagram ؟ ! بلکه او در سطح مدیریت باید طرح ریزی نماید : Road Map پروژه را مشخص کند , ریسک های پروژه را معلوم بکند و … .
انتظار بعدی این است توانایی مدیریت داشته باشد : خوب خیلی خوب است ولی توانایی مدیریت یعنی اینکه تقسیم وظایف برعهده او خواهد بود . مدیریت منابع انسانی (HR) تقسیم وظایف نیست . (مثلا از او انتظار میرود که وظایف برنامه نویسان را در هر ساعت مشخص کند) .
توانایی برنامه نویسی که فکر نکنم نیازی به توضیحات اضافی باشد . یعنی او همانند یک برنامه نویس در کنار زیردستان خویش باید بتواند برنامه نویسی بکند .
قابل نتیجه گیری است : کسی که 4 سال برنامه نویسی کرده باشد بهتر و مستعد تر برای کار کردن در چنین محیطی نسبت به فردی است که مدرک PMP دارد و یا تحصیلاتی در زمینه مدیریت دارد. یعنی عملا در راس پروژه ها از برنامه نویس ها استفاده می کنیم . البته قابل ذکر است که این برنامه نویس ها که به جای مدیر پروژه قرار می گیرند حتما از تجربه و توانایی فنی بالایی برخوردار هستند ولی باز برنامه نویس هستند .
حکایت اینکه برنامه نویس مدیر پروژه می شود دقیقا مانند حکایت دندانپزشک شدن سلمونی ها در قدیم بود :
قدیم چیزی به عنوان دندونپزشک وجود نداشت؛ همون سلمونیها دندون ملت رو هم میکشیدن (ظاهرا این رسم خارج ایران هم بوده). وضعیت مدیریت پروژه الان رو به وضعیت دندونپزشکی اون زمان تشبیه کرده بود. الان کسایی مدیریت پروژه میکنن که کار اصلیشون چیز دیگهایه و مدیریت پروژه هم میکنن، فقط چون کسی نیست که بهتر از اونها این کار رو بکنه. از نظر اون باید این حوزه کاری خیلی پیشرفت کنه و تبدیل به حرفهای مستقل بشه.
به نقل از نادر خرمی راد
هم اکنون طبق گفته بالا ما مدیر پرژه نداریم بلکه سلمونی ها و یا برنامه نویس ها دارند اینکار رو برای ما انجام می دهند . منتهی تنها دلیلی که باعث می شود که یک برنامه نویس احساس مدیر پروژه بودن بکند چیزی نیست جز Halo Effect . یعنی طرف به عنوان برنامه نویس خیلی موفقه و به همین دلیل یک هاله نوری او را احاطه می کنه که می تواند به عنوان مدیر پروژه کار کند و بدین گونه می شود که برنامه نویس مدیر پروژه می شود .
اما و اما اخطار به مالکان شرکت ها : من قصد ندارم عرض بکنم که پروژه خود را به دست برنامه نویس ها ندهید , (بنده به عنوان برنامه نویس , مدیریت پروژه هم کرده ام ) , پروژه را به دست برنامه نویس های با تجربه بدهید و منتظر عواقب خوب و بد آن نیز باشید مثلا امکان دارد عین سلمونی های قدیمی , دندون را طوری بکشد که پروژه درجا به دیار باقی بشتابد . یک مدیر پروژه واقعی می داند که در موقع شکست پروژه باید جوابگو باشد (ولی برنامه نویس چی ؟) یک مدیر پروژه می داند که باید در شرایط بحرانی چه کاری انجام دهد (برنامه نویس چی ؟) یک مدیر پروژه توانایی مدیریت منابع را دارا می باشد (یک برنامه نویس چی ؟) و در کل کار و تخصص مدیر پروژه در حوزه مدیریت پروژه است ولی برنامه نویس در حوزه توسعه پروژه که در واقع سطح بندی متفاوتی دارند .
قصد من از نوشتن چنین موضوعی فقط این بود که عرض کنم لزوما نیاز نیست (که اصلا نیاز نیست ) برنامه نویس مدیرپروژه شود . برنامه نویس باید در حوزه فنی و تخصصی توسعه نرم افزار روز به روز رشد کند ولی نه اینکه هدف او این باشد که روزی مدیر پروژه شود فقط در حوزه فنی . و امیدوارم که سلمونی هایی که دندون ها را می کشند فقط و فقط سر ملت را اصلاح کنند و شاهد مدیران پروژه با تحصیلات مربوط به مدیرت پروژه نرم افزاری و غیر نرم افزاری در صنعت توسعه نرم افزار باشیم .
یاشیاسیز
با نظرت موافقم ولی یه مشکلی هست انقدری که باید و شاید به برنامه نویس بها داده نمی شود که بخواهد تمام تمرکزش را روی تخصصش بگذارد،و بعضی وقتی حتی کارفرما فرق برنامه نویس ساعتی 2000 تومان با 5000تومان را نمی دونه.
و همانطور که خودت هم اشاره کردی اینجا تو ایران مدیر پروژه نرم افزاری تعریف درستی نداره،و اکثرا آنهایی که مدیر پروژه هستند یه زمانی خودشان برنامه نویس ماهری بودند.
میشه اسمش رو گذاشت : “رویای برنامه نویسان ایرانی”
یه برنامه نویس از بدو تولد تا بلوغش این رویارو تو سرش پروش میده!
در آخر هم با برنامه نویسی رو گذاشته کنار یا مدیر پروژه شده.
این از چاله به چاه افتادن هستش . مثلا دقیقا مشکل سینمای ایران : بازیگران و عوامل پشت دوربین مثل فیلم بردار , صدا بردار , تدوینگر و … تو 2 تا فیلم شرکت نکرده زود می خان بشن کارگردان . این هم کلا غلطه , همه قرار نیست که کارگردان بشن و فیلم خودشون رو بسازند .
من قبول دارم صحبت های شما رو , شرایط کاری برنامه نویس ها کلا خوب نیست ولی این دلیل نمی شه که بشن مدیر پروژه , چونکه راه نجات نیست و بیشتر تو مشکل می افتند .
به نظر من یک برنامه نویس حتی اگر اینجا چند سال هم بیکار بمونه باید نامید نشه و سعی در پیشرفت خودش داشته باشه و نهایتا بپره اون ور آب .
برنامه نویسی که کارش درجه یک باشه هیچوقت بی کار نمی مونه و هیچ وقت با حقوق کم استخدام نمی شه. کسی که میگه من مناسب خودم کار پیدا نکردم باید مشکل رو در جای دیگه جستجو کنه.
يك مدير برنامه نويسي تا زماني خودش برنامه نويس نبوده باشه مباحث باگ تركينگ، مديريت فايلها، مديريت builds ، مديريت يكپارچگي پيوسته و غيره رو نميدونه. به كسي كه اين موارد رو ميدونه ميگن مديريت تيم برنامه نويسي نه صرفا تسلط به مايكروسافت پراجكت ، يريماورا يا چند نرم افزار ديگر.
دوست گرامی , در هیچ جا عنوان مدیر برنامه نویسی را نمی توانید بیابید , بنده عرض کردم “مدیر پروژه ” . بلی علاوه بر مدیر پروژه شاید کسی به عنوان رهبر تیم و یا مدیر تیم توسعه باشد که او هم باز مدیر پروژه نیست . مواردی که شما فرمودید در یک پروژه نرم افزاری توسط مدیر پروژه انجام نمی شود : مثلا لازم نیست که CI رو انجام بده چون یک کاری فنی هستش و مسئولش تیم و یا افراد مشخص .
گذشته از این : اصلا لازم نیست مدیر پروژه با جنبه های فنی قضیه آشنا باشه . چون داره پروژه رو مدیریت میکنه و همه پروژه ها در نفس و روح یکسان هستند .
اتفاقاً خیلی نیازه که از مسائل فنی هم مطلع باشه. چطور می شه از کسی انتظار داشت که یک پروژه نرم افزاری رو مدیریت کنه وقتی نتونه یک تیم درست رو تشکیل بده؟ تشکیل یک تیم فنی درست هم بسته به این هست که مدیر پروژه بدونه سطح انتظاراتش از برنامه نویس و نیتجه حاصله چقدر است. کسی که از نظر فنی آشنایی نداشته باشه می تونه همچین کاری انجام بده؟ می تونه بفهمه چیزی که بهش نشون می دن چه کاستی هایی داره، چقدر بهتر می شد کار کرد یا از این دست موارد؟ البته شاید از یک نظر شما درست بگید. می شه با مشاورهای قوی کار رو پیش برد، اما به نظر من اطلاعات فنی برای یک مدیر پروژه ضروری هست.
سلام
مطلب جالبی نوشته و به مسئله مهمی اشاره کردهاید. متاسفانه در کشور ما کلمه “مدیر” با خیلی چیزهای نامربوط دیگر اشتباه گرفته میشود.
مدیر پروژه در درجله اول باید یک مدیر واقعی (دارای قابلیتهای بالای مدیریتی) و مسلط به مهندسی اجتماعی (social engineering) باشد. باید با شناخت کامل از اعضای تحت مدیریت خود، بتواند سرنوشت پروژه را تعیین نموده و نیاز به نیروی جدید یا عدم نیاز به برخی نیروها را حس کند.
ضمن تشكر بهتر است ابتدا يك واژه نامه تصويب كنيد بعد بپردازيد به اين مباحث. منظور از مدير پروژه چيست؟ فرق مدير پروژه با مدير تيم توسعه چيست؟ آيا مدير تيم توسعه همان مدير پروژه نيست؟ و مباحثي از اين دست. ممنون.
با مطالبی که نوشتید موافقم اما بهتره کمی در مورد واژه هایی که به کار می برید دقت کنید.
من الان دارم مثلاً در یکی از بزرگترین شرکتهای ایران در زمینه وب کار می کنم! مثلاً!!!!! ولی اینجا هم می بینم که مشکل از این چیزی که شما گفتید شدیدتر هست! کاش یک برنامه نویس رو می گذاشتند مدیر پروژه. الان کسی مدیر یک پروژه خیلی بزرگ با چند ده میلیون بودجه شده که اصلاً نمی دونه برنامه تحت وب چیه، چه امکاناتی در اختیار داره، فقط یک چیزهایی از HTML 5 شنیده و یکم بلده وبلاگ بنویسه! کلاً رشته تحصیلی و شغلیش هم سینما بوده! علاوه بر مدیر پروژه، تیم فنی درست و حسابی هم نداریم. بنابراین آخرش کل بودجه صرف ساخت چیزی می شه که دو نفر آدم در مواقع بیکاریشون هم می تونن آماده اش کنند!
حالا اگر اسم شرکت رو بگم تعجب می کنید! نمی گم که آبروشون نره!
من با دانش فنی در حوزه مربوطه مخالف نیستم ولی بنده نگفتم : هر کسی که از راه برسه می تونه مدیر پروژه بشه جز برنامه نویس ها . اونی که سینما خونده مطمئنا خراب خواهد کرد. من عرض کردم که دانش و تجربه در زمینه PMP اولیت داره برای مدیر پروژه .
می شود مثال زد که اکثر مدیران پروژه در شرکت های غول آمریکائی چه در صنعت نرم افزار و چه صنعت های غیره دانش فنی در آن رابطه در ابتدا نداشته اند و الان مدیون دانش مدیریتی و رهبریت بالای خودشون هستند و نه دانش فنی .
من از دوستان مدیر پروژه بخصوص جناب خرمی دعوت می کنم که نظرشان را در مورد بحث بفرمایند . آیا دانش فنی و تکنیکی مهمتر از دانش مدیریتی است ؟
گذشته از این : اصلا لازم نیست مدیر پروژه با جنبه های فنی قضیه آشنا باشه .
بله اولویت بهتر شد! نه من هم عرض نکردم که دانش فنی مهمتر هست. من می گم که اگر کسی بخواد مدیر پروژه موفقی باشه باید دانش فنی اون رشته رو هم بدونه. که ظاهراً شما هم موافق هستید.
دو مقایسه کنیم بهتره: کسی که برنامه نویسی کرده و بعد تخصصی وارد بحث مدیریت پروژه شده. و کسی که از ابتدا مدیریت خونده بعد سعی کرده آشنایی پیدا کنه با مباحث فنی. کدوم بهتره؟ به گمان من شما هم از دسته اول هستید.
بلی بنده هم از نوع اول هستم ولی ترجیح میدم در یک شرایط ایده عال در محیط نوع دوم کار کنم .
“مدیریت” خیلی ربطی به دانش فنی ندارد.مدیریت یعنی دانش مدیریتی + استعداد مدیریت.
ولی “مدیر پروژه” +اینها باید دید تخصصی هم داشته باشد،چون این شناخت باعث “تصمیم گیری آگاهانه” در مورد برنامه ها و اولویت های پروژه می شود.
متاسفانه مشکل مدیریت در صنعت نرم افزار فقط نیست،این مشکل اساسی تو صنعت و اقتصاد ایران بوده و هست.ولی بنظر میاد تو چند سال اخیر اوضاع کمی بهتر شده.
و ذکر کنم که من خودم برنامه نویس وب هستم، از اون برنامه نویس های که دوست نداره تا آخر عمرش برنامه نویس باقی بمونه و فقط بخاطر علاقه و درآوردن هزینه دانشگاه برنامه نویسی می کنم.
عجب مطلب جنجال برانگیزی.
بنده سلمونی هستم که الان دندانپزشکی هم می کنم و البته دندانپزشکی هم درس می دهم. اصولاً اگر قرار بود تک بعدی به هر چیزی نگاه بشه موفقیت ها و پیشرفت ها بوجود نمیامد. بنده موافق احترام به تخصص ها هستم و از طرفداران غیرتی این مکتب هستم. اما در مورد مدیریت پروژه معتقدم شخصی که مدیر یک پروژه میشه باید ضمن تسلط به بحث مدیریت پروژه حتماً و الزاماً راجع به مسائل فنی هم مطالعه خوبی داشته باشه.
شما بهترین مدیر پروژه های عمرانی را بیاورید و بگذارید مدیر توسعه یک نرم افزار حسابداری. آیا واقعاً فکر می کنید نتیجه مثبت حاصل می شود؟
یک برنامه نویس حرفه ای بیاورید که در مورد مدیریت پروژه حتی یک خط هم مطالعه ندارد. بگذارید در سمت مدیر پروژه حسابداری. نتیجه؟
یک مدیر پروژه با سواد که در زمینه مسایل فنی نیز متخصص است بیاورید. اگر ایشان استعداد و هنر مدیریت را نیز نداشته باشد باز هم مانند دو مورد قبل پروژه به شکل شایسته انجام نمی شود.
بنابراین در هر پروژه دانش مدیریت، دانش فنی، و در ضمن استعداد در میزان موفقیت آن پروژه تاثیر دارد. دقت بفرمایید تاکید دارم روی عبارت “میزان موفقیت”.
من با نظر شما موافقم. مدیریت یک مهارت کاملاً خاص ذاتی و کسب مهارتهای آن نیز مستلزم داشتن آن خصوصیات ذاتی است. حال اگر چاشنی تخصص و تجربه نیز به آن اضافه شود میزان موفقیت و ضریب اطمینان انجام کار بیشتر خواهد شد. لذا صرفاً یک برنامه نویس به زعم داشتن مهارت در این مهم، نمی تواند مدیر پروژه خوب باشد زیرا امکان دارد این شخص مهارت برخورد با مشکلات و اتخاذ تصمیم نداشته باشد و یا مهارت مذاکره با سفارش دهنده و تنظیم برنامه در جهت پیشرفت پروژه را نداشته باشئد.
در ايران اين موارد چيزي نيست كه بخوايم بگيم عجيبه اما بعضي برنامه نويسا دنبال پيشرفت هستن و بلخره خودشون رو به مديريت پروژه هم مي رسونن. گمان مي كنم پيشه خودشون فكر مي كنن من 8 – 7 ساله دارم برنامه مي نويسم يا الان 30 سالم شده من بايد با بقيه فرق كنم و مدير پروژه باشم.
ولي به نظره من كسي كه قدرتش رو داشته باشه مي خواد سبزي فروش(برنامه نويس:) ) باشه. وقتي در اين كار موفقيت هايي هم داشته باشه، ديگه ايرادي بهش وارد نيست.
ولي بيخيال…وقتي ادارات قدر نخبه ها رو نمي دونن و كاره يه آدامه بي سواد رو بهشون ميدن و بهشون توجهي ندارن، ديگه واقعا نمي شه به موردي كه عنوان كرديد، حتي اشاره هم كرد.
موفق باشيد
نظر جالبی بود .
به نظر من اولویت با تخصص نرم افزار هست، مدیر پروژه ای که از جزئیات پیاده سازی چیزی نداند (یعنی کاملا به کاری که مجموعه زیر دست اش انجام می دهد تسلط نداشته باشد نه این که یک آشنایی با مبحث مربوطه داشته باشد) به آسانی از مجموعه زیردست خودش فریب خواهد خورد مثال واضح اش هم coder هایی هستند که ad hoc کد می زنند و به ظاهر به نظر می رسد که کار را به خوبی به انجام رسانده اند، تجربه من نشان داده که یک مدیر پروژه غیر متخصص معمولا فریب این دسته افراد را می خورند و به سختی می توان ایشان را متقاعد کرد برای پیاده سازی یک راه حل پایدار نیاز به زمان و هزینه بیشتری هست.
در کتابهای مدیریت جمله زیبا و سرشاری از واقعیتی وجود دارد به این مضمون که “مدیریت علم دانستن و هنر توانستن است”. پس ما باید به دنبال ترکیبی از دانستن و توانستن باشیم یعنی کسی ممکن است که از لحاظ فنی و دانش مدیریت در سطح بالایی باشد ولی با توجه به ویژگیها و تیپ شخصیتی خود هرگز نتواند یک مجموعه را مدیریت کند و به پیش ببرد یا برعکس. پس باید به دنبال ترکیبی از هر دو مورد باشیم و …
شاید یک پست مرتیط با این موضوع بنویسم
من هم جزء کسانی هستم که از سلمونی به دندانپزشکی رسیدم ، اگه از این دید بگم من به جراحی قلب هم رسیدم !
به نظر من بهتره همون برنامه نویس رو به عنوان مدیر پروژه انتخاب کنن ، فکر اینکه یه مدیری که از برنامه نویسی چیزی نفهمه و بیاد بهمون امر و نهی کنه هم آدم رو عذاب می ده !
فکر کنید بیاد بگه خوب مگه چیه ؟ می خوای یه فیلد به اینجاش اضافه کنی دیگه دو دقیقه هم کار نمی بره !!!!! واییی خدا !
این بنده خدا نمی دونه همون یه دونه فیلد کل سیستم رو منفجر می کنه ! ولی اگه برنامه نویس باشه …
آقا اسمه من مجید هست ، نظر قبلی اشتباه لپی زده مدیر !!! D:
این سوتی مال وبلاگ 700 سال پیشه ! اینم از آرزوهای مدیریت بود دیگه ! شما الان شاهد بودید که یه نفر به آرزوش رسید ! D:
ولی خداییش همیشه از مدیریت فرار کردم !
اما در آخر توضیح نداید که وظیفه تقسیم بندی پروژه که یک کار کاملا تخصصی است به عهده چه کسی است؟مدیر پروژه ای تخصص نرم افزاری ندارد یا برنامه نویسی که تخصص دارد اما مدیرپروژه بودن را بلد نیست؟