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


مقدمه


من شغل حرفه‌ای خود را با 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, C


2) مهندس Front-end

  • شرح شغل : یک مهندس Front-end به عنوان توسعه دهنده Front-end و طراح رابطه کاربری ، انتخاب کننده ، نصب کننده نیز شناخته می شود و همچنین المنت های واسطه کاربری را نیز تست می کند. و مهندس Front-end تمرکز بر ضاهر و احساسی که بیننده منتقل می کند را با عملکرد هایش دارد
  • میانگین حقوق : 6800 تا 8100 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : JavaScript, CSS, HTML
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : TCS, Accenture, Sapient, Capgemini, HCL, Cognizant, Freshdesk


3) مهندس 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 Schlumberger


4) توسعه دهنده موبایل

  • شرح شغل : توسعه دهندگان موبایل در فناوری های موبایل مانند ساخت برنامه موبایلی برای اندروید ، IOS و پلتفرم Windows Phone مایکروسافت تخصص دارند. به همین دلیل عناوین شغلی برای این نوع نقش ها شامل توسعه دهنده Android و توسعه دهنده iOS نیز مناسب می باشد.
  • میانگین حقوق: 5400 تا 6800 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Kotlin / Java (for Android) and Swift /Objective-C (for iOS)
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : Jio, Solution IT, TCS, Cognizant


5) مهندس بازی / گرافیک

  • شرح شغل : یک مهندس بازی ، توسعه دهنده نرم افزاری است که بازی های ویدیوای را تولید می کند. برخی از مهندسان بازی به طور مستقل کار می کنند و بازی های کوچکتری را ایجاد می کنند که به منظور کار بر روی تلفن همراه یا کامپیوتر است. با این حال ، برای تولید بازی برای کنسول ها یا بازی های رایانه ای با عملکرد بالا ، باید به طور کلی در یک شرکت بزرگتر برای طراحی بازی کار کنید.
  • میانگین حقوق: 5400 تا 6800 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : C/C++, C#, Unity, GPU graphics
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : Sumo digital


6) مهندس داده

  • شرح شغل : مهندسان داده مسئول یافتن روند و مسیر ها در مجموعه داده ها و ایجاد الگوریتم هایی برای کمک به مفیدتر واقع شدن داده های خام برای شرکت ها هستند. مهندسین داده اغلب وظیفه ساخت الگوریتم ها را دارند تا به شما امکان دسترسی آسان تر به داده های خام را بدهند ، اما برای انجام این کار ، آنها باید اهداف شرکت یا مشتری را درک کنند.
  • میانگین حقوق: 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, HCL


7) مهندس کنترل کیفیت / آزمون و خطا / دستگاه تنظیم خودکار (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, Synerzip


8) مهندس توسعه و عملیات / DevOps

  • شرح شغل : مهندس DevOps کسی است که چرخه عمر نرم افزار ها را می فهمد و از ابزارهای مختلف اتوماسیون برای توسعه کانال دیجیتالی ارتباط (CI / CD) کاملاً آگاه است.
  • میانگین حقوق: 8100 تا 9500
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : TCS, Accenture, Amazon, IBM, Cognizant, Amdocs, Infosys, Wipro, Oracle, HCL, SAP Labs, Citrix, Thoughtworks, Nagarro, Zycus Infotech, Jio, Dell


9) توسعه دهنده الگوریتم نرم افزار

  • شرح شغل : این رشته شامل تحقیقات زیادی و دکترای تخصصی است یا حداقل مدرک کارشناسی ارشد. وظیفه شغلی آنها شامل خواندن مقالات زیاد ، تحقیق برای تبدیل مفاهیم در تمام روزها و نظریه های دانشگاهی به راه حل های واقعی است.
  • میانگین حقوق: 8100 تا 9500 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : مهارت حل مسئله بسیار بالا ، بهينه سازي ، محاسبات کوانتومی و تحقیقات عمیق
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : مرکز تحقیقات Microsoft Google Brain, Open AI, ، مرکز تحقیقات Facebook , Amazon, ISRO


10) توسعه دهنده سیستم تعبیه شده

  • شرح شغل : توسعه دهنده سیستم تعبیه شده کدهای زبان های سطح پایین که مربوط به 0 و 1 برای راهندازی سیستم و کارهای دیگر است را می نویسد. اکثر مردم این شغل را مفرح و جالب نمی دانند اما به یخچال ، چاپگر ، اجاق گاز یا توستر از اقلام الکترونیکی فکر می کنند که برای توسعه عملکرد و سهولت زندگی شما به مغز یک برنامه نویس نیز نیاز دارد.
  • میانگین حقوق یک: 5400 تا 6800 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Java, XML, Perl, Python, Shell Scripting, C/C++, Assembler
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : ualcomm, Intel, Tata Elxsi, ARM, Cisco, Robert Bosch, Whirlpool


11) توسعه دهنده فضای ابری

  • شرح شغل : توسعه دهنده فضای ابری اصطلاحی کاملاً جدید در بازار است. امروزه بیشتر برنامه ها بر روی فضای ابری هستند ، بنابراین نقش شغلی این مهندسان شامل برنامه ریزی ، طراحی ، مدیریت و اجرای برنامه ها برروی فضای ابر است. آنها مسئول کل زیرساخت های فضای ابری یک شرکت ، نگهداری و اجرای آن هستند.
  • میانگین حقوق: تا 9500 دلار
  • مجموعه مهارت / تجربه لازم در زبان های برنامه نویسی : Linux, Database, Cloud platforms
  • شرکت های مشهور که خواهان این افراد برای استخدام هستند : Microsoft, Google, HP, Apple, AWS (Amazon Web Services)


امیدوارم که این مقاله برای شما مفید واقع شده باشد. با تشکر برای وقت ارزشمند خود برای خواندن این مقاله! :)



نویسنده: Siddhant Agarwal

مترجم: پویا امینی

منبع: medium.com