مهندس نرمافزار
1. سودآوری شغل یک مهندس نرمافزار
2. گام اول: نسبت به انتخاب هدف نهاییتان دقت زیادی به خرج دهید و به آن متعهد باشید
3. گام دوم: زبان موردنظرتان را انتخاب کنید.
3.1. Ruby؛ بهترین زبان
4. گام سوم: تمرین، تمرین و تمرین …
5. گام چهارم: از ابزارهایی استفاده کنید که توسعهدهندگان واقعی استفاده میکنند
6. گام پنجم: کدهای دیگران را بخوانید
7. گام ششم: پیدا کردن یک انجمن فعال در حوزه کسب تخصص مهندس نرمافزار
8. گام هفتم: ساخت پروژه
9. گام هشتم: شبکه حرفهایتان را ارتقا بدهید
10. گام نهم: قبل از مصاحبه کاری، یک مهندس نرمافزار حرفهای شوید
11. گام دهم: مصاحبه شغلی خود را انجام دهید.
12. گام یازدهم: قبول کردن پیشنهاد شغلی به عنوان یک مهندس نرمافزار
در این مقاله به شما میگوییم که چطور میتوانید برخلاف روال معمول، بدون اینکه به دانشگاه بروید یک مهندس نرمافزار بشوید. اگر کارمند یا کارگر ساده هستید، یا اینکه به اجبار مشغول کاری هستید که دوستش ندارید (مثل کارمند بخش اپراتور، کارمند بانک و یا مدیریت). تنها در صورتی میتوانید خود را از این وضعیت نجات دهید و به شغل دلخواهتان (توسعهدهنده نرمافزار) برسید که سخت کار کنید.
سودآوری شغل یک مهندس نرمافزار
اغلب پروژههای «Bureau of Labor Statistics» که در سالهای ۲۰۱۴ تا ۲۰۲۴ انجام میشوند، با نرخ رشد ۱۷% رشد خواهند کرد، که درنهایت منجر به ایجاد ۱۸۶,۶۰۰ فرصت شغلی میشود. این در حالی است که نرخ رشد مشاغل دیگر رقمی برابر با ۷ درصد است. باوجود تمام دیدگاههای مثبت و فرصتهای شغلی فراوان تنها ۲ درصد از دانشآموزان در رشتههای علوم کامپیوتری درس میخوانند.
مهارتهای برنامهنویسی میتوانند همگام با امنیت مالی و شغلی برای شما، انعطافپذیری روزافزون را هم به ارمغان آورند. اما احتمالاً از خودتان میپرسید: «چگونه؟ چطور میتوان بدون حضور در کلاس و گذراندن دروس دانشگاهی همه این مهارتها را یاد گرفت؟ و مهمتر از همه چطور میتوان دریکی از آنها متخصص شد و بهطور مستقل کار کرد؟»
شما با یادگرفتن این ۱۱ مرحله میتوانید بدون گذراندن دورهها و کلاسهای طاقتفرسا و وقتگیر دانشگاهی به یک مهندس نرمافزار تبدیل بشوید. پس تا انتهای این ۱۱ مرحله همراه ما باشید.
گام اول: نسبت به انتخاب هدف نهاییتان دقت زیادی به خرج دهید و به آن متعهد باشید
قبل از شروع کار، لازم است بدانید که این مراحل برای کسانی گفته شده است که هدفشان از رسیدن به تخصص مهندسی نرمافزار شروع یک کار تماموقت است. نه کسانی که:
برای اولین بار کد نویسی میکنند.
مطمئن نیستند که میخواهند برنامهنویس شوند.
میخواهند متخصص طراحی وب، UI و UX یا دیگر زمینههای مربوط به طراحی بشوند.
میخواهند بهطور پارهوقت و آزادانه کار کنند.
میخواهند کسبوکار مخصوص خودشان را راه بیندازند.
تغییر شغل کار آسانی نیست. اما وقتیکه تصمیم نهاییتان را بگیرید و با تمرکز بر هدفتان در مسیرش شروع به حرکت کنید، هدف و مقصدی به شفافی زیر خواهید داشت:
«میخواهم بهعنوان یک توسعهدهنده نرمافزار در یک شرکت معتبر فنآوری کار کنم»
«میخواهم بهعنوان یک مهندس نرمافزار در یک تیم استارتآپی مشغول راهاندازی برندی جدید باشم. من عاشق صنعت هستم»
«میخواهم به همراه یک تیم خوب، محصولاتی تولید کنم و از آن پول خوبی به جیب بزنم»
فرقی ندارد که هدف شما کدامیک از این سه مورد است. درهرصورت وقتی پا در این راه گذاشتید باید بهعنوان یک مهندس نرمافزار عاشقانه کار کنید، و به کارتان متعهد باشید.
گام دوم: زبان موردنظرتان را انتخاب کنید.
مهندس نرمافزار
زمان شروع باید تصمیم خودتان را بگیرید و زبان موردنظرتان را انتخاب کنید. Ruby on Rails، Python ، Django ، MEAN stack. وقتی یک زبان خاص را بهصورت تخصصی و حرفهای یاد بگیرید. یادگرفتن زبان برنامهنویسی بعدی اصلاً کار سختی نیست. با این کار بعداز اینکه به یک مهندس نرمافزار تبدیل شدید، تنها باید تبحر خودتان را در اصول برنامهنویسی افزایش دهید، درواقع یاد میگیرید که چگونه یاد بگیرید! وقتی پایه یادگیریتان خوب بنا شده باشد، بهراحتی میتوانید فریمورکها، زبانهای برنامهنویسی و تکنولوژیهای جدید را هم بیاموزید. یکی از بنیانگذاران Flatiron School Avi Flombaum دراینباره میگوید:
«مهمترین بخش کار این است که یاد بگیرید چطور بهعنوان یک توسعهدهنده بیندیشید»
همه حرفی که در این جمله وجود دارد این است که برای شروع روی یک چارچوب و زبان خاص تمرکز کنید.
Ruby؛ بهترین زبان
احتمالاً باوجود زبانهای برنامهنویسی مختلف کمی در انتخاب زبان موردنظرتان گیج شدهاید. برای رهایی از این گیجی و گرفتن تصمیم نهایی چارهای جز این نیست که زمان کوتاهی را صرف شناخت زبانهای برنامهنویسی مختلف بکنیم. برای این کار میتوانید از همینجا شروع کنید:
بسیاری از افراد معتقدند که Ruby بهترین زبان برنامهنویسی برای شروع این مسیر است. چرا که Ruby بسیار کارآمد و قابلخواندن است، که این ویژگیها Ruby را راحتتر از بقیه زبانها مینماید. از طرفی منبع باز بودن این زبان، دسترسی شما را به ابزارها و انجمنهای توسعهدهندگان دیگر، بهطور رایگان دوچندان میکند و بهبود میبخشد. شاید مهمترین ویژگی این زبان انعطافپذیری بالای آن باشد. برای اثبات این مسئله باید بگویم که شرکتهای زیادی (Airbnb، GitHub، Hulu، Kickstarter، و غیره) از این زبان استفاده میکنند، و همین باعث میشود که برای رفتن به زبانهای دیگر با مشکل خاصی مواجه نشوید.
گام سوم: تمرین، تمرین و تمرین …
مهندس نرمافزار
هنگامیکه در حال یادگیری هستید، تنها مسئله مهم این است که زبان یا مهارت موردنظرتان را در حین کار یاد بگیرید. به این معنا که هرروز و هر هفته زمان خاصی را برای تمرین و یادگیری تعیین کنید و در آن زمان تنها به یادگیری مهارت جدیدتان بپردازید. تابهحال هیچکس با ۱۰ ساعت تمرین، مهندس نرمافزار نشده است. درواقع رسیدن به این تخصص بدون صرف زمان و تمرین و تکرار هرروزه غیرممکن است.
برخی از افراد معتقدند که برای اینکه یک مهندس نرمافزار بشوید باید چیزی حدود ۱۰,۰۰۰ ساعت تمرین کنید! اما ما به شما میگوییم که نیازی بهصرف ۱۰,۰۰۰ ساعت زمان برای تمرین نیست. فقط باید کارتان را جدی بگیرید و زمان خاصی را برای تمرین کردن تعیین کنید. برای مثال «Flatiron School’s Full Stack Web Development» برنامه درسیاش را در ۶۰۰ الی ۸۰۰ ساعت گنجانده است. اما اکثر دانشآموزان بسته به برنامه و تعداد ساعاتی که در هفته به تمرین و کار مشغول میشوند، بعد از چهار الی ۱۰ ماه به مهارت کافی میرسند.
گام چهارم: از ابزارهایی استفاده کنید که توسعهدهندگان واقعی استفاده میکنند
باوجود اینکه منابع رایگانی مثل Codecademy در دسترس هستند، اما هنگام استفاده از آنها نمیتوانید حس کار در محیط و دنیای واقعی را تجربه کنید. هرچند با استفاده از این منابع میتوانید با تایپ در مرورگر وب در مسابقهها یا فعالیتهای مشابه دیگر فعالیت کنید و امتیاز کسب کنید. ولی واقعیت این است که در دنیای واقعی و زمان کار، هرگز بهقصد مسابقه و فعالیتهای تعاملی دیگر نیستید و تنها بهقصد انجام یک کار مهندسی و تحویل یک پروژه بدون نقص کار میکنید. در آن وضعیت تنها با ابزارهای واقعی کار خواهید کرد.
کمترین سود این کار تسلط هرچه بیشتر شما به محیط واقعی و درنهایت سهولت پیوستن به یک تیم است. دشواری شروع کار با این محیطها موضوع عجیبی نیست و برای همه تازهکارها اتفاق میافتد. پس صبور باشید. برنامههایی وجود دارد که نحوه استفاده از این ابزارها را به شما آموزش میدهد. مثل: Flatiron School’s online program، LearnVerified.
مهندس نرمافزار
برنامه آموزشی LearnVerified ابزارها و پردازندههایی ساخته است، درست شبیه نمونههای واقعی که مهندسان از آنها استفاده میکنند:
Git and GitHub
Working in your terminal
Testdriven development
Group projects/collaboration
با استفاده از این ابزار میتوانید با سرعت خیلی زیادی، حتی بیشتر از زمانی که در حال کار بهعنوان شغل واقعیتان هستید، کار کنید.
گام پنجم: کدهای دیگران را بخوانید
یکی دیگر از اصول مهم برای تبدیلشدن به یک مهندس نرمافزار، یادگیری خواندن کدهای دیگران است. برای انجام این کار میتوانید از مخازن GitHub استفاده کنید، و به دنبال مستندسازی بگردید. گاهی اوقات ممکن است مستندسازی اشتباه انجام شود. اما کد منبع هیچوقت اشتباه نیست! با یادگیری خواندن کدها میتوانید بفهمید که یک برنامه چگونه شکلگرفته و کار میکند. یکی از علل اهمیت این مهارت این است که به شما کمک میکند کدها را بهتر شناخته و آنها را اشکالزدایی کنید.
بااینکه این مهارت اغلب اوقات نادیده گرفته میشود، اما در واقعیت به شما کمک خواهد کرد، که بتوانید بفهمید توسعهدهندگان واقعی چطور کار میکنند. اینکه فقط بتوانید کد بزنید کافی نیست. باید تا عمق کار بروید. اصول صحیح کار را یاد بگیرید و درنهایت کدها را از نو بنویسید. با استفاده از این روش میتوانید یک برنامه را مهندسی معکوس کنید و بفهمید که چطور، برنامهای بهتر از آن را بنویسید.
گام ششم: پیدا کردن یک انجمن فعال در حوزه کسب تخصص مهندس نرمافزار
مهندس نرمافزار
پیدا کردن یک انجمن تخصصی در حوزه فعالیت و مهارت شما، میتواند تضمینی بر موفقیت شما باشد. بهخصوص اگر تازهکار هستید. وقتیکه در محیطی قرار میگیرید که همه افراد آن دارای فکر، تمرکز و دغدغه یکسانی هستند، بهطور ناخودآگاه تحت پشتیبانی یک سیستم خودکار قرار میگیرید، که میتوانند به شما در حل مشکلات کمک کنند. مهمتر از آن انگیزهتان برای ادامه مسیر چندین برابر خواهد شد.
گروههای زیادی در دنیای واقعی هستند که میتوانند مفید واقع شوند. اما بزرگترین مشکلشان این است که هماهنگیها و دسترسی به افراد گروه در این مورد کمی مشکل است. اما برای حل این مشکل میتوان از انجمنهای آنلاین استفاده کرد، که به همان اندازه مفید هستند و همیشه و در همه حال هم قابلدسترسی هستند.
اگر در حال یادگیری با LearnVerified باشید، به گروه Slack دسترسی خواهید داشت. این گروه امکان چت ویدئویی و استفاده از کانال خصوصی Slack را در راستای آموزش بهتر به دانشآموزان میدهد. همچنین دانشآموزان میتوانند با همردههای خودشان گروههای مطالعه آنلاین بسازند. شما در هر سطحی که باشید میتوانید در این انجمنها فعالیت کنید. همین باعث شده است که بیش از ۴۰ درصد سؤالات دانشآموزان توسط دانشآموزان دیگر پاسخ داده شود. بااینحال در دل این گروهها گروههای دیگری هم هستند، که میتوانند مشکلگشای مشکلات شما باشند.
گام هفتم: ساخت پروژه
مطالعه فایلهای آموزشی و تماشای ویدئو مفید هستند، اما بهتنهایی کفایت نمیکنند. شما باید از مهارتتان استفاده کنید، و درست مثل توسعهدهندگان واقعی مشکلات پیشآمده در طی مسیر را حل کنید. با این کار نه تنها به یادگیریتان کمک میکنید، بلکه به کارفرمایان ثابت میکنید که توانایی انجام کار رادارید. این میتواند شما را در رسیدن به هدف نهایی که همان کسبوکار است یاری کند. میتوانید بهصورت فردی و یا گروهی روی پروژهها کار کنید.
گام هشتم: شبکه حرفهایتان را ارتقا بدهید
مهندس نرمافزار
همزمان بااینکه در حال یادگیری کدنویسی، ساخت پروژه و … هستید. باید بهطور جدی و تدریجی شبکه حرفهایتان را نیز گسترش دهید. چراکه جستجوی شغل به روشهای معمول سنتی نسبت به جستجوی آنلاین زمان بیشتری را از شما میگیرد. که این روزها با وجود تکنولوژی و فضای مجازی، اتلاف وقت حساب میشود. بهجای صرف زمان برای پیدا کردن کار، باید شبکه حرفهایتان را گسترش دهید که به همین منظور باید بر روابطی که دارید تکیه کرده و آنها را گسترش دهید. بر اساس گفتهی «Jobvite» فقط 40 درصد از نیروهای جدید از طریق روشهای معمول استخدام میشوند.
بعد از شبکه درجه اول، باید به سراغ شبکه دوم (دوستان دوستانتان) بروید. هدف از ایجاد روابط و شبکه دوم برقراری روابط و دیدارهای غیررسمی با شرکتهایی است که نیازمند نیروی کار هستند است. با این امید که یکی از این روابط به یک مصاحبه شغلی واقعی تبدیل بشود.
مهندس نرمافزار
روشهایی برای ایجاد روابط جدید بدون داشتن دوستان مشترک:
رفتن به ملاقاتها و همایشها
داشتن یک وبلاگ (که شما را در معرض دید قرار میدهد)
همکاری داوطلبانه و اعلام آمادگی برای شغلهای تازه
صحبت در رویدادها و مجامع مختلف
اگر با جامعه در ارتباط باشید و روابط خودتان را از روشهای مختلف بهبود ببخشید، بدون تلاش زیادی، فرصتهای شغلی جدیدی برای شما پیش خواهد آمد.
گام نهم: قبل از مصاحبه کاری، یک مهندس نرمافزار حرفهای شوید
بعد از شروع ساخت شبکه و روابط حرفهای باید به فکر آمادهسازی خودتان برای شغل جدید باشید. قبل از ارسال برنامههایی که ساختهاید و همینطور ارسال درخواست برای مصاحبه باید ۳ مورد را در نظر داشته باشید:
رزومه
نامههای پوششی
حضور آنلاین
رزومهها حتی در دنیای مدرن امروزی هم لازم و ضروری هستند. مدیران، هنوز هم رزومه را به هر چیز دیگری ترجیح میدهند چراکه با یک نگاه میتوانند اطلاعات کافی راجع به مهارتها و تجربههای شما را بهدست بیاورند. اینها موارد اساسی در صنعت هستند. با این حال در این میان حضور آنلاین شما مهمتر از نامههای پوشی و رزومه است. برای کسی که درزمینه فناوری و صنایع مربوطه، مشغول بهکار است حضور آنلاین مهمترین وجه کارش بهحساب میآید. کاری که بهمرورزمان باید انجام بدهید. محدودههای دیجیتالی شما از این لحاظ حائز اهمیت است که مدیران قبل از دعوت از شما برای مصاحبه، میتوانند اسمتان را در گوگل ببینند.
حضور آنلاین شما بهعنوان یک توسعهدهنده و مهندس نرمافزار شامل موارد زیر است:
پروفایل LinkedIn
GitHub
توییتر
وبسایت شخصی (یا سایت نمونه کارها)
وبلاگ نویسی (میتواند علاوه بر سایت شخصی وجود داشته باشد.)
مدیران همه این موارد را بررسی میکنند و با توجه به مشاهدات شمارا تصور میکنند. پس مطمئن شوید که همه این تصورات خوب خواهد بود.
گام دهم: مصاحبه شغلی خود را انجام دهید.
در آخر به یک مصاحبه شغلی میرسید. اغلب شرکتها اولین مصاحبه را بهصورت آنلاین و در خانه برگزار میکنند. بعدازاین غربالگری یک مصاحبه تلفنی انجام میدهند. اگر در این دو مصاحبه موفق شوید که نظر مدیران شرکت را به خود جلب کنید، میتوانید در مرحله مصاحبه حضوری شرکت کنید. علاوه بر سؤالات استاندارد مصاحبه (بزرگترین نقاط قوت و نقاط ضعف)، باید برای سؤالات تخصصی فنی و رفتاری هم آماده باشید. ممکن است از شما بخواهند یک پروژه یا کار را با به چالش کشیدن یک کد حل کنید، یا اینکه بپرسند قبلاً چگونه این مشکل را حل کردهاید.
گام یازدهم: قبول کردن پیشنهاد شغلی به عنوان یک مهندس نرمافزار
بعد از شرکت در مصاحبهها و اثبات توانمندیتان به کارفرماها فقط یک نکته دیگر باقی میماند که باید رعایت کنید، و بعدازآن پیشنهاد کاریتان را بپذیرید. شاید حس کنید که تازهکار هستید ولی بالاخره باید از یک جایی شروع کنید، و سپس به رشد و یادگیری ادامه دهید که درنهایت به یک توسعهدهنده حرفهای تبدیل بشوید.
مهندس نرمافزار
کار آسانی نیست، و احتمالاً مواقع زیادی پیش خواهد آمد که از ادامه مسیر ناامید میشوید. اما باید به خودتان و توانمندیهایتان ایمان داشته باشید. افراد زیادی هستند که فقط با تمرین و ممارست در کار توانستهاند به یک توسعهدهنده حرفهای نرمافزار تبدیل بشوند. بسیاری از افراد معتقدند که خودآموزی، کار یادگیری را سختتر میکند. هرچند با این کار میزان مهارتها و تسلط افراد بر کار و همینطور توانایی یافتن شغل جدید راحتتر میشود.