از پایه تا پیشرفته: مسیر شغلی توسعه دهنده/مهندس نرم‌افزار

مقدمهمن شغل حرفه‌ای خود را با IBM India به عنوان توسعه دهنده برنامه جاوا در بخش تحقیقات علمی در کشور هند آغاز کردم. در این 5 سال سابقه ی کاری حرفه‌ای خود ، هر وقت که با دانشجویان در جلسات/ انجمن / مناسبت ها و یا وبینار‌ ها در ارتباط بودم یک سوال برایم پیش می آمد و آن این بود که : "مسیر شغلی یک توسعه دهنده یا مهندس نرم افزار چیست؟" .من با پیش زمینه فنی شروع به یادگیری مهندسی نرم افزار به صورت خودآموز کردم، و تصمیم گرفتم که آموخته ها و تجربیات خودم را ثبت کنم تا دیگران برای ساختن و انتخاب حرفه خود بتوانند از آن بهره ببرند.نکته: این مقاله بیشتر مربوط به شرکت های عرفی است و ممکن است به خوبی با مبتدیان سازگار نباشند و همچنین در ادامه محدوده میزان حقوق و دستمزد مختص به مرجع یعنی کشور هند است و نیاید به عنوان یک معیار در نظر گرفته شود.شرکت هایی که استخدام می کنندشرکت های فراوانی وجود داردند که خواهان استخدام مهندسین نرم افزار هستند که من آنها رو به دو نوع طبقه بندی میکنم: شرکت های مبتنی بر محصول به زبان ساده ، شرکت های مبتنی بر محصول ، محصولات خود را به فروش می رسانند. مانند Adobe, Amazon, Amdocs, BMC Software, Cisco, Facebook, Google, Hewlett-Packard (HP), International Business Machines Corporation (IBM), Intel, Intuit, McAfee, Microsoft, Paypal, Redhat و ...شرکت های مبتنی بر سرویس دهیشرکت های مبتنی بر سرو یس دهی ممکن است محصولی برای فزوش داشته یا نداشته باشند زیرا خدمات اصلی آنها خدمات رسانی است. این شرکت ها برای سازمان ها دیگر یا به بیانی بهتر این شرکت ها مشتریانشرکت های مبتنی بر محصول هستند. مانند Infosys, Wipro, TCS, Cognizant, HCL, Tech Mahindra, L&T, Mphasis, Mindtree, C-DAC, Cybage, Cyient, Thoughtworks, KPIT Technologies و ...صادقانه بگویم ، من هرگز در مورد شرکت های مبتنی بر محصول در مقابل شرکت های خدمات محور بحث نمی کنم و معمولاً این موضوع را به عهده شخص می گذارم که براساس علاقه ها و مهارت هایش تصمیم گیری کند.مسیر های شغلی یک مهندس نرم افزار نکته: مسیر شغلی زیر ماهیتی عمومی دارد و بیشتر شرکت ها و استارتاپ ها و همچنین بیشتر افراد در صنعت IT کاربردارد و ممکن است از لحاظ تجربه کاری ، مجموعه مهارت ها لازم ، عنوان دقیق شغل و مسئولیت های شغلی از یک شرکت نسبت به شرکت های دیگر متفاوت باشد.1) مهندس نرم افزارمیزان سابقه و تجربه مورد نیاز : 0 تا 3 سالتشریح شغل: نرم افزاری بر اساس خصوصیات ذکر شده توسط مشتری در زمان تعیین شده می سازد و برنامه را اجرا و رفع اشکال می کند.مهارت های لازم : آشنایی با زبان های برنامه نویسی ، سیسام عامل ها (OS)، الگوریتم ها و پایگاهای داده (databases)2) مهندس ارشد نرم افزارمیزان سابقه و تجربه مورد نیاز : 3 تا 6 سالتشریح شغل : ساخت برنامه و راهنمایی مهندسین و توسعه دهندگان دیگرمهارت های لازم : آشنایی با معماری پایه ، تبحر در طراحی کد ها ، مهندس راهنما ، آموزش دادن دیگران3) رهبر فناوریمیزان سابقه و تجربه مورد نیاز : 6 تا 9 سالتشریح شغل: نظارت بر تیم مسئول برنامه ریزی ، اجرا و موفقیت راه حل های نرم افزارهای پیچیدهمهارت های لازم: تبحر در معماری و طراحی پیشرفته سیستم ها ، کارفرمایی پروژه4) معاون مهندسی یا مدیر مهندسیمیزان سابقه و تجربه مورد نیاز: 9 تا 13 سالتشریح شغل: برنامه ریز فرایند کار برای تیم ها ............مهارت های لازم: تبحر در معماری و طراحی پیشرفته سیستم ها5) مدیر ارشد فناوری (CTO)میزان سابقه و تجربه مورد نیاز: بیشتر از 13 سالتشریح شغل: مسئول تحقیق و توسعه (R&D) و نیاز های فناوری و استفاده از فناوری برای افزایش کیفیت محصولات و خدمات برای مشتریان خارجیمهارت های لازم: تفکر استراتژیک ، شناخت مهارت های افراد ، توانایی استخدام کردنگزینه های شغلی برای یک مهندس نرم افزاربرای مسیر شغلی فوق ، موارد زیر گزینه های شغلی است که فکر می کنم یک مهندس یا توسعه دهنده نرم افزار می تواند از بین آنها انتخاب کند و بر اساس تجربه کاری و مهارت هایی که در اختیار دارد از پله های ترقی بالا برود.1) مهندس Back-endشرح شغل : یک مهندس Back-end معمولا وظیفه ایجاد ساختار یک برنامه نرم افزاری را برعهده دارد. آنها در اولویت اول وقت خود را صرف نوشتن منطق تجاری ، اسکریپت های سرور و API می کنند که در نهایت توسط توسعه دهندگان Front-end و طراحان UX مورد استفاده قرار می گیرد.میانگین حقوق (تقریبی): 9500 تا 11000 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : ++Python, PHP, Node.js, Go, Java, C2) مهندس Front-endشرح شغل : یک مهندس Front-end به عنوان توسعه دهنده Front-end و طراح رابطه کاربری ، انتخاب کننده ، نصب کننده نیز شناخته می شود و همچنین المنت های واسطه کاربری را نیز تست می کند. و مهندس Front-end تمرکز بر ضاهر و احساسی که بیننده منتقل می کند را با عملکرد هایش داردمیانگین حقوق : 6800 تا 8100 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : JavaScript, CSS, HTMLشرکت های مشهور که خواهان این افراد برای استخدام هستند : TCS, Accenture, Sapient, Capgemini, HCL, Cognizant, Freshdesk3) مهندس full-stack وبشرح شغل : یک مهندس Full-stack ، توسعه دهنده وب یا یک مهندس Front-end و Back-end وبسایت یا برنامه نیز است . به این معنی که آنها می توانند پروژه هایی را که شامل پایگاه داده ، ساخت ظاهر وب سایت ها یا حتی کار با مشتری در مرحله برنامه ریزی پروژه ها است .میانگین حقوق: 8100 تا 9500 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : JavaScript, CSS, HTML, Angular, React, Django, Python, Java, Node.js, Go, MySQLشرکت های مشهور که خواهان این افراد برای استخدام هستند : TCS, IBM, Vassar Labs, Nuclei, Report Garden, Accenture, Wipro, GALE Partners, Infosys, Cognizant Technology Solutions, Oracle Schlumberger4) توسعه دهنده موبایلشرح شغل : توسعه دهندگان موبایل در فناوری های موبایل مانند ساخت برنامه موبایلی برای اندروید ، IOS و پلتفرم Windows Phone مایکروسافت تخصص دارند. به همین دلیل عناوین شغلی برای این نوع نقش ها شامل توسعه دهنده Android و توسعه دهنده iOS نیز مناسب می باشد.میانگین حقوق: 5400 تا 6800 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Kotlin / Java (for Android) and Swift /Objective-C (for iOS)شرکت های مشهور که خواهان این افراد برای استخدام هستند : Jio, Solution IT, TCS, Cognizant5) مهندس بازی / گرافیکشرح شغل : یک مهندس بازی ، توسعه دهنده نرم افزاری است که بازی های ویدیوای را تولید می کند. برخی از مهندسان بازی به طور مستقل کار می کنند و بازی های کوچکتری را ایجاد می کنند که به منظور کار بر روی تلفن همراه یا کامپیوتر است. با این حال ، برای تولید بازی برای کنسول ها یا بازی های رایانه ای با عملکرد بالا ، باید به طور کلی در یک شرکت بزرگتر برای طراحی بازی کار کنید.میانگین حقوق: 5400 تا 6800 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : C/C++, C#, Unity, GPU graphicsشرکت های مشهور که خواهان این افراد برای استخدام هستند : Sumo digital6) مهندس دادهشرح شغل : مهندسان داده مسئول یافتن روند و مسیر ها در مجموعه داده ها و ایجاد الگوریتم هایی برای کمک به مفیدتر واقع شدن داده های خام برای شرکت ها هستند. مهندسین داده اغلب وظیفه ساخت الگوریتم ها را دارند تا به شما امکان دسترسی آسان تر به داده های خام را بدهند ، اما برای انجام این کار ، آنها باید اهداف شرکت یا مشتری را درک کنند.میانگین حقوق: 10900 تا 12200 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Python or R, SQL, Data science toolkits NumPy, Pandas, SciPy, scikit-learn, Big Data technologies: Hadoop, Hive, BigTable, Cassandra or relevantشرکت های مشهور که خواهان این افراد برای استخدام هستند : Amazon, TCS, IBM, Infosys, Jio, Accenture, General Electric, Capgemini, Cognizant, Fractal Analytics, HCL7) مهندس کنترل کیفیت / آزمون و خطا / دستگاه تنظیم خودکار (SDET)شرح شغل : مهندسان کنترل کیفیت وظیفه ارزیابی کیفیت مشخصات و اسناد طراحی فنی را برای اطمینان از بازخورد به موقع ، مرتبط و معنی دار بر عهده دارند. آنها در برنامه ریزی و اجرای استراتژی های مدیریت کیفیت و آزمایش نقش دارند.میانگین حقوق: 4000 تا 6800مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : C#,.NET, Java or other programming languages, Knowledge of various test methods & corresponding tools like MS Test, NUnit, TestNG, Selenium WebDriver, etc.شرکت های مشهور که خواهان این افراد برای استخدام هستند : Amazon, Cybage, Dassault Systems, HCL, Oracle, Talentica, Flextronics, Capita India, Fidelity Investments, Synerzip8) مهندس توسعه و عملیات / DevOpsشرح شغل : مهندس DevOps کسی است که چرخه عمر نرم افزار ها را می فهمد و از ابزارهای مختلف اتوماسیون برای توسعه کانال دیجیتالی ارتباط (CI / CD) کاملاً آگاه است.میانگین حقوق: 8100 تا 9500شرکت های مشهور که خواهان این افراد برای استخدام هستند : TCS, Accenture, Amazon, IBM, Cognizant, Amdocs, Infosys, Wipro, Oracle, HCL, SAP Labs, Citrix, Thoughtworks, Nagarro, Zycus Infotech, Jio, Dell9) توسعه دهنده الگوریتم نرم افزارشرح شغل : این رشته شامل تحقیقات زیادی و دکترای تخصصی است یا حداقل مدرک کارشناسی ارشد. وظیفه شغلی آنها شامل خواندن مقالات زیاد ، تحقیق برای تبدیل مفاهیم در تمام روزها و نظریه های دانشگاهی به راه حل های واقعی است.میانگین حقوق: 8100 تا 9500 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : مهارت حل مسئله بسیار بالا ، بهينه سازي ، محاسبات کوانتومی و تحقیقات عمیقشرکت های مشهور که خواهان این افراد برای استخدام هستند : مرکز تحقیقات Microsoft Google Brain, Open AI, ، مرکز تحقیقات Facebook , Amazon, ISRO10) توسعه دهنده سیستم تعبیه شدهشرح شغل : توسعه دهنده سیستم تعبیه شده کدهای زبان های سطح پایین که مربوط به 0 و 1 برای راهندازی سیستم و کارهای دیگر است را می نویسد. اکثر مردم این شغل را مفرح و جالب نمی دانند اما به یخچال ، چاپگر ، اجاق گاز یا توستر از اقلام الکترونیکی فکر می کنند که برای توسعه عملکرد و سهولت زندگی شما به مغز یک برنامه نویس نیز نیاز دارد.میانگین حقوق یک: 5400 تا 6800 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Java, XML, Perl, Python, Shell Scripting, C/C++, Assemblerشرکت های مشهور که خواهان این افراد برای استخدام هستند : ualcomm, Intel, Tata Elxsi, ARM, Cisco, Robert Bosch, Whirlpool11) توسعه دهنده فضای ابریشرح شغل : توسعه دهنده فضای ابری اصطلاحی کاملاً جدید در بازار است. امروزه بیشتر برنامه ها بر روی فضای ابری هستند ، بنابراین نقش شغلی این مهندسان شامل برنامه ریزی ، طراحی ، مدیریت و اجرای برنامه ها برروی فضای ابر است. آنها مسئول کل زیرساخت های فضای ابری یک شرکت ، نگهداری و اجرای آن هستند.میانگین حقوق: تا 9500 دلارمجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Linux, Database, Cloud platformsشرکت های مشهور که خواهان این افراد برای استخدام هستند : Microsoft, Google, HP, Apple, AWS (Amazon Web Services)امیدوارم که این مقاله برای شما مفید واقع شده باشد. با تشکر برای وقت ارزشمند خود برای خواندن این مقاله! :)نویسنده: Siddhant Agarwalمترجم: پویا امینیمنبع: medium.com