برنامه نویس و مهندس نرم افزار



در این مقاله به شما می‌گوییم که چطور می‌توانید برخلاف روال معمول، بدون این‌که به دانشگاه بروید یک مهندس نرم‌افزار بشوید. اگر کارمند یا کارگر ساده هستید، یا اینکه به اجبار مشغول کاری هستید که دوستش ندارید (مثل کارمند بخش اپراتور، کارمند بانک و یا مدیریت). تنها در صورتی می‌توانید خود را از این وضعیت نجات دهید و به شغل دلخواهتان (توسعه‌دهنده نرم‌افزار) برسید که سخت کار کنید.

سودآوری شغل یک مهندس نرم‌افزار

اغلب پروژه‌های Bureau of Labor Statistics» که در سال‌های ۲۰۱۴ تا ۲۰۲۴ انجام می‌شوند، با نرخ رشد ۱۷% رشد خواهند کرد، که درنهایت منجر به ایجاد ۱۸۶,۶۰۰ فرصت شغلی می‌شود. این در حالی است که نرخ رشد مشاغل دیگر رقمی برابر با ۷ درصد است. باوجود تمام دیدگاه‌های مثبت و فرصت‌های شغلی فراوان تنها ۲ درصد از دانش‌آموزان در رشته‌های علوم کامپیوتری درس می‌خوانند.

مهارت‌های برنامه‌نویسی می‌توانند همگام با امنیت مالی و شغلی برای شما، انعطاف‌پذیری روزافزون را هم به ارمغان آورند. اما احتمالاً از خودتان می‌پرسید: چگونه؟ چطور می‌توان بدون حضور در کلاس و گذراندن دروس دانشگاهی همه این مهارت‌ها را یاد گرفت؟ و مهم‌تر از همه چطور می‌توان دریکی از آن‌ها متخصص شد و به‌طور مستقل کار کرد؟»

شما با یادگرفتن این ۱۱ مرحله می‌توانید بدون گذراندن دوره‌ها و کلاس‌های طاقت‌فرسا و وقت‌گیر دانشگاهی به یک مهندس نرم‌افزار تبدیل بشوید. پس تا انتهای این ۱۱ مرحله همراه ما باشید.

گام اول: نسبت به انتخاب هدف نهایی‌تان دقت زیادی به خرج دهید و به آن متعهد باشید

قبل از شروع کار، لازم است بدانید که این مراحل برای کسانی گفته شده است که هدفشان از رسیدن به تخصص مهندسی نرم‌افزار شروع یک کار تمام‌وقت است. نه کسانی که:

  • برای اولین بار کد نویسی می‌کنند.
  • مطمئن نیستند که می‌خواهند برنامه‌نویس شوند.
  • می‌خواهند متخصص طراحی وب، UI و UX یا دیگر زمینه‌های مربوط به طراحی بشوند.
  • می‌خواهند به‌طور پاره‌وقت و آزادانه کار کنند.
  • می‌خواهند کسب‌وکار مخصوص خودشان را راه بیندازند.

تغییر شغل کار آسانی نیست. اما وقتی‌که تصمیم نهایی‌تان را بگیرید و با تمرکز بر هدفتان در مسیرش شروع به حرکت کنید، هدف و مقصدی به شفافی زیر خواهید داشت:

  • می‌خواهم به‌عنوان یک توسعه‌دهنده نرم‌افزار در یک شرکت معتبر فن‌آوری کار کنم»
  • می‌خواهم به‌عنوان یک مهندس نرم‌افزار در یک تیم استارت‌آپی مشغول راه‌اندازی برندی جدید باشم. من عاشق صنعت هستم»
  • می‌خواهم به همراه یک تیم خوب، محصولاتی تولید کنم و از آن پول خوبی به جیب بزنم»

فرقی ندارد که هدف شما کدام‌یک از این سه مورد است. درهرصورت وقتی پا در این راه گذاشتید باید به‌عنوان یک مهندس نرم‌افزار عاشقانه کار کنید، و به کارتان متعهد باشید.

گام دوم: زبان موردنظرتان را انتخاب کنید.

زمان شروع باید تصمیم خودتان را بگیرید و زبان موردنظرتان را انتخاب کنید. Ruby on Rails، Python ، Django ، MEAN stack. وقتی یک زبان خاص را به‌صورت تخصصی و حرفه‌ای یاد بگیرید. یادگرفتن زبان برنامه‌نویسی بعدی اصلاً کار سختی نیست. با این کار بعداز این‌که به یک مهندس نرم‌افزار تبدیل شدید، تنها باید تبحر خودتان را در اصول برنامه‌نویسی افزایش دهید، درواقع یاد می‌گیرید که چگونه یاد بگیرید! وقتی پایه یادگیری‌تان خوب بنا شده باشد، به‌راحتی می‌توانید فریم‌ورک‌ها، زبان‌های برنامه‌نویسی و تکنولوژی‌های جدید را هم بیاموزید. یکی از بنیان‌گذاران Flatiron School Avi Flombaum دراین‌باره می‌گوید:

مهم‌ترین بخش کار این است که یاد بگیرید چطور به‌عنوان یک توسعه‌دهنده بیندیشید»

همه حرفی که در این جمله وجود دارد این است که برای شروع روی یک چارچوب و زبان خاص تمرکز کنید.

گام سوم: تمرین، تمرین و تمرین …

هنگامی‌که در حال یادگیری هستید، تنها مسئله مهم این است که زبان یا مهارت موردنظرتان را در حین کار یاد بگیرید. به این معنا که هرروز و هر هفته زمان خاصی را برای تمرین و یادگیری تعیین کنید و در آن زمان تنها به یادگیری مهارت جدیدتان بپردازید. تابه‌حال هیچ‌کس با ۱۰ ساعت تمرین، مهندس نرم‌افزار نشده است. درواقع رسیدن به این تخصص بدون صرف زمان و تمرین و تکرار هرروزه غیرممکن است.

برخی از افراد معتقدند که برای اینکه یک مهندس نرم‌افزار بشوید باید چیزی حدود ۱۰,۰۰۰ ساعت تمرین کنید! اما ما به شما می‌گوییم که نیازی به‌صرف ۱۰,۰۰۰ ساعت زمان برای تمرین نیست. فقط باید کارتان را جدی بگیرید و زمان خاصی را برای تمرین کردن تعیین کنید. برای مثال Flatiron School’s Full Stack Web Development» برنامه درسی‌اش را در ۶۰۰ الی ۸۰۰ ساعت گنجانده است. اما اکثر دانش‌آموزان بسته به برنامه و تعداد ساعاتی که در هفته به تمرین و کار مشغول می‌شوند، بعد از چهار الی ۱۰ ماه به مهارت کافی می‌رسند.

گام چهارم: از ابزارهایی استفاده کنید که توسعه‌دهندگان واقعی استفاده می‌کنند

باوجود این‌که منابع رایگانی مثل Codecademy در دسترس هستند، اما هنگام استفاده از آن‌ها نمی‌توانید حس کار در محیط و دنیای واقعی را تجربه کنید. هرچند با استفاده از این منابع می‌توانید با تایپ در مرورگر وب در مسابقه‌ها یا فعالیت‌های مشابه دیگر فعالیت کنید و امتیاز کسب کنید. ولی واقعیت این است که در دنیای واقعی و زمان کار، هرگز به‌قصد مسابقه و فعالیت‌های تعاملی دیگر نیستید و تنها به‌قصد انجام یک کار مهندسی و تحویل یک پروژه بدون نقص کار می‌کنید. در آن وضعیت تنها با ابزارهای واقعی کار خواهید کرد.

کمترین سود این کار تسلط هرچه بیشتر شما به محیط واقعی و درنهایت سهولت پیوستن به یک تیم است. دشواری شروع کار با این محیط‌ها موضوع عجیبی نیست و برای همه تازه‌کارها اتفاق می‌افتد. پس صبور باشید. برنامه‌هایی وجود دارد که نحوه استفاده از این ابزارها را به شما آموزش می‌دهد. مثل: Flatiron School’s online program، Learn‌Verified.

برنامه آموزشی Learn‌Verified ابزارها و پردازنده‌هایی ساخته است، درست شبیه نمونه‌های واقعی که مهندسان از آن‌ها استفاده می‌کنند:

  • Git and GitHub
  • Working in your terminal
  • Test‌driven development
  • Group projects/collaboration

با استفاده از این ابزار می‌توانید با سرعت خیلی زیادی، حتی بیشتر از زمانی که در حال کار به‌عنوان شغل واقعی‌تان هستید، کار کنید.

گام پنجم: کدهای دیگران را بخوانید

یکی دیگر از اصول مهم برای تبدیل‌شدن به یک مهندس نرم‌افزار، یادگیری خواندن کدهای دیگران است. برای انجام این کار می‌توانید از مخازن GitHub استفاده کنید، و به دنبال مستندسازی بگردید. گاهی اوقات ممکن است مستندسازی اشتباه انجام شود. اما کد منبع هیچ‌وقت اشتباه نیست! با یادگیری خواندن کدها می‌توانید بفهمید که یک برنامه چگونه شکل‌گرفته و کار می‌کند. یکی از علل اهمیت این مهارت این است که به شما کمک می‌کند کدها را بهتر شناخته و آن‌ها را اشکال‌زدایی کنید.

بااینکه این مهارت اغلب اوقات نادیده گرفته می‌شود، اما در واقعیت به شما کمک خواهد کرد، که بتوانید بفهمید توسعه‌دهندگان واقعی چطور کار می‌کنند. این‌که فقط بتوانید کد بزنید کافی نیست. باید تا عمق کار بروید. اصول صحیح کار را یاد بگیرید و درنهایت کدها را از نو بنویسید. با استفاده از این روش می‌توانید یک برنامه را مهندسی مع کنید و بفهمید که چطور، برنامه‌ای بهتر از آن را بنویسید.

گام ششم: پیدا کردن یک انجمن فعال در حوزه کسب تخصص مهندس نرم‌افزار

پیدا کردن یک انجمن تخصصی در حوزه فعالیت و مهارت شما، می‌تواند تضمینی بر موفقیت شما باشد. به‌خصوص اگر تازه‌کار هستید. وقتی‌که در محیطی قرار می‌گیرید که همه افراد آن دارای فکر، تمرکز و دغدغه یکسانی هستند، به‌طور ناخودآگاه تحت پشتیبانی یک سیستم خودکار قرار می‌گیرید، که می‌توانند به شما در حل مشکلات کمک کنند. مهم‌تر از آن انگیزه‌تان برای ادامه مسیر چندین برابر خواهد شد.

گروه‌های زیادی در دنیای واقعی هستند که می‌توانند مفید واقع شوند. اما بزرگ‌ترین مشکل‌شان این است که هماهنگی‌ها و دسترسی به افراد گروه در این مورد کمی مشکل است. اما برای حل این مشکل می‌توان از انجمن‌های آنلاین استفاده کرد، که به همان اندازه مفید هستند و همیشه و در همه حال هم قابل‌دسترسی هستند.

اگر در حال یادگیری با Learn‌Verified باشید، به گروه Slack دسترسی خواهید داشت. این گروه امکان چت ویدئویی و استفاده از کانال خصوصی Slack را در راستای آموزش بهتر به دانش‌آموزان می‌دهد. همچنین دانش‌آموزان می‌توانند با هم‌رده‌های خودشان گروه‌های مطالعه آنلاین بسازند. شما در هر سطحی که باشید می‌توانید در این انجمن‌ها فعالیت کنید. همین باعث شده است که بیش از ۴۰ درصد سؤالات دانش‌آموزان توسط دانش‌آموزان دیگر پاسخ داده شود. بااین‌حال در دل این گروه‌ها گروه‌های دیگری هم هستند، که می‌توانند مشکل‌گشای مشکلات‌ شما باشند.

گام هفتم: ساخت پروژه

مطالعه فایل‌های آموزشی و تماشای ویدئو مفید هستند، اما به‌تنهایی کفایت نمی‌کنند. شما باید از مهارت‌تان استفاده کنید، و درست مثل توسعه‌دهندگان واقعی مشکلات پیش‌آمده در طی مسیر را حل کنید. با این کار نه تنها به یادگیری‌تان کمک می‌کنید، بلکه به کارفرمایان ثابت می‌کنید که توانایی انجام کار رادارید. این می‌تواند شما را در رسیدن به هدف نهایی که همان کسب‌وکار است یاری کند. می‌توانید به‌صورت فردی و یا گروهی روی پروژه‌ها کار کنید.

گام هشتم: شبکه حرفه‌ای‌تان را ارتقا بدهید

هم‌زمان بااینکه در حال یادگیری کد‌نویسی، ساخت پروژه و … هستید. باید به‌طور جدی و تدریجی شبکه حرفه‌ای‌تان را نیز گسترش دهید. چراکه جستجوی شغل به روش‌های معمول سنتی نسبت به جستجوی آنلاین زمان بیشتری را از شما می‌گیرد. که این روزها با وجود تکنولوژی و فضای مجازی، اتلاف وقت حساب می‌شود. به‌جای صرف زمان برای پیدا کردن کار، باید شبکه حرفه‌ای‌تان را گسترش دهید که به همین منظور باید بر روابطی که دارید تکیه کرده و آن‌ها را گسترش دهید. بر اساس گفته‌ی Jobvite» فقط 40 درصد از نیروهای جدید از طریق روش‌های معمول استخدام می‌شوند.

بعد از شبکه درجه اول، باید به سراغ شبکه دوم (دوستان دوستانتان) بروید. هدف از ایجاد روابط و شبکه دوم برقراری روابط و دیدارهای غیررسمی با شرکت‌هایی است که نیازمند نیروی کار هستند است. با این امید که یکی از این روابط به یک مصاحبه شغلی واقعی تبدیل بشود.

روش‌هایی برای ایجاد روابط جدید بدون داشتن دوستان مشترک:

  • رفتن به ملاقات‌ها و همایش‌ها
  • داشتن یک وبلاگ (که شما را در معرض دید قرار می‌دهد)
  • همکاری داوطلبانه و اعلام آمادگی برای شغل‌های تازه
  • صحبت در رویدادها و مجامع مختلف

اگر با جامعه در ارتباط باشید و روابط‌ خودتان را از روش‌های مختلف بهبود ببخشید، بدون تلاش زیادی، فرصت‌های شغلی جدیدی برای شما پیش خواهد آمد.

گام نهم: قبل از مصاحبه کاری، یک مهندس نرم‌افزار حرفه‌ای شوید

بعد از شروع ساخت شبکه و روابط حرفه‌ای باید به فکر آماده‌سازی خودتان برای شغل جدید باشید. قبل از ارسال برنامه‌هایی که ساخته‌اید و همین‌طور ارسال درخواست برای مصاحبه باید ۳ مورد را در نظر داشته باشید:

  • رزومه
  • نامه‌های پوششی
  • حضور آنلاین

رزومه‌ها حتی در دنیای مدرن امروزی هم لازم و ضروری‌ هستند. مدیران، هنوز هم رزومه را به هر چیز دیگری ترجیح می‌دهند چراکه با یک نگاه می‌توانند اطلاعات کافی راجع به مهارت‌ها و تجربه‌های شما را به‌دست بیاورند. این‌ها موارد اساسی در صنعت هستند. با این حال در این میان حضور آنلاین شما مهم‌تر از نامه‌های پوشی و رزومه است. برای کسی که درزمینه فناوری و صنایع مربوطه، مشغول به‌کار است حضور آنلاین مهم‌ترین وجه کارش به‌حساب می‌آید. کاری که به‌مرورزمان باید انجام بدهید. محدوده‌های دیجیتالی شما از این لحاظ حائز اهمیت است که مدیران قبل از دعوت از شما برای مصاحبه، می‌توانند اسم‌تان را در گوگل ببینند.

حضور آنلاین شما به‌عنوان یک توسعه‌دهنده و مهندس نرم‌افزار شامل موارد زیر است:

  • پروفایل LinkedIn
  • GitHub
  • توییتر
  • وب‌سایت شخصی (یا سایت نمونه کارها)
  • وبلاگ نویسی (می‌تواند علاوه بر سایت شخصی وجود داشته باشد.)

مدیران همه این موارد را بررسی می‌کنند و با توجه به مشاهدات‌ شمارا تصور می‌کنند. پس مطمئن شوید که همه این تصورات خوب خواهد بود.

گام دهم: مصاحبه شغلی خود را انجام دهید.

در آخر به یک مصاحبه شغلی می‌رسید. اغلب شرکت‌ها اولین مصاحبه را به‌صورت آنلاین و در خانه برگزار می‌کنند. بعدازاین غربال‌گری یک مصاحبه تلفنی انجام می‌دهند. اگر در این دو مصاحبه موفق شوید که نظر مدیران شرکت را به خود جلب کنید، می‌توانید در مرحله مصاحبه حضوری شرکت کنید.  علاوه بر سؤالات استاندارد مصاحبه (بزرگ‌ترین نقاط قوت و نقاط ضعف)، باید برای سؤالات تخصصی فنی و رفتاری هم آماده باشید. ممکن است از شما بخواهند یک پروژه یا کار را با به چالش کشیدن یک کد حل کنید، یا اینکه بپرسند قبلاً چگونه این مشکل را حل کرده‌اید.

 

گام یازدهم: قبول کردن پیشنهاد شغلی به عنوان یک مهندس نرم‌افزار

بعد از شرکت در مصاحبه‌ها و اثبات توانمندی‌تان به کارفرماها فقط یک نکته دیگر باقی می‌ماند که باید رعایت کنید، و بعدازآن پیشنهاد کاری‌تان را بپذیرید. شاید حس کنید که تازه‌کار هستید ولی بالاخره باید از یک جایی شروع کنید، و سپس به رشد و یادگیری ادامه دهید که درنهایت به یک توسعه‌دهنده حرفه‌ای تبدیل بشوید.

 

 

کار آسانی نیست، و احتمالاً مواقع زیادی پیش خواهد آمد که از ادامه مسیر ناامید می‌شوید. اما باید به خودتان و توانمندی‌هایتان ایمان داشته باشید. افراد زیادی هستند که فقط با تمرین و ممارست در کار توانسته‌اند به یک توسعه‌دهنده حرفه‌ای نرم‌افزار تبدیل بشوند. بسیاری از افراد معتقدند که خودآموزی، کار یادگیری را سخت‌تر می‌کند. هرچند با این کار میزان مهارت‌ها و تسلط افراد بر کار و همین‌طور توانایی یافتن شغل جدید راحت‌تر می‌شود.


مهندسی نرم‌افزار (Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرم‌افزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشین‌های واقعی به‌طور کارآمدی عمل کند.

مهندسی نرم‌افزار عبارت است از کاربرد مهندسی برای طراحی نرم‌افزار، توسعه، پیاده‌سازی و نگهداری از نرم‌افزار در یک روش سیستماتیک.

نرم‌افزار عموماً از محصولات و موقعیت‌هایی شناخته می‌شود که قابلیت اطمینان زیادی از آن انتظار می‌رود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاه‌های انرژی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده‌ترین ماشین‌های نوین قابل مقایسه هستند. به‌عنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرم‌افزارِ هدایت چنین هواپیمایی می‌تواند تا ۴ میلیون خط کد داشته باشد.

مهندسی نرم‌افزار را می‌توان به ۱۵ زیر رشته تقسیم کرد:

  • شناخت: بررسی و استخراج نیازمندی‌های نرم‌افزار که شامل استخراج، تحلیل و اعتبارسنجی خواسته‌ها و تهیه مستندات مربوطه جهت طراحی نرم‌افزار می‌باشد.
  • طراحی نرم‌افزار: فرایند تعریف معماری، اجزا، واسط و دیگر مشخصه‌های سیستم یا اجزا را گویند. همچنین این زیر بخش به عنوان خروجی فرایند نیز تعریف می‌شود.
  • طراحی نرم‌افزار # توجهات طراحی:سازگاری، توسعه پذیری، تحمل خطا، قابلیت نگهداری، ماژولمند بودن، قابلیت اطمینان، قابلیت استفاده مجدد، استحکام، امنیت، قابلیت استفاده، کارایی، قابلیت حمل، مقیاس پذیری.
  • ساخت نرم‌افزار:جزئیات مربوط به ایجاد کار با معنی برای نرم‌افزار از طریق برنامه‌نویسی، بازنویسی و تأیید، تست واحدها و اجزا، تست یکپارچگی، و اشکالیابی.
  • تست نرم‌افزار: بررسی فنی -تجربی، برای ارائه به سهامداران و ذی نفعان که اطلاعاتی در مورد کیفیت محصول یا خدمات تحت تست بیا ن می‌کند.
  • تعمیر و نگهداری نرم‌افزار: کلیه فعالیت‌های مورد نیاز برای ارائه پشتیبانی مقرون به صرفه در نرم‌افزار است.
  • مدیریت پیکربندی نرم‌افزار: شناسایی پیکربندی یک سیستم در نقاط مشخصی از زمان به منظور کنترل سیستماتیک تغییرات پیکربندی و حفظ و نگهداری یکپارچگی برنامه و ردیابی پیکربندی در طول چرخه عمر سیستم را گویند.
  • مدیریت نرم‌افزارهای مهندسی: نرم‌افزار مدیریت فعالیت‌ها و برنامه‌ریزی، هماهنگی، اندازه‌گیری، نظارت، کنترل و گزارش‌گیری به منظور حصول اطمینان از توسعه و نگهداری سیستماتیک، منضبط و اندازه‌گیری شونده نرم‌افزار است.
  • فرایند نرم‌افزار: تعریف، اجرا و پیاده‌سازی، ارزیابی، اندازه‌گیری، مدیریت، ایجاد تغییر و بهبود فرایند چرخه حیات خود نرم‌افزار را گویند.
  • روش‌های مهندسی نرم‌افزار و مدل‌های تحمیل ساختار در مهندسی نرم‌افزار با هدف سیستماتیک و منظم کردن فعالیت، قابل تکرار بودن و در نهایت افزایش کیفیت نرم‌افزار و موفقیت امیزتر بودن ان ایجاد می‌شود.
  • تمرین مهندسی نرم‌افزار حرفه‌ای دربارهٔ دانش، مهارت و نگرش‌های مهندسی نرم‌افزار است که مهندسان نرم‌افزار باید تمرین مهندسی نرم‌افزار را به صورت حرفه‌ای، مسئولانه و اخلاقی بکنند.
  • اقتصاد مهندسی نرم‌افزار در مورد تصمیم‌گیری در زمینه کسب و کار تجاری مهندسی نرم‌افزار است.
  • مبانی ریاضی و محاسباتی
  • مبانی مهندسی
  • ابزار مهندسی نرم‌افزار و روش‌ها: ابزارهایی مبتنی بر کامپیوتر برای مهندسی نرم‌افزار ایجاد شده‌اند تا به فرایندهای چرخه حیات نرم‌افزار و روش‌هایی که ساختاری را بر فعالیت‌های مهندسی نرم‌افزار اعمال می‌کنند کمک کندتا به هدف ساخت فعالیت‌های سیستماتیک و در نهایت به موفقیت بتوان رسید.

تبلیغات

آخرین ارسال ها

آخرین جستجو ها

Hikara محصولات نانو یک دانشجوی پزشکی اریانا چت تاریخچه ی ذهن من پلی آلومینیوم کلراید درمان بواسیر آرمن طرح و نما دانلود بازی و برنامه اندروید به صورت رایگان و با لینک مستقیم پرسش مهر ۹۹_۱۴۰۰