معرفی
مدیر مهندسی نرمافزار (Software Engineering Manager) مسئول ایجاد شرایطی است که یک یا چند تیم توسعه بتوانند محصول را با کیفیت مناسب، سرعت توسعه قابلپیشبینی و پایداری مطلوب ارائه کنند. این نقش فقط تقسیم وظایف بین اعضای تیم نیست؛ مدیر مهندسی باید میان نیازهای محصول، محدودیتهای فنی، ظرفیت تیم، کیفیت کد و رشد حرفهای اعضا تعادل برقرار کند.
یک هفته کاری معمولا شامل جلسات منظم یکبهیک با توسعهدهندگان، ارزیابی ریسک انتشار نسخهها، هماهنگی با مدیر محصول و طراح، رفع موانع تیم، مشارکت در تصمیمهای معماری و استخدام است. او ممکن است هر روز کدنویسی نکند، اما باید درک کافی از سیستم و فرایند توسعه داشته باشد تا بتواند درباره بدهی فنی، زمان تحویل، کیفیت و اولویتهای فنی ارزیابی و تصمیمگیری کند.
در این راهنما، «مدیر توسعه نرمافزار» و «مدیر تیم توسعه نرمافزار» عنوانهایی نزدیک به این نقش در نظر گرفته میشوند. در تیمهای کوچک، مرز این نقش با سرپرست فنی و مدیر پروژه میتواند مبهم باشد؛ اما مدیر مهندسی بیش از همه پاسخگوی سلامت عملکرد تیم، توانایی تحویل مؤثر محصول و توسعه افراد است، نه صرفا حل مسائل فنی یا پیگیری زمانبندی پروژه.
ورود مستقیم به این شغل معمولا دشوار است، چون کارفرما انتظار دارد فرد پیشتر تجربه عملی و قابلاعتمادی در توسعه نرمافزار و هدایت اعضای تیمهای توسعه داشته باشد. در ماههای نخست، از یک مدیر مهندسی تازهوارد انتظار میرود ساختار تیم، فرایند تحویل محصول، گلوگاههای موجود، وضعیت کیفیت و نیازهای افراد را درک کند و پیش از ایجاد تغییرهای بزرگ، اعتماد تیم و ذینفعان را به دست آورد. مسیر یادگیری این نقش در نقشه راه این شغل و روش رسیدن به نخستین موقعیت مدیریتی در راهنمای ورود آن توضیح داده شده است.
این شغل را با نامهای دیگری نیز میشناسند:
- مدیر مهندسی
- مدیر توسعه نرمافزار
- مدیر تیم توسعه نرمافزار
- Engineering Manager
- Software Development Manager
وظایف و مسئولیتها
فعالیتهای زیر بخشهای اصلی نقش مدیر مهندسی نرمافزار را نشان میدهند.
-
هدایت تحویل فنی محصول
ظرفیت تیم، وابستگیها، ریسکهای فنی و کیفیت و آمادگی انتشار نسخه را با مدیر محصول و اعضای تیم بررسی میکند تا برنامه تحویل واقعبینانه و قابل اجرا باشد. بسته به فرایند شرکت، از Jira برای مدیریت و پیگیری کارها و از Microsoft Excel برای گزارش ظرفیت تیم یا برنامهریزیهای داخلی استفاده میکند.
-
مدیریت و رشد توسعهدهندگان
جلسات منظم یکبهیک، بازخورد عملکرد، برنامههای رشد و توسعه فردی و منتورینگ را برگزار میکند تا افراد در نقشهای فنی خود پیشرفت کنند و مسائل و موانع کاری زودتر شناسایی شوند.
-
همراستاسازی فنی و محصولی
محدودیتهای معماری، بدهی فنی و هزینه و پیامدهای تصمیمهای فنی را برای مدیر محصول، مدیر پروژه و سایر ذینفعان توضیح میدهد تا اولویتهای محصول واقعبینانه و قابل اجرا باشند. در تیمهایی که از Confluence استفاده میکنند، تصمیمهای معماری و فنی را مستند میکند.
-
بهبود فرایند توسعه
دادههای مربوط به بردهای کاری، درخواستهای ادغام (Merge Request / Pull Request)، خطاهای انتشار و استقرار و بازخورد تیم را بررسی میکند و فرایندهایی مانند بازبینی کد، برنامهریزی و انتشار را بهبود میدهد. در شرکتهایی که مخزن کد روی GitLab یا GitHub قرار دارد، بر روند درخواستهای ادغام و بازبینی کد نیز نظارت میکند.
-
حفظ کیفیت و پایداری نرمافزار
برای تست، بازبینی کد، مدیریت رخدادها و مدیریت بدهی فنی استانداردهایی تعیین میکند تا افزایش سرعت تحویل باعث افت کیفیت و کاهش پایداری سیستم نشود.
-
استخدام و شکلدهی تیم
نیازهای استخدامی تیم را مشخص میکند، در ارزیابی فنی و رفتاری داوطلبان مشارکت دارد و برای فرایند ورود و سازگاری اعضای جدید با تیم برنامهریزی میکند.
-
مدیریت موانع و تعارضها
تعارض میان اولویتها، وابستگیهای بین تیمی و موانع سازمانی را شناسایی و برای رفع آنها اقدام میکند تا توسعهدهندگان زمان بیشتری را صرف توسعه و بهبود محصول کنند.
نیازمندیها و مهارتها
پیش از ورود به این شغل، نگاهی به نیازمندیهای زیر داشته باشید.
مهارتهای مورد نیاز
- مهارت مدیریت عملکرد کارکنان Employee Performance Management
- مهارت تضمین کیفیت نرمافزار Software Quality Assurance (SQA)
- مهارت کنترل نسخه Version Control
- مهارت مدیریت ذینفعان Stakeholder Management
- مهارت جذب و استخدام کارکنان Recruitment and Hiring
- مهارت ارتباطات فنی Technical Communication
ابزارهای رایج
سایر نیازمندیها
جدای از مهارتها و ابزارهای بالا، این موارد هم در آگهیهای استخدام این شغل دیده میشوند:
- سابقه عملی در توسعه نرمافزار و کار با چرخه انتشار
- توان تصمیمگیری در شرایط ابهام و محدودیت زمانی
- انگلیسی فنی برای خواندن مستندات و منابع تخصصی
- توان گفتوگوهای دشوار و ارائه بازخورد سازنده
- درک مدل کسبوکار و اثر تصمیمهای فنی بر محصول
چشمانداز شغلی
چشمانداز مدیر مهندسی نرمافزار به چند عامل حرفهای و محیط کاری وابسته است که در ادامه بررسی شدهاند.
-
نقشی برای توسعهدهندگان باتجربه
این موقعیت معمولا ادامه مسیر حرفهای یک توسعهدهنده ارشد یا سرپرست فنی محسوب میشود و یک موقعیت سطح ورودی نیست. سابقه تحویل محصول و تجربه هدایت و راهنمایی اعضای تیم، معمولا از مدرک یا عنوان شغلی بهتنهایی اهمیت بیشتری دارد.
-
تقاضا در تیمهای در حال رشد
شرکتهایی که چند تیم توسعه، محصول در حال رشد یا نیاز جدی به افزایش سرعت و مقیاس توسعه دارند، معمولا به نقش مدیر مهندسی نیاز بیشتری پیدا میکنند. در تیمهای کوچکتر، این مسئولیت ممکن است با نقش سرپرست فنی یا مدیر فنی همپوشانی داشته باشد.
-
عوامل مؤثر بر جبران خدمات در ایران
میزان جبران خدمات در ایران معمولا با سابقه مدیریت و رهبری تیمهای فنی، پیچیدگی و مقیاس محصول یا سیستم نرمافزاری، نوع شرکت، شهر محل کار، حضوری یا دورکار بودن و شکل قرارداد تغییر میکند. توانایی ساختن و حفظ تیمی مؤثر، عامل مهمی در مذاکره درباره جبران خدمات است.
-
مسیر رشد شغلی
مدیر مهندسی میتواند به مدیریت چند تیم مهندسی، نقشهای مدیریتی ارشد مهندسی، مدیریت فنی یا در برخی سازمانها مدیریت فناوری اطلاعات برسد. ادامه مسیر به این بستگی دارد که فرد بیشتر به توسعه سازمان و افراد علاقه دارد یا رهبری معماری و فناوری.
-
دورکاری با مسئولیت ارتباطی بیشتر
برخی از موقعیتهای این نقش امکان دورکاری دارند، اما مدیریت تیمهای توزیعشده نیازمند مستندسازی روشن، جلسههای منظم، شفافیت در تصمیمگیریها و شناسایی و رفع فعالانهتر موانع است.
پرسشهای رایج درباره مدیر مهندسی نرمافزار
در این بخش، به تعدادی از پرسشهای رایج درباره این شغل پاسخ داده شده است.
تفاوت مدیر مهندسی نرمافزار با سرپرست فنی چیست؟
سرپرست فنی معمولا مسئول هدایت جهتگیری فنی و تصمیمهای معماری و فنی یک تیم یا پروژه است. مدیر مهندسی علاوه بر داشتن درک فنی کافی، مسئول رشد افراد، عملکرد تیم، استخدام، ظرفیتسنجی و هماهنگی فرایند تحویل با ذینفعان است. در شرکتهای کوچک ممکن است یک نفر هر دو مسئولیت را بر عهده داشته باشد.
آیا مدیر مهندسی نرمافزار باید کدنویسی کند؟
لزومی ندارد هر روز کدنویسی کند، اما باید توانایی درک کد، معماری، ریسکهای فنی و فرایند تحویل را حفظ کند. میزان مشارکت مستقیم در توسعه کد به اندازه تیم، مرحله رشد شرکت و پیچیدگی محصول بستگی دارد.
آیا میتوان بدون سابقه توسعهدهندگی، مدیر مهندسی شد؟
ورود مستقیم به این مسیر معمولا دشوار است. مدیر مهندسی باید بتواند درباره برآورد زمان و پیچیدگی، کیفیت، معماری، بدهی فنی و محدودیتهای توسعه گفتوگوی فنی دقیق داشته باشد و تصمیمهای آگاهانه بگیرد؛ این توان معمولا از تجربه عملی توسعه نرمافزار به دست میآید.
کارفرمایان ایرانی از مدیر مهندسی چه انتظاری دارند؟
انتظارات شرکتها از این نقش یکسان نیست. هنگام بررسی آگهی یا گفتوگو با کارفرما، باید مشخص شود مسئولیتهای این نقش تا چه حد شامل هدایت تیم توسعه، استخدام و ارزیابی اعضای تیم، برنامهریزی تحویل، مدیریت کیفیت نرمافزار و بدهی فنی و هماهنگی با محصول و مدیریت ارشد است.
برای گذار از توسعهدهندگی به مدیریت مهندسی از کجا شروع کنم؟
ابتدا مسئولیتهای اولیه رهبری را بر عهده بگیرید؛ منتورینگ همکاران، تسهیل برنامهریزی تیم، بهبود فرایندهای کاری و توضیح تصمیمها و محدودیتهای فنی به ذینفعان. سپس شواهدی از تأثیر خود بر تحویل محصول و رشد افراد جمعآوری کنید. جزئیات این مسیر در نقشه راه مدیر مهندسی نرمافزار آمده است.
آموزشهای مرتبط در فرادرس
-
آموزش مهندسی نرم افزار ۱ + گواهینامه
-
آموزش مهندسی نرم افزار پیشرفته
-
آموزش مدل های فرایند در مهندسی نرم افزار (رایگان)
-
آموزش رهبری و مدیریت در کسب و کار + گواهینامه
-
آموزش مدیریت پروژه (رایگان)
-
آموزش کاربرد رفتار سازمانی و اصول مدیریت در تیم سازی + گواهینامه
-
واحد مدیریت پروژه (PMO) چیست؟، راهنمای جامع + معرفی، ساختار و وظایف
-
آموزش مقدماتی مهندسی نرم افزار