درجا نزنیم به عقب برنگردیم... <برنامه نویسی موفق/>

سلام،‌ من اشکان هستم و بعد از نوشتن چند تا پست نیمچه و نیمه در ویرگول تصمیم گرفتم یکم اطلاعاتُ منظم و مرتب‌تر کنم و دوباره ولی این بار یکم پایه‌ای‌تر در مورد اصول برنامه‌نویسی مدرن و ابزارهایی که دور و برمون هستند و کمک میکنند که نسبت به بقیه برنامه‌نویس‌ها متفاوت باشیم بنویسم. خساست به خرج نمیدم و هرچی که بلدم و خودم استفاده میکنمُ آموزش میدم و در واقع از این به بعد پُست‌های من مناسب دو گروه خواهد بود ۱-کسایی که برنامه‌نویس هستند ولی دوست دارند خودشونُ بالا بکشند ۲-کسایی که میخوان برنامه‌نویسی رو یاد بگیرند ولی عجله‌ای ندارند و بیشتر روی کیفیت آموزش تمرکز دارند.میخوایم ببینیم برنامه مدرن ماژولار چی‌ هست اصولا، سورس کنترل یا ورژن کنترل به چه دردی میخوره و چرا همیشه باید اول به فکرش باشیم بعد کارمون رو شروع کنیم، ببینیم چرا تست نوشتن برای خودمون و کار تیمی مفیده و مفهوم test first چیه و با لایبراری‌های مختلف تست نوشتن آشنا بشیم، نحوه جمع کردن یه پروژه خیلی بزرگ complex رو یاد بگیریم و در همین راستا با ابزارهایی مثل داکر و وب پک و... کار کنیم.اگر پست‌های قبلی من رو خونده باشید میدونید که من با ترجمه کردن واژه‌های مصطلح موافق نیستم و توی نوشته‌های من بجای شیئ‌گرا و آرایه و چارچوب و... Object Oriented , Array و Framework میبینید اصلا بیایید ۲ سال با هم ادامه بدیم آخرش پست‌هامون کلا انگلیسی باشه چون سواد اونجاست ما ایرانی‌ها کپی‌کاری فقط بلدیم پس بهتره زبانمون خوب باشه که بتونیم رفرنس‌های اصلی رو بخونیم.در ادامه قراره برنامه نویسی هم یاد بگیریم، زبان خاصی هم مد نظر نیست یک برنامه‌نویس از نظر من خودش رو محدود به syntax خاصی نمیکنه البته که خود من هم زبان‌هایی رو ترجیح میدم وقتی دستم بازه ولی وقتی اصول رو بدونیم به نظرم خیلی سریع میتونیم خودمون رو با هر زبانی تطبیق بدیم پس جهت اطلاع زبان اصلی من برای سمت سرور Python هست و سمت کلاینت یک فریم‌ورک ری‌اکتیو معمولا Reactjs کار میکنیم و تا حد امکان از تایپ اسکریپت استفاده میکنیم که یک سوپرسِتِ extend شده زبان جاوااسکریپت هست که اون رو قاعده‌مندتر کرده. اما یه جاهایی ممکنه Node.js بنویسیم یا ++C یا جاوا سمت سرور یا با انگیولار و Vuejs سمت کلاینت کار کنیم و اصلا اهمیتی نداره برامون که زبان چیه و فریمورک کدومه وقتی قواعد برنامه نویسی رو بلد هستیم.اونوقت خیلی جالب میشه برامون که چطور همه این فریمورک‌ها اصول کارشون یکیه و فقط اسم‌ها رو تغییر دادن و برای کسایی که سطحی نگاه میکنند گیج‌کننده به نظر میرسند.در نهایت ما توی دنیایی زندگی میکنیم که برنامه‌نویس‌ها برای بقاء به سمت فول‌استک(آچارفرانسه) شدن حرکت میکنند پس باید شما تقریبا یک system admin خوب هم باشید، باید بتونید طراحی دیتابیس هم انجام بدید و اگر سلیقه خوبی هم داشته باشید باید بتونید دستی هم به سر و روی UI برنامه‌تون بکشید همزمان باید UX رو هم بشناسید پس قراره در کنار یک برنامه‌نویس خوب شدن اینها رو هم تا حدودی یاد بگیریم.و اصولی که بهشون پایبند می‌مونیم... (Principles)اصل Keep It Simple, Stupid - KISS:آنتوان دو سنت اگزوپری نویسنده شازده کوچولو یه جمله معروف داره که میگه“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” یعنی کمال زمانی حاصل نمیشود که دیگر چیزی برای اضافه کردن نمانده است بلکه زمانی به دست می‌آید که دیگر چیزی برای زدودن باقی نمانده.یک پروژه پیچیده رو هم با همه شاخ و برگ‌هاش اگر بخواید از اول ببینید و بسازید کارتون خیلی سخت میشه و شاید در نهایت به بن‌بست برسید کسانی که تجربه‌ش رو دارند متوجه منظور من میشوند همیشه کار رو تا جایی که میتونید ساده کنید و از ساده‌ترین فرمش کار رو شروع کنید و کم کم امکانات مورد نظرتون رو به کار اضافه کنیداصل Don't Repeat Yourself - DRYمیشه گفت یکی از معروف‌ترین و پایه‌ای ترین اصول برنامه‌نویسی که اسمش به گوش اکثر شما خورده اصل DRY‌ هست که میگه خودتون رو تکرار نکنید (dry در لغت به معنی خشک هست) یا "دوباره کاری" نکنید اصلا مفهوم functionها از همین اصل گرفته شده در شکل ساده‌ش فرض کنید اگر توی برنامه‌تون بجای اینکه یک فانکشن برای کپیتال کردن کاراکترهای یک استرینگ بنویسید هربار این کار رو دستی انجام می‌دادید چقدر خجالت‌آور بود در مقابل این مفهوم اصل WET (به معنی لغوی مرطوب) تعریف میشه که میتونه مخفف "write every time", "write everything twice", "we enjoy typing" or "waste everyone's time" باشه?و اصول دیگه‌ای هم مثل Single Responsibility و Separation of Concerns در کنار ده‌ها اصل مهم دیگه وجود دارند که کم‌کم باهاشون آشنا میشیم و بجای اینکه تئوری‌شون رو بخونیم واقعا اونها رو به کار میگیریم و درک میکنیم که چقدر توی کارمون به عنوان یک برنامه نویس میتونن موثر باشند.خوب یکم زیادی طولانی شد اما پُست بعدی من در مورد انتخاب ابزار مناسب برنامه نویسی (IDE) خواهد بود و لینکش رو بعد از نوشتن پست همین پایین هم اضافه میکنم... فعلا بدرود