معرفی
سرپرست فنی یا Technical Lead، توسعهدهنده باتجربهای است که مسئولیت هدایت فنی یک تیم نرمافزار را بر عهده دارد. او میان نیازهای محصول، محدودیتهای زمانی، کیفیت کد، امنیت و پایداری سرویس تعادل برقرار میکند. سرپرست فنی معمولا مدیر مستقیم همه اعضای تیم نیست، اما در تصمیمهای فنی نقش مؤثری دارد.
یک هفته کاری این نقش ترکیبی از بررسی طراحی راهکارها، بازبینی درخواستهای ادغام کد، کمک به حل خطاهای دشوار، تقسیم کارهای بزرگ به وظایف قابل اجرا و هماهنگی با مدیر محصول، طراح و تیمهای زیرساخت است. در بسیاری از تیمها، سرپرست فنی همچنان کد مینویسد؛ اما ارزش اصلی او فقط سرعت برنامهنویسی نیست، بلکه کاهش ریسک تصمیمهای فنی و توانمندسازی سایر توسعهدهندگان است.
عنوان این نقش در آگهیها و ساختار سازمانی ممکن است متفاوت باشد؛ از «تک لید» و «تکنیکال لید» تا Lead Software Engineer. در یک شرکت محصولمحور، سرپرست فنی معمولا تحویل قابلیتهای یک تیم را با مدیریت بدهی فنی همراه میکند. در سازمانهای بزرگتر، ممکن است مسئول یک حوزه فنی یا مجموعهای از سرویسهای مرتبط باشد. برای تشخیص حوزه واقعی مسئولیت، باید شرح وظایف، اختیار تصمیمگیری و رابطه آن با مدیر مهندسی یا معمار نرمافزار را بررسی کنید.
سرپرست فنی معمولا یکی از مراحل میانی مسیر شغلی توسعهدهندگان است. فردی که تازه این مسئولیت را بر عهده میگیرد باید در ماههای اول، ساختار پایگاه کد (codebase) و فرایند تحویل تیم را بشناسد، تصمیمها را شفاف ثبت کند، بازبینی کد را ساختارمندتر کند و بدون ایجاد گلوگاه، به اعضای تیم کمک کند. برای مسیر یادگیری، به نقشه راه این شغل و برای برنامه ورود به بازار کار، به راهنمای ورود سرپرست فنی مراجعه کنید.
این شغل را با نامهای دیگری نیز میشناسند:
- تک لید
- تکنیکال لید
- لید فنی
- سرپرست فنی نرمافزار
- تیم لید فنی
- رهبر فنی
- Tech Lead
- Technical Team Lead
- Software Technical Lead
- Lead Software Engineer
وظایف و مسئولیتها
فعالیتهای زیر بخشهای اصلی نقش سرپرست فنی را نشان میدهند.
-
هدایت تصمیمهای فنی تیم
راهکارهای فنی را با توجه به نیازهای محصول، معماری موجود، زمان تحویل و ریسکهای عملیاتی ارزیابی میکند تا تیم به راهکاری پایدار و قابل نگهداری دست یابد.
-
بازبینی کد و حفظ استانداردها
Pull Requestهای مهم را در GitHub یا GitLab بررسی میکند، درباره طراحی و تست بازخورد فنی ارائه میدهد و بر رعایت استانداردهای کدنویسی و کیفیت کد نظارت میکند.
-
برنامهریزی تحویل فنی
نیازمندیهای بزرگ را به وظایف فنی کوچکتر تقسیم میکند، وابستگیها و ریسکها را شناسایی کرده و با استفاده از Jira، به برنامهریزی و تحویل مرحلهای کارها کمک میکند.
-
حل مسائل فنی پرریسک
در خطاهای پیچیده، افت کارایی، ناسازگاری سرویسها یا رخدادهای تولید وارد عمل میشود تا علت مسئله مشخص و راهحل پایدار اجرا شود.
-
راهنمایی و رشد توسعهدهندگان
برای اعضای کمتجربهتر بازخورد سازنده و قابل اجرا ارائه میدهد، جلسات انتقال دانش برگزار میکند و فرصتهایی برای افزایش تدریجی مسئولیتهای فنی ایجاد میکند.
-
هماهنگی با محصول و ذینفعان
محدودیتهای فنی، هزینه اجرا و پیامدهای تصمیمها را برای مدیر محصول و ذینفعان به زبان قابل فهم توضیح میدهد تا برنامهریزی و تعهدات محصول واقعبینانه باشد.
-
ثبت و بهبود دانش فنی
تصمیمهای معماری، قراردادهای سرویس و رویههای عملیاتی را در ابزارهایی مانند Confluence مستند میکند تا دانش فنی تیم، اشتراکگذاری شده و وابسته به افراد خاص نباشد.
نیازمندیها و مهارتها
فهرست زیر مهارتها و ابزارهای اصلی سرپرست فنی را نشان میدهد.
مهارتهای مورد نیاز
ابزارهای رایج
سایر نیازمندیها
جدای از مهارتها و ابزارهای بالا، این موارد هم در آگهیهای استخدام این شغل دیده میشوند:
- سابقه عملی توسعه نرمافزار در یک حوزه فنی مشخص
- توانایی اولویتبندی زیر فشار زمان
- انگلیسی فنی برای خواندن مستندات و پیگیری مسائل
- پذیرش مسئولیت تصمیمهای فنی و پیامدهای آنها
- توانایی گفتوگوی سازنده در اختلافنظرهای فنی
چشمانداز شغلی
برای بررسی مسیر حرفهای این شغل، توجه به عوامل زیر تصویر روشنتری ارائه میکند.
-
اختیار فنی بدون مدیریت مستقیم
سرپرست فنی معمولا در طراحی راهکار، استانداردهای کد و مدیریت ریسکهای تحویل نقش تعیینکننده دارد، اما لزوما مسئول استخدام، ارزیابی عملکرد یا مرخصی اعضای تیم نیست. پیش از پذیرش این نقش، حدود اختیار او در مقایسه با مدیر مهندسی را روشن کنید.
-
خطر گلوگاهشدن در بازبینی کد
اگر همه تصمیمها و Pull Requestها برای تأیید سرپرست فنی وابسته شوند، سرعت تیم کاهش پیدا میکند. سرپرست فنی مؤثر معیارهای بازبینی را شفاف میکند، مسئولیت را میان توسعهدهندگان توزیع میکند و فقط در تغییرهای پرریسک، بررسی عمیقتری انجام میدهد.
-
پیشنهاد شغلی را با دامنه مسئولیت مقایسه کنید.
برای ارزیابی یک پیشنهاد شغلی، درباره تعداد توسعهدهندگان و تیمها، میزان مشارکت واقعی در کدنویسی، اختیار مخالفت با راهکارهای پرریسک، مسئولیت رخدادهای تولید، وضعیت بدهی فنی و زمان اختصاصیافته به راهنمایی اعضا پرسش کنید. عنوان یکسان میتواند دامنه مسئولیت بسیار متفاوتی داشته باشد.
-
مالک تبدیل معماری به تحویل تیمی
معمار نرمافزار ممکن است تصمیمهای کلان معماری سامانه را تعیین کند، اما سرپرست فنی باید این تصمیمها را به کارهای قابل اجرا، استانداردهای کد، تست و برنامه تحویل تیم تبدیل کند. این نقش با صرفا یک توسعهدهنده ارشد تفاوت دارد، زیرا مسئول هماهنگی تصمیمهای فنی در سطح تیم است.
-
همکاری دورکار یک گزینه ثانویه است
در همکاری دورکار یا بینالمللی، اثربخشی این نقش به سیاستهای شرکت، همپوشانی زمانی، دسترسی به زیرساختها و محیطهای عملیاتی و فرایند پاسخگویی به رخدادها وابسته است. بازبینی کد از راه دور بهتنهایی کافی نیست؛ تصمیمهای حساس باید ثبت و قابل پیگیری باشند.
پرسشهای رایج درباره سرپرست فنی
اگر درباره این شغل پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
تفاوت سرپرست فنی با مدیر مهندسی چیست؟
سرپرست فنی بیشتر مالکیت جهتگیری و کیفیت فنی کار را بر عهده دارد و معمولا در طراحی، کدنویسی و حل مسئله مشارکت میکند. مدیر مهندسی بیشتر روی استخدام، ارزیابی عملکرد، رشد افراد، ظرفیت تیم و مدیریت سازمانی تمرکز دارد. مرز این دو نقش در شرکتهای کوچک ممکن است همپوشانی داشته باشد.
آیا سرپرست فنی باید همیشه کدنویسی کند؟
الزاما خیر، اما باید بتواند کیفیت راهکارها و کد را ارزیابی کند و در مسائل دشوار وارد جزئیات فنی شود. میزان کدنویسی او به اندازه تیم، بلوغ پایگاه کد و ساختار سازمان بستگی دارد.
آیا میتوانم مستقیما از موقعیت جونیور به سرپرست فنی برسم؟
معمولا خیر. ابتدا باید در یک یا چند حوزه توسعه نرمافزار، تجربه عملی قابل اتکایی کسب کنید، مسئولیت کارهای پیچیدهتر را بپذیرید و توانایی همکاری، هدایت و راهنمایی دیگران را نشان دهید.
در آگهیهای استخدامی ایران، برای نقش سرپرست فنی چه چیزهایی را بررسی کنم؟
الگوی واحدی برای همه آگهیها وجود ندارد. شرح شغل را از نظر فناوریهای اصلی مورد استفاده تیم، تعداد افراد، اختیار تصمیمگیری، سهم کدنویسی، مسئولیت کیفیت و رخدادهای تولید بررسی کنید. همچنین مشخص کنید مدیر مستقیم شما چه کسی است و آیا مسئولیتهای مدیریت افراد نیز به این نقش واگذار میشود یا خیر.
آیا سرپرست فنی همان معمار نرمافزار است؟
خیر. معمار نرمافزار معمولا دامنه تمرکز گستردهتری بر معماری کلان سامانه و استانداردهای بینتیمی دارد. سرپرست فنی بیشتر مسئول تبدیل تصمیمهای فنی به اقدامهای اجرایی روزمره و تحویل مؤثر در یک تیم یا دامنه مشخص است.
برای سرپرست فنی شدن از کجا شروع کنم؟
ابتدا در نقش توسعهدهنده، توانایی حل مسئله، طراحی راهکار و سیستم، تست، بازبینی کد و همکاری تیمی را تقویت کنید. سپس مسئولیت هدایت توسعه یک قابلیت، مستندسازی تصمیمها یا راهنمایی همتیمیها را بهتدریج بپذیرید. جزئیات مراحل یادگیری در نقشه راه سرپرست فنی آمده است.