برنامه نویسی را از کجا و چطور شروع کنیم ؟

سلام این مقاله را براساس تجربیات خودم نوشتم و امیدوارم به دردتون بخوره . من تقریبا 4 ساله که تمام منابع آموزشی فارسی و انگلیسی درباره ی برنامه نویسی را مطالعه میکنم . هم اکنون هم بصورت فریلنسی در خانه و هم در یک شرکت بسیار عالی کار میکنم و لطف کنید در کامنت ها در مورد حقوق بنده سوال نکنید ( این رو میگم به این دلیل که من هرکجا از شغلم صحبت کردم حقوقم رو میپرسن و این اصلا فرهنگ خوبی نیست یکی از فرهنگ های بد ما ایرانی ها سوال کردن درباره ی حقوق ، قیمت یک چیزی که یکی خریده و ... است . مثلا یکی ماشین میخره هرکی میبینه میگه چند خریدی ؟ خیلی بدم میاد )داستان شروع برنامه نویسی خود من و تجربیاتم اولین باری که کدنویسی کردم بصورت جدی سال 1391 بود که یک پروژه مدیریت یک انبارداری به زبان سی شارپ بود و یک برنامه ی قابل نصب روی ویندوز به همراه دیتابیس و ... بود . این پروژه را یکی از هم کلاسی هام به من سپرده بود که برای یکی از فامیل هاشون نیاز داشت . من نه بخاطر پولش بلکه بخاطر اینکه یاد بگیرم چطور وارد بازار کار بشم و ببینم آیا توان انجام یک کار رو دارم یا نه ؟ شروع کردم به نوشتن و تقریبا 6 یا 7 ماه طول کشید تا این پروژه را انجام بدم ولی انصافا من قبل از اون حتی یک خط کد ننوشته بودم و اونجا نقطه ی شروع من بود . استرس اوایل خیلی زیاد بود اما بعد از انجام کار فهمیدم که من هم میتونم کارایی رو در این زمینه انجام بدم و باعث شد برم سراغ جدی یاد گرفتن وب و ...سال 1391 بود که پایتون رو شروع کردم و همون سال پی اچ پی را بصورت همزمان با پایتون یاد گرفتم . یادگیری من بیشتر از کتاب های کاغذی و ... بود چون اون زمان دوره های آموزشی ویدیویی فارسی بصورت آنلاین که این روزها هست وجود نداشت ( انصافا الان کیفیت دوره های انلاین برنامه نویسی ارتقا پیدا کرده و عالی شده . اون زمان کاش این منابع در دسترس بودن ) .من سپس اومدم تو انجمن برنامه نویسی ایرانی یعنی barnamenevis.org عضو شدم و فکر کنم تنها انجمن برنامه نویسی در اون دوران بود . افراد خیلی خوبی اون زمان ها اونجا فعالیت میکردن که الان وضعیت زندگی خیلی هاشون رو پیگیر هستم و تقریبا میشه گفت همشون ادم های موفقی شدن . کم کم من از اونجا خیلی چیزا یاد گرفتم و تقریبا یک سال و نیم طول کشید تا به پی اچ پی مسلط بشم . منظورم از مسلط بودن این است که میتونستم پروژه های واقعا عملی را با پی اچ پی بنویسم و روی سایت بزارم و بعد بروزرسانی کنم . اون موقع ها یک سایتی ساخته بودم مثل فیسبوک و شاید باورتون نشه که اگر الان تا امروز مدام بروزرسانی میشد یکی از بهترین جامعه های مجازی ایرانی بود . هر هفته یکی دوتا بروزرسانی روی سایت میدادم و یه سری ابزارها بهش اضافه میکردم . ثبت نام افراد هم در حال افزایش بود اما کل پروژه تستی بود تا اینکه یک روز اومدم دیدم صفحه ی اول سایتم یه عکس اسکلت گذاشتن و نوشتن HACKED BY ... خخخ اولین پروژه ی تفریحی من هک شد به همین راحتی من سعی نکردم سایت رو برگردونم چون همونطور که گفتم همینطوری یه هاست اشتراکی خریده بودم و همینطوری برای تمرین ساخته بودم و مهم نبود که هک بشه یا نه !‌اما فهمیدم که چرا سایتم هک شده بود از یه راه ساده !‌ من دایرکتوری هام رو با htaccess نبسته بودم و همشون باز بودن هکر هم اومده بود یه چیزی رو اپلود کرده بود بالا میو مد من سال 1393 بود به پیشنهاد یکی از دوستانم برنامه نویسی اندروید را شروع کردم . اون موقع ها یه سایتی بود برای آموزش به نام سامنتا که من یه دوره ی برنامه نویسی اندروید با جاوا ازشون خرید کردم دوره ی خوبی بود و بعد از دیدن دوره یه اپلیکیشن کتاب ساختم فرستادم کافه بازار و تایید شد !‌ فروشی بود و من قیمت هزار تومن واسش گذاشته بودم . شب خوابیدم صبح که پاشدم دیدم 50 تا خرید شده ازش !‌ خیلی ذوق کردم یه کتاب ساده که متنش از اینترنت کپی بود و با یه گرافیک قشنگ طراحی کرده بودم و فکر کنم همین مسئله ی گرافیک خوب باعث فروش اپلیکیشن شده بود من فکر میکردم که مشتری ها اشتباها فکر کردن این یه اپلیکیشن دارای امکانات هست که خرید زدن وگرنه کی هست که چندتا متن کپی از اینترنت رو بخره ! اما بعد که نظرات رو خوندم و فهمیدم که این مردم واقعا به این متن ها و به این اپلیکیشن نیاز داشتن :)در نظر ها چیزهایی مثل عالی بود و فوق العاده بود خیلی بهش نیاز داشتم موج میزد ! تعجب آور بود .سه ماه این اپلیکیشن من فروش داشت تا اینکه کافه بازار یهو زد اپ رو حذف کرد و هیچ دلیل قانع کننده ای هم واسش نیاورد . درآمد از روز های اولی که من برنامه نویسی را شروع کردم برای من شروع شد از هر چیزی سعی داشتم کسب درآمد کنم خیلی از افراد رو دیدم که برنامه نویس هستند و سالهاست که میگن برنامه نویس هستند ولی هنوز درآمدی ندارن و وقتی میپرسی چرا درآمد نداری میگن که هنوز خوب یاد نگرفتم یا هنوز درحال ساختن فلان چیزم یا به زودی به درآمد میرسم . اول اینکه :به زودی: یک عبارت خنده داره ! هرکس گفت فلان کارو ؛به زودی؛ انجام میدم مطمئن باشید اون کار هرگز انجام نخواهد شد . توهمی به نام "به زودی" برای وب سایت ها و استارتاپ های ایرانی !یه زمانی مد شده بود هر کسی یه دامنه ای برای ایده ی ذهنی خودش ثبت میکرد و یه سایتی بالا میاورد و مینوشت به زودی فلان اتفاق مهم در اینجا خواهد افتاد ولی نتیجه این بود 99٪ اینها هرگز اتفاق نمیوفتاد چون کسی که به دنبال انجام یک پروژه باشه نیازی نیست قبلش جار بزنه ! :)عکس از گوگل برداشته شده قصد تخریب کسی رو نداریم برنامه نویسی را از کجا شروع کنیمبرنامه نویسی را از کجا شروع کنیمبرنامه نویسی را از کجا شروع کنیمبه تصاویر بالا نگاه کنید ! خنده دار نیست ؟‌ چند هزار سایت یا استارتاپ یا اپلیکیشن رو دیدید که با ادعاهای توخالی و توهم بیجا همیشه وعده میدهند ولی هیچ نتیجه ای در عمل ندارند چرا اینطوری شده ؟‌پس یادتون باشه برنامه نویس واقعی این است که از کوچکترین چیزهایی که یاد میگیره بتونه کسب درآمد بکنه و یک کار مفیدی انجام بده اگر با کوچکترین چیزهایی که یاد میگیرید نمیتونید پول در بیارید شما حرفه ای ترین برنامه نویس کل جهان هم باشید هیچ درآمدی نمیتونید در بیارید و در کل اگر به برنامه نویسی به چشم شغل و اینده ساز نگاه کنید باید به فکر پول و کسب درآمد از طریق برنامه نویسی باشید و از همان روز اول که برنامه نویسی را شروع کردید و کوچکترین چیزهایی که یاد گرفتید باید پول کسب کنید خب من نمیخام اینجا دیگه بیشتر از این از خودم تعریف کنم قصدم هم از نوشتن این مقاله اشتراک گذاری رزومه ی خودم نیست ولی امیدوارم بتونم با تجربیاتم به شما کمک کنم و امیدوارم شما هم یه چیزی را در کامنت بنویسید که مفید باشه استفاده کنیم . خب بریم سر اصل مطلب ...برنامه نویسی را از کجا باید شروع کرد ؟‌شروع برنامه نویسیاگر تا کنون هیچ کدی ننوشتید و فقط اطلاعات عمومی درباره ی زبان های برنامه نویسی دارید یا اگر سراغ چند زبان برنامه نویسی رفتید و در هیچ کدام موفق به شروع نشدید جای درستی اومدید و من اینجا بهتون نشون میدم که از کجا باید شروع کنید خب قبل از هر چیزی باید مبانی برنامه نویسی را یاد بگیرید . مثلا به سوال های زیر به خوبی پاسخ بدید . زبان برنامه نویسی چیست ؟ کدهای برنامه نویسی چطور و کجا نوشته میشن ؟کدهای برنامه نویسی چطور توسط ماشین اجرا میشن ؟ بزارید یه آزمون اجرا کنم تا به نتیجه برسیم که کدام زبان برنامه نویسی برای شروع شما مناسب است . دستورالعل این آزمون به این شکل است که شما در هر بخش باید به هر سوال یک پاسخ بدهید و بعد جلوی پاسخ یک کدی نوشته شده است که سوال بعدی شما را نشان میدهد یعنی شما باید دنبال سوالی بگردید که در ابتدایش آن کد نوشته شده باشد سوال A : دوست دارید در آینده با برنامه نویسی چه کاری انجام دهید ؟ میخام طراح و برنامه نویس وب بشم . -> برو به WEB-1میخام توسعه دهنده ی اپ های موبایل بشم . -> برو به MOB-1میخام بازی ساز بشم . -> برو به GME-1سوال WEB-1 : در بحث وب دوست دارید چه کارهایی انجام دهید ؟ من میخام برنامه نویس فرانت اند بشم و قسمت گرافیک سایت کار کنم . -> برو به WEB-2-1من میخام بک اند کار بشم و عملیات و هسته ی اصلی سایت سمت سرور کار کنم . -> برو به WEB-2-2من میخام سئو کار کنم محتوا تولید کنم و کارهای تبلیغاتی و فروش انجام بدم . -> برو به WEB-2-3سوال MOB-1 : میخواهید چه اپلکیشین های موبایلی تولید کنید ؟ اپلیکیشن های اندرویدی -> برو به MOB-2-1اپلکیشین برای آیفون -> برو به MOB-2-2اپلیکیشن برای هر دو مورد بالا -> برو به MOB-2-3سوال GME-1 : در بحث بازی سازی کدام زمینه ی زیر را ترجیح میدهید ؟ بازی سازی برای موبایل -> برو به GME-2-1بازی سازی برای دسکتاپ -> برو به GME-2-2بازی سازی برای وب -> برو به GME-2-3کد WEB-2-1 :‌شما دوست دارید برنامه نویس فرانت اند یا طراح گرافیکی سایت بشید . شما باید زبان های برنامه نویسی زیر را اجبارا یاد بگیرید : csshtmljavascriptشما برای طراحی ux های قوی برای فرانت اند وب سایت باید کتابخانه ها و فریمورک های javascript را یاد بگیرید :jqueryvue.jsreact.jsangular.jsand ...شما برای طراحی قالب ریسپانسیو باید با فریمورک های css آشنا باشید :‌bootstrapbulmaand ...کد WEB-2-2 : شما دوست دارید برنامه نویس وب باشید و روی زبان های برنامه نویسی سمت سرور کار کنید . یک برنامه نویس سمت سرور یا بک اند وب سایت وظیفه ی ساخت هسته ی اصلی سایت مثل امکانات و امنیت و سرعت سایت را فراهم میکند . از بهترین زبان های برنامه نویسی سمت سرور اینها هستن phppythonnode.jskotlinjavaالبته برای توسعه ی سمت سرور وب شما باید چند فریمورک هم یاد بگیرید مثلا فریمورک های Laravel و codeigniter و YII و ... برای پی اچ پی استفاده کنید یا از Django برای پایتون . تا بتوانید بهترین و قویترین سایت ها را تولید کنید . کد WEB-2-3 : شما دوست دار تجارت و تبلیغات آنلاین هستید و بحث سئو یکی از تخصصی ترین بحث هاست که باید یاد بگیرید . برای تبلیغات و تکنیک های تبلیغاتی و سئو نیاز نیست زبان برنامه نویسی خاصی را یاد بگیرید اما اگر قرار است کارهای فنی سئو سایت را انجام بدید باید دانشی از HTML و CSS و JS و همچنین زبان بک اند پروژه داشته باشید و شاید نیاز باشد تغییرات کوچکی انجام دهید . شما بیشتر باید الگوریتم های موتورهای جستجوگر را یاد بگیرید . باید درباره ی سئو سازی و تکنیک های سئو مطالعه کنید.کد MOB-2-1اگر میخواهید برنامه نویسی اپلیکیشن های اندرویدی انجام بدید زبان Java و Kotlin پیشنهاد میشه . Java اولین زبان رسمی برای توسعه ی اپلیکیشن های اندرویدی بود ولی Kotlin با هدف جایگزینی با جاوا به بازار آمد و در سریعترین زمان ممکن محبوب برنامه نویسان شد و گوگل هم اعلام کرد که بعنوان زبان رسمی توسعه ی اپ های اندرویدی انتخابش کرده است . کد MOB-2-2 برای تولید اپلیکیشن های آیفون یا برای سیستم عامل iOS شما میتوانید از زبان برنامه نویسی قدیمی مثل Objective-C استفاده کنید ولی اپل زبان جدید خود به نام Swift را معرفی کرده است که شدیدا پیشنهاد میکند در محیط XCODE با Swift برای ایفون اپلیکیشن تولید کنید البته نصب و برنامه نویسی محیط کدنویسی نیاز به لپتاپ یا کامپیوترهای اپلی دارد که رویش macOS نصب باشد . کد MOB-2-3برنامه نویسانی هستند که دوست دارند یکبار اپلیکیشن تولید کنند و هم برای کاربران آیفونی و هم برای کاربران اندرویدی آنها قابل استفاده باشد در این صورت دو راه بیشتر نیست . یا بصورت جداگانه برای ایفون و اندروید اپ تولید کنید یا بصورت کراس - پلتفرم اپ بنویسید . اگر بخواهید اپلیکیشن بصورت کراس پلتفرم تولید کنید باید با موارد زیر کار کنید فریمورک Flutter با زبان Dartفریمورک ReactNative با زبان javascriptالبته محیط ها و فریمورک های زیادی هست که بصورت کراس پلتفرم اپلیکیشن تولید کنید ولی معروفترین و قویترینشون اینها هستند که بالا نوشتم . کدهای GME-2-1 و GME-2-2 و GME-2-3اگر شما علاقه به بازی سازی دارید باید با بحث موتورهای بازی سازی آشنا باشید معمولا موتورهای بازی سازی کراس پلتفرم هستند و با یکبار ساختن بازی میتوانید برای دیگر پلتفرمها هم خروجی مناسب بگیرید . یکی از بهترین انجین های بازی سازی موتور بازی سازی یونیتی است . محیط Unity3D برای ساختن بازی های موبایل اعم از آیفون و اندروید و ... مناسب است . همچنین در یونیتی میتوانید بهترین بازی های آنلاین تحت وب تولید کنید و یا بازی هایی که برای دسکتاپ هستند . زبان اسکریپت نویسی بازی هایی که در یونیتی تولید میشود زبان سی شارپ و یا جاوا اسکریپت است . البته در محیط یونیتی جاواسکریپت قدرت سی شارپ را ندارد و اکثرا از سی شارپ استفاده میشود .خب تبریک میگم . شما مرحله ی اول برای شروع برنامه نویسی را با موفقیت رد کردید . الان باید بدونید که کدوم زبان و محیط را باید یاد بگیرید .بریم مرحله ی بعدی انتخاب آموزش مناسب برای زبان برنامه نویسی که انتخاب کردید همانطور که بالاتر هم نوشتم من علاقه دارم تمام دوره های آموزش انلاین را تهیه کنم و ببینم . دوره های رایگان و پولی بسیار زیادی به زبان فارسی دیدم ابتدا کیفیت دوره ها ضعیف بود و رفته رفته قویتر شد الان که سال 2020 هستیم واقعا سایت هایی هستند که دوره های آموزش برنامه نویسی قوی دارند . البته نمیشه گفت 100٪ با کیفیت و خوب هستند بلکه توشون یه سری دوره های برنامه نویسی قوی و با کیفیت هست . من چند سایت آموزشی در این زمینه معرفی میکنم و امیدوارم به دردتون بخوره من از بین نزدیک به 100 سایت آموزشی لیست زیر رو استخراج کردم که مزایای زیادی نسبت به بقیه داشتن . فرادرس فرانشمکتبخونهتحلیل داده آواسام گو تو کلسخب حالا منابع خوب هم که معرفی کردیم بریم مرحله ی بعدی برنامه نویسی را از کجا شروع کنیم ؟ اگر زبان برنامه نویسی را طبق سوال های بالا انتخاب کرده باشید و سپس منابع خوبی هم براش پیدا کرده باشید شما میتونید هم اکنون شروع کنید . اولین کار آماده سازی محیط است خیلی از دوستان میپرسن که میخام رو گوشی یا تبلت برنامه نویسی کنم همین ابتدا باید بگم نمیشه ! شما باید یک لپتاپ یا کامپیوتر داشته باشید و سعی نکنید بخاطر چیزی که دارید کار میکنید و میخواهید باهاش آینده بسازید ، کم بزارید اگر کامپیوتر یا لپتاپ ندارید همین الان یکی بخرید !‌این اولین قدم است . سپس محیط کدنویسی را نصب و آماده سازی کنید اکثر دوره های اموزشی نحوه ی نصب و راه اندازی محیط را یاد میده اگر هم یاد نداد به راحتی میتونید با یه سرچ در گوگل پیدا کنید نگران نباشید. من وقتی میخاستم اولین بار زبان کاتلین را شروع کنم . آموزش کاتلین استاد نیک زاد از سایت آواسام را خریدم و همه چیز درونش کامل بود حتی برنامه های مورد نیازم بهم دادن و نصب کردم . مدرس از صفر نحوه ی نصب و راه اندازی را اموزش میداد و هیچ مشکلی بابت شروع پیدا نکردم .قدم بعدی نشستن و دیدن دوره است و تمرین و تکرار ! ویدیوها را حتی شده دوبار سه بار چهار بار ببینید تا کامل یاد بگیرید دوره های آموزشی معرفی شده در بالا پشتیبانی هم دارند از پشتیبانی آنها کمک بگیرید مطمئن باشید شما را راهنمایی خواهند کرد