راهنمای شروع برنامه نویسی در سال 2020

ممکنه جدیدا شروع به یادگیری برنامه نویسی کرده باشین یا به برنامه نویسی علاقمند شده و قصد داشته باشین که وارد این دنیای گسترده بشین!در این مطلب، راهنمایی برای شروع برنامه نویسی (در سال 2020) برای شما عزیزان قرار دادم که کاملا براساس تجربه، دانش و مطالعات خودم هستش که میتونه در ابتدای راه کمی کمکتون کنه.خوب، در ابتدا میخوایم اجزای یک تیم تولید نرم افزار رو مورد بررسی قرار بدیم ( چرا؟ چون اول باید زمینه مورد علاقمون رو پیدا کنیم تا بتونیم تشخیص بدیم چه چیزی برای حال و آینده ما بهتر و ایده آل تره! ) :طراح رابط / تجربه کاربری ( UI / UX Designer )توسعه دهنده سمت کلاینت ( Front-End Developer )توسعه دهنده سمت سرور ( Back-End Developer )مدیر پروژه / رهبر تیم ( Project Manager / Leader )آنالیزور نرم افزار ( Software Analyzer )تستر نرم افزار ( Software Tester )معمولا یک تیم برنامه نویسی از اجزای بالا تشکیل میشه که بسته به نوع، سایز و بودجه تیم، مشاغل جدیدی اضافه یا بعضی از اونها حذف میشه! (برای مثال در بعضی از شرکت / تیم های کوچیک که بودجه کمی دارن، وظیفه تست برعهده خود توسعه دهنگان هستش و فردی به عنوان تستر نرم افزار در تیم وجود نداره)بسیار خوب، وظیفه هرکدوم از این افراد در تیم چیه؟طراح رابط / تجربه کاربری، همینطور که از اسمش پیداست وظیفه طراحی ظاهر نرم افزار رو به عهده داره!وظیفه توسعه دهنده سمت کلاینت، پیاده سازی ظاهر نرم افزار در قالب کد و متصل شدن به API آماده شده توسط توسعه دهنده سمت سرور هستش.توسعه دهنده سمت سرور، کارهای مربوط به سرور و پس زمینه ( Back ) رو انجام میده! (برای مثال، کارهای مربوط به دیتابیس)مدیر پروژه / رهبر تیم، وظیفه ارتباط و تعامل با مشتری، انتقال خواسته های مشتری به تیم توسعه، برنامه ریزی برای کارهای تیم، و نظارت برروی روند تکمیل پروژه رو به عهده داره تا کارها با نظم و سرعت پیش برن.وظیفه آنالیزور نرم افزار، بررسی و آنالیز کردن خواسته های مشتری در قالب نرم افزار هستش.وظیفه تستر نرم افزار هم که مشخصه! تست کردن بخش های تکمیل شده نرم افزار به روش های مختلف.درکل، اگر به طراحی ظاهر نرم افزار علاقه دارین میتونین برید سمت طراحی UI و UXاگر به طراحی ظاهر نرم افزار علاقمندین امَا دوست دارین در کنارش کد هم بزنین انتخاب مناسب برای شما Front-End هستشاگر عاشق برنامه نویسی و خلق کردن هستین و از طراحی بیزارید بی شک Back-End برای شما مناسبهاگر به تست کردن علاقمندین و در زندگی عادی هم تمامی روش هارو مورد بررسی قرار میدید بهتره که تستر بشینبسیار هم عالی؛ حالا که با اجزای یک تیم برنامه نویسی آشنا شدیم و تونستیم که زمینه مورد علاقه خودمونو پیدا کنیم بیایین با زبان ها و فریمورک های برنامه نویسی برتر در سال 2020 بیشتر آشنا بشیم!ابتدا بگم که طراحان UI / UX باید با نرم افزار های مخصوص طراحی مانند فتوشاپ یا XD کار کنن که این بخش شامل اونا نمیشه!خوب، بریم سراغ اصل مطلب!پیش نیازهای هرکدوم از فریمورک / کتابخانه های ذیل در کنارشون قرار داده شده!بهترین انتخاب ها برای یک توسعه دهنده Front-End در سال 2020 :React.js : HTML, CSS, JavascriptAngular.js : HTML, CSS, JavascriptVue.js : HTML, CSS, Javascriptبهترین انتخاب ها برای یک توسعه دهنده Back-End در سال 2020 :Node.js : JavascriptASP.NET Core : C#Laravel : PHPDjango : Pythonبهترین انتخاب ها برای یک توسعه دهنده موبایل در سال 2020 :Flutter : DartReact Native : JavascriptPWA : HTML, CSS, JavascriptKotlinطبق نظری که بنده و بسیاری از متخصصان این حوزه دارن Flutter بهترین گزینه برای توسعه دهنگان موبایل و فریمورک ها و کتابخانه های Javascript بهترین گزینه برای توسعه دهنگان وب در سال 2020 هستن!یک سری مهارت (که اکثرشون هم قابل یادگیرین) وجود داره که باعث میشه توی برنامه نویسی به سرعت پیشرفت کنین!خوب، این مهارت ها چیَن ؟زبان انگلیسیتوانایی حل مسائل و الگوریتم های مختلفتوانایی انجام کارهای گروهیعلاقه به برنامه نویسی [ میدونم مهارت نیست ولی مهمه :)) ]روی زبان انگلیسی زیاد وقت بزارین که در آینده نزدیک پشیمون نشین!اگر قصد داشته باشین توی شرکت های بزرگ تکنولوژی (مثل مایکروسافت، گوگل و غیره) استخدام بشین یا در حد برنامه نویسای اونجا باشین باید روی حل مسائل و الگوریتم ها وقت زیادی بزارین (حتی بیشتر از کدنویسی) چرا؟ چون زبان های برنامه نویسی و... فقط ابزاری برای پیاده سازی مسائل و الگوریتم های مختلف هستن (مهم درک و حل مسائل و الگوریتم هاست نه صرفا کدنویسی)در اینجا یک مسیر برای تبدیل شدن به یک برنامه نویس خوب (نه حرفه ای) براتون قرار دادم که پس از یادگیری زبان برنامه نویسی مورد علاقه تون به کارتون میاد!یادگیری اصول کدنویسی تمیزیادگیری برنامه نویسی شی گرا (OOP) و الگوهای طراحی (Design Patterns)یادگیری تست نرم افزاریادگیری کار با ورژن کنترل ها (مثل Git)یادگیری فرآیند های توسعه نرم افزار (مثل TDD یا DDD)یادگیری متدولوژی های توسعه نرم افزار (مثل Scrum)یادگیری در برنامه نویسی انتها نداره...و در آخر یک نقل قول فوق العاده از مارتین فولر (نویسنده کتاب های پرطرفدار صنعت نرم افزار) :هر احمقی میتونه کدی بنویسه که کامپیوتر اون هارو بفهمه، امّا برنامه نویسای خوب کدهایی مینویسند که انسانها بتونن اون رو بفهمن.