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



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

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

متدهای چابک، وقتی تیم‌ها با هم در یک مکان هستند، بر ارتباطات رو در رو برای تمام مستندات نوشته‌شده تأکید دارد. بیشتر تیم‌های چابک در یک دفتر تک‌واحدی (به نام bullpen) کار می‌کنند، که چنین ارتباطاتی را تسهیل می‌کند. به منظور ساده کردن ارتباطات و همکاری تیمی، گروه معمولاً کوچک (بین ۵ تا ۹ نفره) است. پروژه‌های بزرگ توسعه می‌توانند توسط تیم‌های کاری چندگانه در راستای یک هدف رایج یا در بخش‌های متفاوت یک پروژه تحویل شوند. ممکن است این امر نیاز به هماهنگی اولویت‌های تمام تیم‌ها داشته باشد. وقتی تیمی در مکان‌های مختلفی کار می‌کند، افراد ارتباط روزانه‌شان را از طریق ویدئو کنفرانس، صدا، ایمیل و. حفظ می‌کنند.

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

توسعهٔ چابک بر کار نرم‌افزار به عنوان مقیاس اصلی پیشرفت تأکید دارد، که با مزیت ارتباطات رو در رو در هم آمیخته شده، و نسبت به سایر متدها مستندات مکتوب کمتری تولید می‌شود. متد چابک ذی‌نفعان را به اولویت‌بندی خواسته‌ها» با نتایج حاصل از سایر تکرارها، بر اساس ارزش کسب‌وکار مشاهده‌شده در ابتدای تکرار (که با عنوان ارزش‌محور شناخته می‌شود) ترغیب می‌کند.

ابزارها و تکنیک‌های خاص، مانند یکپارچه‌سازی مستمر، تست اتوماتیک یا xUnit، برنامه‌نویسی دوجزئی، توسعهٔ آزمون‌محور، الگوهای طراحی، طراحی دامنه‌محور، code refactoring و دیگر تکنیک‌ها اغلب برای بهبود کیفیت و افزایش چابکی پروژه به کار می‌روند.

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

در توسعهٔ چابک نرم‌افزار، یک رادیاتور اطلاعات، صفحه‌نمایشی فیزیکی (معمولاً بزرگ) واقع در صدر دفتر کار است، جایی که رهگذران بتوانند آن را ببینند. این صفحه‌نمایش خلاصه‌ای از آخرین وضعیت محصول (های) نرم‌افزاری را نمایش می‌دهد. این نام توسط Alistair Cockburn ابداع و در کتاب توسعهٔ چابک نرم‌افزار» در سال ۲۰۰۲ توصیف شد.ممکن است یک نشانگر نوری برای آگاه کردن اعضای تیم در مورد وضعیت فعلی پروژه‌شان به کار رود.

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

  • مدل‌سازی چابک
  • فرایند یکپارچهٔ چابک (AUP)
  • Crystal Clear
  • متدهای Crystal
  • متدهای توسعهٔ سیستم‌های دینامیک (DSDM)
  • برنامه‌نویسی اکستریم (XP)
  • توسعهٔ ویژگی‌محور (FDD)
  • طراحی گرافیکی سیستم (GSD)
  • توسعه Kanban
  • توسعه Lean
  • Scrum
  • ردیابی سرعت

چرخهٔ عمر توسعهٔ نرم‌افزار

متدهای چابک بر جنبه‌های متفاوتی از چرخهٔ عمر توسعهٔ نرم‌افزار تمرکز دارند. بعضی از آن‌ها بر روش‌ها (برنامه‌نویسی extreme، برنامه‌نویسی فعال مدل‌سازی چابک) تمرکز دارند، در حالی که بعضی دیگر بر مدیریت پروژه‌های نرم‌افزاری تأکید دارند (مانند رویکرد Scrum ). هنوز، رویکردهایی وجود دارند که تمام چرخهٔ عمر توسعه را پوشش می‌دهند (متدهای توسعهٔ سیستم دینامیک (DSDM) و Rational Unified Process (RUP))، در حالی که بیشتر آن‌ها از فاز تعیین نیازمندی‌ها مناسب هستند (مثلاً ویژگی‌محور در توسعه یا FDD). بنابراین، یک تفاوت آشکار بین متدهای گوناگون توسعهٔ چابک نرم‌افزار در این مورد است. اگرچه DSDM و RUP نیازی به رویکردهای مکمل برای پشتیبانی از توسعهٔ نرم‌افزار ندارند، بقیهٔ آن‌ها با درجات متفاوت این نیاز را دارند. DSDM می‌تواند توسط هر کسی به کار رود (علیرغم اینکه فقط اعضای DSDM می‌توانند محصولات یا خدمات DSDM را عرضه کنند). RUP یک محیط توسعه تجاری فروشی است (Abrahamsson، Salo، Rankainen & Warsta، 2002).

 

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

کیفیت بسیار زیاد

 

نقد

ممکن است متدولوژی‌های چابک در سازمان‌های بزرگ و انواع خاصی از پروژه‌ها ناکارآمد باشند.

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

 


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

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

اغلب پروژه‌های 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) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرم‌افزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشین‌های واقعی به‌طور کارآمدی عمل کند.

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

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

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

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

کانبان یک سیستم برنامه ریزی اجرای پروزه است

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

رویکرد  Kanban :
Kanban یک روش قدرتمند و کاربدی است که از تجسم کار استفاده می کند. کانبان بهترین انتخاب برای استارت اپ ها است چون بسیار سریع میتوان از ان فید بک و بازخورد گرفت . با استفاده از Kanban شما باید بر روی تجسم کار در حال پیشرفت، نگه داشتن گردش کار به شکل ثابت و یادگیری از اشتباهات برای کاهش زمان چرخه های یادگیری تمرکز کنید.

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

از آنجایی که هر تیم دارای اعضایی با تخصص های متنوع می باشد، تخته کانبان به شما اجازه می دهد تا جریان کاری خود را بر روی آن پیاده کنید. 

5 گام اصلی در کانبان برد:

گام اول،

اولین گام این است کهشما باید از کارها و وظایفی که باید انجام دهید  مطلع باشید تا بتوانید ان را روی برد کاانبان پیاده کنید.

گام دوم،

دومین گام ساخت تخته کانبان است. هنگامی که وظایف و کارهای لازمه را یافتید، باید آنها را در بردکانبان وارد کنید. سه ستون اصلی (باید انجام شودTO DO، در حال انجام DONIGو انجام شدهDONE) تخته کانبان را رسم کنید و وظایف را در آن قرار دهید. تخته کانبان در اوایل کار بسیار متغیر خواهد بود و پس از گذشت زمان به مرور ثابت می شود.

 

گام سوم

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

 

گام چهارم

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

گام پنجم 

برای شروع Kanban درج گزارش می باشد.این گزارش ها برای کمک به شما برای یافتن اطلاعاتی مانند چند روز طول می کشد تا یک وظیفه به پایان برسد، تعداد کارهایی که تیم در یک زمان می تواند انجام دهد .گزارشات و بازخوردها به شما یک بینش عالی برای بهبود روند کاریتان ارائه می دهد.

در تصویر زیر یک نمونه بسیار ساده از تخته کانبان را مشاهده می کنید:

                           

رنگ کارت نیز می تواند به اولویت آن وظیفه نیز اشاره کند (به عنوان مثال، قرمز برای سرعت بخشیدن، سبز برای عادی و غیره).

                                               


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

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


مهاجرت تحصيلي msp-project رسادیتا-طراحی سایت,طراحی سایت حرفه ای,طراحی وب سایت اختصاصی تیم امنیتی ایران اتک تاکينا غرور فروشگاه فایل ارزان جدایی عاشق Courtney's game windbichler