توسعه نرم افزاری چابک

توسعه نرم‌افزاری چابک یا Agile زمانی مطرح شد که بسیاری از پروژه‌های نرم افزاری یا تولید محصول با شکست مواجه می‌شدند. زمانبندی نا مناسب، کیفیت پایین در تولید نرم افزار، عدم ارتباط با مشتری، تحلیل نادرست نیازمندی‌ها، عدم بررسی کافی نرم افزار، از عمده‌ترین دلایل شکست پروژه‌های نرم افزاری بود.

در فوریه سال ۲۰۰۱، گروهی از توسعه‌دهنده نرم‌افزار دور هم جمع شدند تا تجربیات خود را از علل ناکامی پروژه‌های نرم افزاری به اشتراک بگذارند. آن‌ها معتقد بودند که این صنعت نیازمند یک تغییر اساسی در رویکرد توسعه نرم‎افزار است. آن‌ها برای توصیف رویکردی که اکنون به عنوان «توسعه چابک نرم‌افزار» شناخته می‌شود، مانیفستی برای توسعه چابک نرم‌افزار منتشر کردند که بر ۱۲ اصل استوار است:

۱. بالاترین اولویت، جلب رضایت مشتری با تحویل به موقع و مستمر نرم افزاری ارزشمند است.

۲. استقبال از تغییر نیازمندی‌ها، حتی در اواخر فرآیند توسعه. فرآیندهای چابک، تغییر را در جهت مزیتِ رقابتی مشتری مهار می‌کنند.
۳. تحویل به موقع بخش‏‎هایی از نرم‌افزار قابل استفاده (با فواصل زمانی کوتاه‌تر هفتگی نسبت به ماهانه)
۴. ذی نفعان کسب و کار و توسعه دهنده‌ها می‌بایست به صورت روزانه در طول پروژه با هم کار کنند.
۵. پروژه‌ها به دست افراد باانگیزه سپرده شود، فضا و امکانات لازم به آن‌ها داده شود تا کارها را به‌درستی انجام دهند.
۶. کارآمدترین و موثرترین روش انتقال اطلاعات به تیم توسعه و تبادل آن در میان اعضای تیم، گفتگوی چهره به چهره است.
۷. نرم افزار قابل استفاده، اصلی‌ترین معیار سنجش پیشرفت است.
۸. فرآیندهای چابک توسعه پایدار را ترویج می‌دهند؛ حامیان مالی، توسعه دهندگان و کاربران باید بتوانند سرعت پیشرفت ثابتی را برای مدت نامحدودی حفظ کنند.
۹. توجه مستمر به برتری فنی و طراحی خوب
۱۰. سادگی – هنر به حداکثر رساندن مقدار کار انجام نشده – ضروری است.
۱۱. گروه‌های خودسازمان‌دهی شده.
۱۲. انطباق با تغییرات و محدودیت‌ها به‌طور منظم.

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

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

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

منبع: https://bit.ly/2kgEqvt

چطور به یک توسعه دهنده فرانت اند حرفه‌ای تبدیل شویم؟

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

Continue reading Template: More Tag

مزایای داشتن دانش در چند زبان برنامه‌نویسی

با رشد سریع تکنولوژی و پیشرفت روزافزون در حوزه نرم افزار و برنامه‌نویسی، تقاضا برای توسعه دهندگان چند برابر شده است. در حقیقت، در گزارشی که جدید در سایت جستجوی شغلی indeed صورت گرفته، توسعه دهندگان Full-Stack در حال حاضر پس از مهندسین نرم افزار و توسعه دهندگان فرانت اند در رده سوم لیست پرتقاضاترین شغل‌ها قرار گرفته‌اند.

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

افزایش فرصت‌های شغلی

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

  • این افراد قابلیت حل مسئله بالاتری نسبت به سایر توسعه دهندگان دارند.
  • به گفته یک گزارش از indeed، در طول زمان زبان‌های برنامه‌نویسی محبوبیت خود را یا افزایش و یا کاهش داده‌اند و به همین منظور محدود شدن به یک زبان برنامه‌نویسی می‌تواند برای شما ریسکی را به همراه داشته باشد.

در ادامه بیشترین فرصت‌های شغلی هر زبان برنامه‌نویسی در سال‌های ۲۰۱۷ و ۲۰۱۸ برای توسعه دهندگان آورده شده است.

رشد سریع تکنولوژی

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

توسعه‌دهنده بهتر و کارآمدتر

همه ما می‌دانیم که اصول برنامه‌نویسی کامپیوتر تغییری نمی‌کنند و همه آنها با بلوک‌های ساختاری مشترک ساخته می‌شوند (if/else، variables/arrays، for loops، functions و OOP)، اما راه‌کاری که هر زبان و فریم‌ورک برای حل مشکلات استفاده می‌کنند (به دلیل هدف‌های مختلف بهینه‌سازی) منحصر به فرد می‌باشد. به عنوان مثال، پایتون چون از توابع و کتابخانه‌های عالی برای تجزیه و تحلیل مجموعه‌های زیادی از داده‌ها برخوردار است، به شدت توسط مهندسان و دیتا ساینتیست‌ها مورد استفاده قرار گرفت. جاوا و #C زبان برنامه نویسی سطح پایین هستند که ما باید در مورد انواع داده‌ها و اطلاعاتی که در یک متغیر ذخیره می‌کنیم، دقیق باشیم. زبان #C یک زبان مدرن زیبا است که از پلتفرم‌های مختلف (مانند Java) پشتیبانی می‌کند. از سوی دیگر، زبان Node، بر خلاف #C و جاوا، صرفا برای اداره کردن درخواست‌های وب سرور و در نحوه اتصال به سوکت ساخته شده است. حتی در حال حاضر، گرچه بعضی از زبان‌های برنامه‌نویسی در حال رسیدن به این امر مهم هستند ولی Node هنوز هم زبان غالب برای ایجاد اتصال سوکت در زمان واقعی (Real-Time) است (جایی که Node از Ajax چند هزار برابر بهتر عمل می‌کند).

نتیجه‌گیری

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

Create A product first!

Create a product first please!