معرفی
برای گرفتن نخستین موقعیت مهندسی نرمافزار، دانستن همه فناوریها لازم نیست. شما باید بتوانید مسئله مشخصی را با کد قابل اجرا حل کرده، تغییرات خود را با Git ثبت کنید و درباره تصمیمها و محدودیتهای پروژهتان توضیح دهید. هدف این راهنما، تبدیل تمرینهای پراکنده به شواهدی است که میتوانید در رزومه، مخزن کد و درخواست شغلی ارائه کنید.
در بازار ایران، عنوانهای شغلی زیر را همراه با شرح وظایف آنها بررسی کنید:
Junior Software Engineer
برنامهنویس جونیور
توسعهدهنده نرمافزار
کارآموز برنامهنویسی
نقشهای جونیور بکاند و فرانتاند
برخی از این آگهیها برای کارآموزی مناسب هستند، اما برخی دیگر با وجود عنوان جونیور، تجربه تجاری یا تسلط بر مجموعه مهارتهای فنی مشخصی را مطالبه میکنند.
برای یادگیری گامبهگام مهارتهای این شغل، نقشه راه مهندس نرمافزار را ببینید. برای آمادهشدن جهت شرکت در جلسههای استخدامی، راهنمای مصاحبه شغلی مهندس نرمافزار را بخوانید.
مخاطبان راهنما
این راهنما برای افرادی است که دانش پایه برنامهنویسی دارند یا در حال تکمیل آن هستند و میخواهند بدون سابقه استخدامی، نخستین موقعیت کارآموزی، جونیور یا همکاری پروژهای خود را در مهندسی نرمافزار پیدا کنند. مخاطب ممکن است دانشجو، فارغالتحصیل رشتهای دیگر، کارآموز یا فردی باشد که از نقش فنی مجاور به توسعه نرمافزار تغییر مسیر میدهد.
سنجش آمادگی ورود
برای ارسال نخستین درخواست لازم نیست در طراحی سامانههای بزرگ خبره باشید. حداقل آمادگی واقعبینانه این است که بتوانید قابلیت کوچکی را از دریافت ورودی تا نمایش نتیجه یا ذخیرهسازی داده پیادهسازی کرده، خطای آن را بررسی کنید و کدتان را برای فرد دیگری توضیح دهید.
حداقل شواهد آمادگی
با کمک یکی از زبانهای برنامهنویسی و ابزارهای پایه آن، برنامهای چندفایلی نوشتهاید.
پروژه قابل اجرایی دارید که مسئله، روش اجرا و شیوه راهاندازی آن در فایل راهنما یا README توضیح داده شده است.
تغییرات پروژه را با Git ثبت کردهاید و تاریخچه commit-ها فقط شامل تغییر نهایی نیست.
برای رفتارهای مهم پروژه، چند تست پایه نوشتهاید یا دستکم روش آزمودن دستی را مستند کردهاید.
میتوانید باگ واقعی را بازتولید، علتیابی و رفع کنید.
میتوانید توضیح دهید چرا ساختار داده، مدل داده یا مرز ماژولهای پروژه را به آن شکل انتخاب کردهاید.
اگر هنوز این موارد را ندارید، درخواستدادن را کاملا متوقف نکنید، اما تمرکز اصلیتان باید تکمیل همین شواهد باشد. برای فردی که از قبل برنامهنویسی پایه میداند و هفتهای حدود ۱۰ ساعت تمرین هدفمند دارد، رسیدن به این سطح معمولا ۳ تا ۶ ماه زمان میبرد. از نقطه صفر، همین مسیر اغلب ۶ تا ۱۲ ماه زمان میخواهد.
مهارتهای قابل انتقال
- مهارت برنامهنویسی Programming
- مهارت اشکالزدایی نرمافزار Software Debugging
- مهارت ارتباطات فنی Technical Communication
- مهارت کنترل نسخه Version Control
- مهارت کاربست اصول و روشهای چابک Agile Practices
- مهارت تست نرمافزار Software Testing
موانع رایج ورود
-
پروژههای آموزشی بدون مسئله واقعی
-
پراکندگی بین چند زبان و فریمورک
-
نداشتن سابقه کار رسمی
-
مخزن کد نامنظم یا غیرقابل اجرا
-
ارسال رزومه یکسان برای همه آگهیها
-
ترس از درخواستدادن پیش از کاملشدن
-
نبود بازخورد روی کد
مسیرهای ورود
این بخش تصویری کلی از نقاط قوت و چالشهای راهنمای ورود به شغل مهندس نرمافزار ارائه میکند.
مسیرهای ورود
-
کارآموزی یا موقعیت جونیور ساختاریافته
توضیح مسیر: برای افراد کمتجربه، کارآموزی در تیمی که بازبینی کد و منتور دارد میتواند مسیر مستقیمی برای ساخت تجربه تیمی باشد. دسترسی به چنین موقعیتی و کیفیت برنامه تعیینکننده است. در آگهی، درباره حقوق یا کمکهزینه، مدت همکاری، فناوری اصلی، امکان استخدام پس از دوره و فرد مسئول منتورینگ سؤال کنید. کارآموزی بدون وظیفه روشن یا بازخورد فنی، لزوما سابقه مفیدی ایجاد نمیکند.
مدت تقریبی: ۳ تا ۶ ماه
-
خودآموزی هدفمند و ساخت یک پروژه قابل ارائه
توضیح مسیر: این مسیر برای فردی مناسب است که میتواند برنامه تمرینی ثابت داشته باشد. بهجای گذراندن دورههای متعدد، زبان و حوزهای نزدیک به آگهیهای هدف انتخاب کنید و یک پروژه کامل بسازید. مزیت آن انعطاف است، هزینه آن، نیاز بیشتر به خودمدیریتی و گرفتن بازخورد از بیرون است.
مدت تقریبی: ۳ تا ۶ ماه
-
پروژه گروهی دانشجویی یا متنباز
توضیح مسیر: کار گروهی، استفاده از issue، Pull Request و بازبینی کد را نشان میدهد. چیزهایی که در پروژه تکنفره کمتر دیده میشوند. پروژهای را انتخاب کنید که سهم شما قابل تفکیک باشد و بتوانید درباره تغییرات خود توضیح دهید. مشارکت کوچک اما پذیرفتهشده، از fork-های بدون تغییر ارزشمندتر است.
مدت تقریبی: ۲ تا ۵ ماه
-
تغییر نقش داخلی در شرکت یا تیم فعلی
توضیح مسیر: افرادی که در پشتیبانی، تست، تحلیل کسبوکار یا عملیات فناوری اطلاعات کار میکنند، میتوانند با گرفتن یک وظیفه کوچک توسعهای وارد شوند. رفع باگ، خودکارسازی گزارش، ساخت ابزار داخلی یا نوشتن تست، نقطه شروع مناسبی است. درباره زمان یادگیری، مالک فنی کار و معیار انتقال نقش با مدیر خود توافق روشن داشته باشید.
مدت تقریبی: ۳ تا ۹ ماه
-
پروژه آزاد کوچک با دامنه کنترلشده
توضیح مسیر: ساخت ابزار مناسبی برای کسبوکار کوچک، انجمن دانشجویی یا آشنایان میتواند تجربه تحویل واقعی ایجاد کند. فقط پروژهای را بپذیرید که نیازمندی، زمان تحویل و مسئولیت نگهداری آن محدود باشد. کار رایگان نامحدود یا پروژه مبهم، معمولا هم نمونهکار مناسبی نمیسازد و هم زمان یادگیری را میگیرد.
مدت تقریبی: ۲ تا ۴ ماه
راههای کسب تجربه
-
تبدیل یک پروژه شخصی به مخزن قابل بررسی
برای پروژه README بنویسید، مراحل راهاندازی را تست کنید، issue-های شناخته شده را ثبت کنید و چند commit معنادار بسازید. کارفرما باید بتواند بدون تماس با شما، هدف پروژه و کیفیت فرایندتان را بررسی کند.
-
رفع یک باگ مستند
یک خطای واقعی در پروژه خود یا پروژه گروهی را با مراحل بازتولید ثبت کنید، برای آن تست بنویسید و سپس رفعش کنید. این فرایند توانایی عیبیابی شما را بهتر از افزودن یک قابلیت نمایشی نشان میدهد.
-
مشارکت کوچک در پروژه متنباز
از اصلاح مستندات، تست یا یک Issue کوچک شروع کنید. پیش از تغییر کد، راهنمای مشارکت پروژه را بخوانید و در توضیح Pull Request، مسئله و روش آزمون را روشن بنویسید.
-
همکاری دونفره با فرایند Pull Request
با یک هممسیر، وظایف را تقسیم کنید و تغییرات را مستقیم روی شاخه اصلی ثبت نکنید. برای هر تغییر Pull Request یا Merge Request بسازید و دستکم یک بازخورد مکتوب ارائه دهید.
-
ساخت ابزار داخلی کوچک
یک کار تکراری شخصی یا تیمی را شناسایی کنید. مانند ثبت درخواست، تبدیل فایل یا گزارشگیری. ابزار باید کاربرد و سناریوی روشنی داشته باشد تا بتوانید نتیجه آن را در رزومه توضیح دهید.
نمونهکار و درخواست شغل
راهنمای نمونهکار
برای نخستین درخواست، ارزش یک پروژه کامل و قابل بررسی از چندین مخزن نیمهتمام بیشتر است. پروژه باید نشان دهد که توانایی تبدیل یک نیاز به نرمافزار قابل اجرا و نگهداری را دارید.
ویژگیهای یک پروژه نمونهکار مناسب
یک مسئله روشن و سناریوی کاربر مشخص دارد.
ساختار کد، مدل داده و مرز ماژولهای آن قابل توضیح است.
ورودیهای نامعتبر، خطاها و حالتهای مرزی را مدیریت میکند.
برای مسیرهای مهم پروژه، تست یا دستور آزمون دستی ارائه میدهد.
فایل راهنما (README) آن شامل هدف، فناوریها، مراحل اجرا، داده نمونه و محدودیتهای فعلی است.
تاریخچه Git نشان میدهد که پروژه در چند گام مشخص توسعه یافته است.
مخزن پروژه را در GitHub یا GitLab منتشر کنید. اگر کد پروژه عمومی نیست، نسخه نمایشی، تصاویر، ویدئوی کوتاه و توضیح معماری را در مخزن عمومی بگذارید. نام پروژه، لینک مخزن و نقش دقیق خود را در رزومه بیاورید. فناوریها را تنها در صورت استفاده واقعی در خروجی پروژه فهرست کنید.
پروژههای پیشنهادی
-
سامانه مدیریت درخواست با API و نقشهای کاربری
توضیح پروژه: سامانهای برای ثبت و پیگیری درخواستها بسازید که کاربران، نقشها، وضعیت درخواست و تاریخچه تغییرات داشته باشد. اعتبارسنجی ورودی، مدیریت خطا، طراحی API، ذخیرهسازی داده و چند تست برای مسیرهای اصلی را اضافه کنید. این پروژه توانایی تبدیل نیازمندی به قابلیت قابل نگهداری را نشان میدهد.
-
ابزار گزارشگیری از دادههای عملیاتی
توضیح پروژه: برنامهای بسازید که دادههای ساختیافته را دریافت کرده، خطاهای داده را گزارش دهد و خروجی خلاصه تولید کند. ورودیهای خراب، داده تکراری و حجم متوسط داده را در نظر بگیرید. در README، تصمیمهای مربوط به ساختار داده و روش آزمون را توضیح دهید.
-
رفع باگ و افزودن تست به یک پروژه موجود
توضیح پروژه: یکی از پروژههای قبلی خود یا پروژه متنباز کوچکی را انتخاب کنید. یک باگ قابل بازتولید پیدا کنید، issue ثبت کنید، ابتدا تست شکستخورده بنویسید و سپس آن را رفع کنید. Pull Request باید مسئله، علت ریشهای و شیوه آزمون را توضیح دهد.
راهنمای رزومه و درخواست شغل
رزومه نخستین موقعیت مهندسی نرمافزار باید کوتاه، قابل راستیآزمایی و متناسب با آگهی باشد. در صورت نداشتن سابقه کار رسمی، بخش پروژهها را پیش از سوابق کاری بگذارید. برای هر پروژه، مسئله، سهم خود، فناوریهای استفاده شده و لینک مخزن را در چند خط توضیح دهید.
از به کار بردن عبارات کلی مانند «مسلط به همه زبانها» یا فهرستکردن ابزارهای فراوان پرهیز کنید. بهجای آن، دستاوردی قابل بررسی ارائه دهید. برای نمونه: «طراحی و پیادهسازی API ثبت درخواست با اعتبارسنجی ورودی و تست مسیرهای اصلی». در پروژههای گروهی، مسئولیت دقیق خود را شفاف سازید.
کانالهای درخواست شغلی در ایران
برای جستوجوی آگهیهای شغلی به پلتفرمهای جابویژن، جابینجا، کوئرا جابز و LinkedIn Jobs مراجعه کنید.
عنوان نقش، سطح تجربه و فناوریهای مورد نیاز را در جستوجو وارد کنید.
بخش فرصتهای شغلی وبسایت شرکتهای هدف را مستقیم بررسی کنید.
برای موقعیتهای دولتی یا عمومی، تنها اطلاعیههای منتشرشده در وبسایت رسمی سازمان مربوطه یا سازمان سنجش آموزش کشور را ملاک قرار دهید.
برای هر درخواست، شرح وظایف را با پروژههای خود تطبیق دهید. اگر آگهی بر بکاند و پایگاه داده تأکید دارد، پروژه مرتبط را در ابتدای رزومه بیاورید. تنها زمانی برای آگهیهای بدون تجربه کاملا منطبق درخواست بفرستید که مبانی نزدیک آن را در پروژهای نشان داده باشید.
پس از ارسال، جدول پیگیری شامل نام شرکت، عنوان نقش، تاریخ درخواست، فناوریها و وضعیت پاسخدهی بگذارید.
چکلیست آمادگی درخواست
موارد زیر را یکبهیک بررسی کنید تا چیزی جا نماند:
- یک پروژه قابل اجرا با README کامل و لینک مخزن آماده است.
- مراحل راهاندازی پروژه را روی محیط تازه آزمایش کردهام.
- تاریخچه Git پروژه شامل commit-های معنادار است.
- برای مسیرهای مهم پروژه، تست یا روش آزمون مستند دارم.
- میتوانم مسئله، معماری و محدودیتهای پروژه را توضیح دهم.
- رزومه برای فرد کمتجربه به طور معمول یک صفحه است، مگر اینکه پروژه یا تجربه مرتبط فضای بیشتری بخواهد.
- در رزومه، سهم خودم در هر پروژه را مشخص کردهام.
- فناوریهای رزومه را فقط بر اساس تجربه عملی نوشتهام.
- پروفایل لینکدین یا کانال حرفهای من با رزومه سازگار است.
- برای نقشهای هدف، آگهیهای جونیور و کارآموزی را ذخیره کردهام.
- برای هر آگهی، رزومه و ترتیب پروژهها را متناسب میکنم.
- جدول پیگیری درخواستها و پاسخها را ساختهام.
پرسشهای پرتکرار
در این بخش، به تعدادی از پرسشهای رایج درباره این مسیر پاسخ داده شده است.
بدون سابقه کار رسمی میتوانم برای مهندس نرمافزار درخواست بدهم؟
بله. وجود پروژه قابل اجرا، مخزن مرتب، README، تاریخچه Git و توانایی توضیح تصمیمهای فنی میتوانند بخشی از نبود سابقه رسمی را جبران کنند. برای نقشهای کارآموزی و جونیور، این شواهد را در ابتدای رزومه قرار دهید.
برای نخستین درخواست چند نمونهکار لازم دارم؟
حداقل یک پروژه کامل و قابل بررسی لازم است. همان پروژه باید مسئله روشن، کد قابل اجرا، مدیریت خطا، مستندات و نشانهای از آزمون داشته باشد. پروژههای بیشتر فقط وقتی مفیدند که هر کدام مهارت متفاوتی را نشان دهند.
مدرک دانشگاهی یا گواهی فنی و حرفهای را چگونه در رزومه بنویسم؟
مدرک یا گواهی مرتبط را در بخش تحصیلات و گواهیها، همراه با نام مؤسسه و تاریخ دریافت بنویسید. آن را جایگزین پروژه نکنید. برای ارزیابی نقش و ضرورت مدرک، صفحه شغل مهندس نرمافزار را ببینید.
برای شروع، کارآموزی بهتر است یا پروژه شخصی؟
اگر کارآموزی دارای منتور، بازبینی کد و وظیفه روشن پیدا کنید، تجربه تیمی ارزشمندی میدهد. اگر چنین موقعیتی ندارید، پروژه شخصی قابل ارائه مسیر مناسبتری است. در هر دو حالت، خروجی قابل بررسی مهمتر از عنوان مسیر است.
اگر آگهی جونیور تجربه یک یا دو ساله خواسته باشد، درخواست بدهم؟
اگر بیشتر مسئولیتها را میفهمید و با فناوری اصلی آگهی پروژه مرتبط دارید، درخواست بدهید و شکاف خود را پنهان نکنید. اگر آگهی مسئولیت طراحی مستقل سامانه یا تجربه عملیاتی گسترده میخواهد، بهتر است نقش نزدیکتر یا کارآموزی را نیز دنبال کنید.
آیا باید GitHub داشته باشم؟
داشتن مخزن قابل دسترسی در GitHub یا GitLab بسیار کمککننده است، زیرا کارفرما میتواند کد و مستندات شما را بررسی کند. مهمتر از نام پلتفرم، قابل اجرا بودن پروژه، README و تاریخچه تغییرات است.
در رزومه مهندس نرمافزار چه چیزی را بنویسم؟
اطلاعات تماس حرفهای، مهارتهای عملی، پروژههای قابل بررسی، تحصیلات یا تجربه مرتبط و لینک مخزن را بنویسید. برای هر پروژه، مسئله، سهم خود و خروجی فنی را روشن کنید؛ فهرستکردن فناوریهای بدون نمونه عملی ارزش کمی دارد.
آموزشهای مرتبط در فرادرس
-
آموزش مهندسی نرم افزار ۱ + گواهینامه
-
آموزش برنامه نویسی پایتون Python، مقدماتی + گواهینامه
-
آموزش مدل های فرایند در مهندسی نرم افزار (رایگان)
-
راهنمای جامع شغلی مهندسی نرم افزار، وظایف، فرصت ها و بازار کار (رایگان)
-
۱۱ قدم برای تبدیل شدن به مهندس نرمافزار
-
آموزش رزومه نویسی حرفه ای، از صفر تا صد + فیلم رایگان