مهندسان نرم افزار به ایجاد صفحه وبی که در حال حاضر می خوانید، مرورگر وب که برای انجام این کار راه اندازی کرده اید، سیستم عاملی که اجازه می دهد و سیستم مدیریت محتوا که میزبان آن هستید کمک کرده اند. هر یک از آن برنامه های نرم افزاری – و در واقع کل محیط دیجیتال گسترده تر – تحت طراحی، آزمایش، نگهداری، نصب، پیکربندی و برنامه نویسی قرار گرفته اند. در یک کلام مهندسی.
مانند خود شغل، مسیر تبدیل شدن به یک مهندس نرم افزار همیشه ساده نیست. برای کمک به شما در سرعت بخشیدن به نحوه تبدیل شدن به یک مهندس نرم افزار، ما اصول این نقش، مزایای آن، جزئیات حقوق، الزامات تجربه و نکات تخصصی در مورد چگونگی تبدیل شدن به یک مهندس نرم افزار و پیشرفت در صنعت را پوشش خواهیم داد.
کسب اطلاعات بیشتر: راهنمای مبتدی برای تفکر الگوریتمی
کسب اطلاعات بیشتر: انواع مختلف زبان های برنامه نویسی
مهندسان نرم افزار چه می کنند؟
مهندسان نرم افزار با زبان های برنامه نویسی مختلف کار می کنند تا نرم افزار را قبل از انتشار توسعه دهند و آزمایش کنند. بسته به بخش، مهندسان نرم افزار می توانند سیستم های سخت افزاری و نرم افزاری کامپیوتر، برنامه های کاربردی موبایل، وب سایت ها، سیستم های بازی و موارد دیگر را ایجاد کنند.
برای توسعه این فناوری ها، مهندسان نرم افزار با تحلیلگران QA، توسعه دهندگان نرم افزار و سایر پرسنل مربوطه همکاری می کنند. آنها همچنین نرمافزار را پس از انتشار، ایجاد وصلههای نرمافزاری، پیادهسازی بهروزرسانیها و انجام سایر کارهای تعمیر و نگهداری نظارت میکنند.
چرا مهندس نرم افزار شویم؟
در حالی که این شغل به خودی خود امکانات هیجان انگیزی را ارائه می دهد، دلایل مختلفی وجود دارد که چرا حرفه ای ها به مهندس نرم افزار تبدیل می شوند.
کارهای چالش برانگیز
مهندسان نرم افزار اغلب با محصولات پیچیده سر و کار دارند که برای ایجاد، نگهداری و تعمیر نرم افزار به مهارت های حل مسئله پیشرفته نیاز دارند.
یادگیری مادام العمر
رشته مهندسی نرم افزار یک چشم انداز همیشه در حال تغییر است که از آخرین تکنیک ها و فناوری ها استفاده می کند. متخصصان موفق در این نقش مایلند تا در تمام عمر یادگیرنده باشند و مهارت ها و تجربیات جدید را بپذیرند. در نتیجه، مهندسان نرم افزار می توانند در طول حرفه خود درگیر بمانند.
موقعیت های کاری انعطاف پذیر
بسیاری از سازمان ها نیازی به حضور مهندسان نرم افزار در دفتر ندارند. سپس تیمهای مهندسی و توسعه نرمافزار از راه دور میتوانند انعطافپذیری بیشتری از نظر زمانبندیها و محل کارشان به دست آورند.
چشم انداز شغلی امیدوارکننده
انتظار میرود تعداد توسعهدهندگان نرمافزار، تحلیلگران QA و آزمایشکنندگان بین سالهای 2021 تا 2031 به میزان 25 درصد افزایش یابد. با افزایش ارزش نقشهای مشابه، مهندسان نرمافزار مشتاق میتوانند منتظر فرصتهای زیادی برای ورود به صنعت در دهه آینده باشند.
تأثیر اجتماعی
نقشهای مهندسی نرمافزار اغلب به افراد حرفهای فرصتهایی برای انجام کار معنادار میدهد. تقویت پلتفرمهای امنیت سایبری، دفاع از اطلاعات سلامتی بیماران و حفاظت از تراکنشهای مالی، تنها مواردی هستند که مهندسان نرمافزار میتوانند در آنها تأثیر بگذارند.
حقوق مهندس نرم افزار
به طور معمول، مهندسان نرمافزار میتوانند در مراحل مختلف شغلی خود انتظار حقوق شش رقمی داشته باشند. میانگین حقوق پایه برای مهندسان نرم افزار در ایالات متحده 141230 دلار است. زمانی که مهندسان در حرفه خود به سمت مهندسان ارشد نرم افزار تبدیل شوند، این رقم به 150790 دلار افزایش می یابد.
چه مدت طول می کشد تا یک مهندس نرم افزار شوید؟
مهندسان نرم افزار معمولاً مدرک چهار ساله خود را در زمینه های مرتبط مانند مهندسی، تجزیه و تحلیل داده ها و علوم کامپیوتر می گذرانند. بسته به نوع نقش، برخی از مهندسان نیز ممکن است نیاز به دریافت گواهینامه داشته باشند تا نامزدهای واجد شرایط تر شوند. برخی از نقشهای مهندسی نرمافزار در سطح ابتدایی هستند و برای متخصصانی که مستقیماً خارج از کالج هستند در دسترس هستند. با این حال، بسیاری از مهندسان نرم افزار یک سال تجربه قبلی در نقش های سطح پایه مانند متخصص پشتیبانی فنی، مهندس نرم افزار جوان و توسعه دهنده نرم افزار جمع آوری می کنند.
چگونه یک مهندس نرم افزار شویم
- مسیر شغلی خود را برنامه ریزی کنید.
- مدرک فنی یا دوره های مهندسی نرم افزار را دنبال کنید.
- مهارت های کدنویسی خود را تمرین کنید.
- گواهینامه بگیرید.
- نمونه کارها را بسازید که نمونه هایی از مهارت های شما را به نمایش بگذارد.
- برای مشاغل درخواست دهید.
برای ارائه مروری عمیق تر از سفر مهندس نرم افزار، با چهار مهندس نرم افزار که هر کدام از آنها در برخی از بزرگترین شرکت های فناوری تجربه دارند، در مورد چگونگی تقویت مهارت های خود و پیشرفت در صنعت با تغییر سریع صحبت کردیم.
ما با کسیدی ویلیامز از CodePen صحبت کردیم. ویکتور یونسکو، کهنه سرباز فیس بوک و گوگل، که زیرساخت داده و خدمات اصلی را برای Airbnb انجام داد. مکس هاینریتز، مهندس سابق نرم افزار Flexport که قبلا در Google Earth Engine کار می کرد. و سامارا تریلینگ، مهندس نرم افزار سابق Sidewalk Labs، شاخه توسعه شهر هوشمند فوق العاده جاه طلب شرکت مادر آلفابت گوگل.
آیا گواهینامه های برنامه نویسی ارزشش را دارند؟
ویلیامز: بستگی به شرکتی دارد که با آن صحبت می کنید. برخی از شرکتها میگویند: «اوه، خوب، آنها این پروژه جالب را در GitHub انجام دادند و این تنها چیزی است که من باید ببینم،» یا «آنها یک دسته قلم جالب روی CodePen دارند و این تنها چیزی است که باید ببینم». اما برخی از شرکتهایی که میخواهند درباره سوابق تحصیلی شما یا نحوه یادگیری شما بیشتر بدانند، در واقع به مدرک یا نوعی گواهینامه خوب اهمیت میدهند – اگرچه من فکر میکنم که صنعت به سمت بیتوجهی به آن گرایش دارد.
یونسکو: میتوانم به شما بگویم که در صنعت، اگر کسی پروژههای منبع باز زیادی داشته باشد، میتواند به عنوان اعتبارسنجی عمل کند، زیرا اگر افراد زیادی از کد شما استفاده میکنند، باید کار کند، درست است؟ و اگر واقعاً آن را نوشته اید، احتمالاً برنامه نویس بسیار خوبی هستید. اما اگر آن را ندارید، مطمئناً فکر نمیکنم که این یک اشکال باشد.
از آنجایی که بسیاری از افرادی که روی چیزهای پیچیده کار می کنند – مانند، برای مثال، افراد زیرساختی که روی پایگاه داده ها کار می کنند، یا افرادی که در گوگل یا شرکت دیگری کار می کنند که واقعاً فرهنگ منبع باز بزرگی ندارد – فقط وارد شوید و کد خود را آپلود کنید. اما بله، اگر آن را دارید و از آن استفاده می شود، در جامعه برنامه نویسی چیزی می گوید. نمونه کار شما هست این در هر صنعتی خوب است.
هاینریتز: فکر نمیکنم تا به حال به گواهی برنامهنویسی یک نامزد در طول فرآیند استخدام توجه کرده باشم. مخازن GitHub ممکن است از سه طریق مفید باشد: عبور از صفحه اصلی استخدام کننده برای دریافت صفحه نمایش تلفن، داشتن چند پروژه جالب برای صحبت در مورد آنها در طول مصاحبه یا ارائه درخواست خود از طریق موارد مرزی کمیته استخدام.
اولین چیزی که مردم روی آن کمتر سرمایه گذاری می کنند، تمرین مصاحبه کدنویسی است.
Trilling: من فکر میکنم کمک به کار منبع باز و به طور کلی کد آنلاین ارزش زیادی دارد. این به ایجاد اعتماد به نفس کمک می کند و مکانی برای پیگیری یادگیری خود به شما می دهد. اما کارفرمایان می خواهند تجربه حضوری [نمایش] را نیز داشته باشند.
آن مصاحبههای تجربیتر تمایل دارند که ببینند چگونه دیگران با هم همکاری میکنند، چگونه دیدگاهشان را توضیح میدهند، که به نظر من مهمتر از دانستن یا عدم دانستن یک زبان [برنامهنویسی] خاص است. زیرا بسیاری از مردم می توانند به سرعت زبان ها را انتخاب کنند. این واقعاً بیشتر در مورد توانایی شما برای ساختن چیزهای درست، کار با افراد دیگر و همکاری است.
کسب اطلاعات بیشتر: چگونه یک شریک مناسب برای برنامه نویسی انتخاب کنیم
کسب اطلاعات بیشتر: 5 مورد از بهترین شغل های کدنویسی
یک مهندس نرم افزار باید چه مهارت های نرم افزاری داشته باشد؟
ویلیامز: فکر میکنم کمتر به مهارتهای نرم و بیشتر به مهارتهای اصلی مربوط میشود. اگر بتوانید ارتباط برقرار کنید، بتوانید بنویسید – صادقانه بگوییم، ارتباط چیزی است که همه چیز خلاصه می شود. این برای موفقیت در صنعت بسیار کلیدی است. شما باید بتوانید مستندات خوبی بنویسید. شما باید بتوانید نظرات خود را در جلسات بیان کنید. شما باید بتوانید با تیم ارتباط برقرار کنید، به طوری که اگر به هر دلیلی کد خود را ترک کردید یا نیاز به انتشار کد خود داشتید، مردم بتوانند آن را بگیرند و با آن اجرا کنند و کاملاً به دانش قبیله ای وابسته نباشند. این بهترین مهارتی است که باید داشته باشید، و این یک مهارت اصلی است که همه به آن نیاز دارند.
یونسکو: واقعاً سخت است که کارها را به تنهایی انجام دهیم. و به خصوص در شرکتهایی که کمی جوانتر هستند، متوجه شدهام، بهتر است مهارتهای مدیریت برنامه داشته باشید: سازماندهی افراد، تلاش برای به روز نگه داشتن آنها. هر چیزی که از نظر اجرا به تلاش گروهی نیاز دارد، می تواند از هم افزایی بهره مند شود، درست است؟ شما باید با همکاران هم افزایی ایجاد کنید تا همه بدانند که همدیگر روی چه چیزی کار می کنند و تا چه حد در حال پیشرفت هستند.
هاینریتز: ارتباط کتبی تنها مهم ترین مهارت غیر کدنویسی در تجربه من است. ارتباط کلامی نیز مهم است، اما ارتباطات نوشتاری گستردهتر است. نوشتن اسناد طراحی، پستهای وبلاگ، راهنماهای نصب – این مصنوعات اهرم شما را به شدت افزایش میدهند.
تریلینگ: مهارت های نرم، مهارت های مهندسی هستند. من هیچ مهندسی را نمی شناسم که بدون ارتباط خوب موفق باشد. و من مهندسي را نمي شناسم كه اگر ارتباط دهنده بهتري نبود، مهندس بهتري نبود. بنابراین یاد بگیرید که چگونه توضیح دهید و خوب آموزش دهید – نه فقط برای اینکه احساس کنید باهوشتر شوید، بلکه واقعاً به طرف مقابل فرصت یادگیری و پرسیدن سؤالات را بدهید. این راهی است که سازمانهای مهندسی واقعاً بزرگ رشد میکنند.
آیا بوت کمپ کدنویسی ارزشش را دارد؟
ویلیامز: بوت کمپ ها مطمئناً گزینه مناسبی هستند. نمیدانم میتوانم در کنار مدرک فنی موجود بگویم یا نه، زیرا اغلب آنها چیزهایی را آموزش میدهند که ممکن است قبلاً بدانید یا بتوانید خیلی سریعتر یاد بگیرید. اما برای کسی که در حال تغییر شغل است. من می گویم که در انجام یک بوت کمپ، در مدت زمان کوتاهی چیزهای زیادی یاد می گیرید و اطلاعات بسیار خاصی است. اگر آن مسیر را می روید، باید در کلاس حواس تان باشد و تمام پروژه ها را انجام دهید. اما همچنین آماده باشید تا فراتر از بوت کمپ بیشتر بیاموزید، کمی عمیق تر بروید.
یونسکو: فکر میکنم بوت کمپها برای افرادی که آنچه را که لازم است دارند خوب است، اما ممکن است برای افرادی که میتوانند آنچه را که لازم است داشته باشند اما به زمان بیشتری نیاز دارند، شاخص خوبی نباشد.
بنابراین آنها خوب و بد هستند. آیا آنها ارزش پول را دارند؟ مطمئناً، اگر میخواهید از آن شغلی بگیرید، فکر میکنم این نقطه شروع خوبی است. اگر کمی زمان بیشتری دارید، توصیه می کنم آن را آسان بگیرید و شاید یک مدرک علوم کامپیوتر بگیرید. یا سعی کنید در اوقات فراغت خود روی چیزی کار کنید بدون اینکه انتظار درآمدی از آن داشته باشید.
هاینریتز: من فقط می توانم حکایت هایی ارائه کنم. یکی از دوستان دانشگاهی من در رشته اقتصاد تحصیل کرد، در یک شرکت مشاوره مبتنی بر فناوری کار کرد، دو سال پس از فارغ التحصیلی از یک بوت کمپ عبور کرد و در نهایت به عنوان مهندس در گوگل مشغول به کار شد. بنابراین برای او قطعاً ارزشمند بود.
Trilling: درست مانند بسیاری از برنامه های آموزشی دیگر، یک بوت کمپ عالی فوق العاده است و یک بوت کمپ نه چندان عالی چندان مفید نیست.
اما حتی در حرفهام، شاید فقط نیمی از افرادی که با آنها کار کردهام مدرک علوم کامپیوتر داشته باشند. بسیاری از مردم بخش های مختلفی از مهندسی یا فلسفه را مطالعه کردند یا در تاریخ تحصیلات جزئی داشتند. و من فکر میکنم این در واقع باعث میشود که افراد در مجموع مهندسان بسیار بهتری شوند، وقتی که شما چنین دیدگاه نزدیکبینانهای به این رشته ندارید و میدانید که چرا این مهارتها را یاد میگیرید. بنابراین من فکر میکنم که بوت کمپها میتوانند واقعاً ارزشمند باشند، بهخصوص اگر فردی هستید که دوست دارید از نظر اجتماعی بیاموزید، تا مطمئن شوید که گروهی از افراد در کنار شما در حال یادگیری هستند. حتی در گوگل، من فکر میکنم که آنها سختتر کار میکنند تا تشخیص دهند که این همه استعداد فناوری وجود دارد که شبیه کسی نیست که به MIT رفته و مدرک علوم کامپیوتر گرفته است.
چه سوالاتی از یک کارفرمای احتمالی در مصاحبه می پرسید؟
ویلیامز: یک چیزی که من همیشه در مصاحبه ها از کارفرمایان می پرسم این است: “چه چیزی مهم تر است: کارمندان، محصول یا مشتریان؟” هیچ پاسخ اشتباه واقعی وجود ندارد، اما این یک شاخص واقعا خوب از اولویت های شرکت است.
یونسکو: اگر بخواهم همین الان شغلم را عوض کنم، [میخواهم] روی چیزی کار کنم که واقعاً چیزهایی را به من بیاموزد. بنابراین من نمی خواهم در کارم خیلی راحت باشم. من در مورد فرصت ها از نظر رشد می پرسم، زیرا بهترین راه برای یادگیری، به ویژه به عنوان یک مهندس ارشد، ورود به حوزه هایی است که به طور خاص شناخته شده نیستند. بنابراین من در مورد فرصت های رشد و مشکلات باز که شرکت دارد می پرسم.
هاینریتز: ابتدا مشخص میکنم که در جستجوی شغلم برای چه چیزی بهینهسازی میکنم، و سپس سؤالاتی میپرسم که به من کمک میکند ارزیابی کنم که آیا این شرکت میتواند به من کمک کند تا به آنجا برسم. در جدیدترین جستجوی خود، بهینه سازی را برای موارد زیر انجام دادم: رشد، تأثیرگذاری در دنیای واقعی، جریان روزانه، نقش های تمام پشته و چارچوب های منبع باز. بنابراین من سؤالاتی از این قبیل پرسیدم: “من دوست دارم روی نقشه ها کار کنم. با نقشه ها چه کار می کنی؟» “چرا در مورد آینده Flexport هیجان زده اید؟” “دیروز چقدر برای کدنویسی وقت گذاشتی؟” “این هفته از چه ابزارهایی استفاده کرده اید؟” خاص تر بهتر است.
تریلینگ: یک سوال مهم این است که “اگر شرکت شما واقعاً موفق بود، چه کسی سود می برد و چه کسی سود نمی برد؟” این سؤالی است که شاید ما لزوماً پنج سال پیش نمی پرسیدیم و اکنون قطعاً از اهمیت بالایی برخوردار است. و این سوال که اگر کسی بخواهد مدل آزمایشی شما را به حد افراط برساند، چه عواقبی در دنیا برای آن مدل خواهد داشت؟ آیا روشی که ارزش آفرینی می کنید اساساً استخراج کننده است یا اساساً مولد؟
[…] کسب اطلاعات بیشتر: چگونه یک مهندس نرم افزار شویم؟ […]