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

از کجا برنامه نویسی رو شروع کنم؟این چند وقته که داشتم توی اینستاگرام و کانال های تلگرام میگشتم با یه یه پدیده جالب روبرو شدم، فروشندگان موفقیت به برنامه نویسی هم اومدن، هرجایی یسری آدما هست که ازین نوع حرفهای «چطور تو کمتر از یک ماه برنامه نویس بشیم» یا «دوره فوق تخصصی شروع برنامه نویسی مناسب بازار کار» یا «چطور با برنامه نویسی پولدار بشیم» و ... میزنن و تقریبا انتهای حرف همشون هم میرسه به اینکه پکیج های من (همون شخص) رو بخرید و توی مدت زمان کوتاهی شما از بزرگان برنامه نویسی هستید، اگر میخواین یه راهی برای دور ریختن پول و اتلاف وقتتون داشته باشید به دیدن پست هاشون ادامه بدید و این صفحه رو ببندید ولی اگر خسته شدید ازین چرندیات بیاین با هم این مسیرو بررسی کنیم :)برای شروع اشاره میکنم به یه حرفی که معمولا بین مردم جا افتاده اس و معلوم نیست از کجا اومده: « برای برنامه نویسی باید ذهن خیلی خفنی داشت و ریاضیات قوی لازمه! » سوال اینه که ایا این واقعا درسته؟ جواب: خیر، یه ذهن با ضریب هوشی بالا و یا ریاضیات قوی در بعضی از بخش های برنامه نویسی بدرد میخوره و ممکنه شمارو جلو بندازه اما این همه ی ماجرا نیست، مثلا اگر طراح وب بشید تقریبا 95% سایت هایی که میبینید اصلا نیازی به ریاضی ندارن، اون 5% هم نمونه های خیلی خاص هستن که احتمالا خواستن شکل های غیر مرسوم ایجاد کنن، لطفا این حرف رو لطفا از ذهنتون پاک کنید، برنامه نویسی مثل همه ی رشته ها و کار های دیگه زیر رشته های زیادی داره، توی خیلی از اینا ریاضی بیشتر از جمع، تفریق، ضرب و تقسیم نیست و البته توی تعداد زیادیشون هم ریاضی خوبی لازمه، یادتون نره که ریاضی قابل یادگیریه ولی اینطور نیست که شما اگر ریاضیتون خوب نیست دست بکشید و احساس کنید جایی ندارید تو این شغل باحال.بیاین به یسری سوالات رایج دیگه هم جواب بدیم و ببینیم واقعیت چیه:ایا برای برنامه نویس شدن سیستم خیلی خفن و چند تا مانیتور و اینا لازمه؟خیر، بسته به کاری که میخواین انجام بدین (چه نوع برنامه نویسی شدن) که در ادامه مقاله توضیح میدم باید سیستم داشته باشید، خیلی از کارها به سیستم های آن چنانی و خفن نیاز ندارن. برنامه نویس ها همه آدم های منزوی و درون گرایی هستن؟یکی از سوالای بامزه :) برنامه نویس ها مثل همه آدمای جهان هستن، یعنی آدمن و ویژگی های شخصیتی دارن؛ بعضی درونگرا، بعضی برونگرا، بعضی حواس پرت و بعضی ها هم حواس جمع، اینا رفتار ها و ویژگی های شخصی هستن که در افراد مختلف متفاوتن.آیا حتما باید کار کردن با ویندوز (یا هر سیستم عامل دیگه ای) رو بصورت حرفه ای بلد باشم؟نه، حرفه ای لازم نیست، در حد کار کردن ساده هم بلد باشید کافیه (روشن خاموش کردن، ریستارت، نصب برنامه، درست کردن پوشه، تکون دادن موس و صد البته نوشتن با کیبورد)به من گفتن اگر کار کردن با لینوکس بلد نباشم نباید شروع کنم، این درسته؟این ازون سوالا بود ها، گنو/لینوکس سیستم عامل خوبیه و خیلی جاها به کار میاد، بعضی جاها هم بکار نمیاد، بین بعضی همکارای ما تعصب خاصی روی این سیستم عامل هست (و خیلی هم شوخی میکنن با هم)، سخت نگیرید، اگر دوست داشتید میتونید یادش بگیریدآیا میشه برنامه نویسی رو توی یک ماه تموم کنم و شروع کنم پول درآوردن؟ بستگی داره چه پولی مد نظرتون باشه، میشه ولی قطعا شما یک ماهه وارد شدید و پروژه های بزرگ که هزینه های بهتری میدن رو نمیتونید بگیرید، نه تجربه کافی دارید و نه مهارت لازم رو، همینطور کسی شمارو نمیشناسه، این یه سوال ذهن منحرف کنه، بهتر بگم یه سوال بازاریابیه، به این حرفا که به شما میگن گوش ندید، شروع کنید و تلاش مستمر داشته باشید، بعد از مدتی کارهای کوچیک کوچیک براتون میاد، شرکت های کوچیک استخدام میشید و به مرور به شرکت ها و پروژه های بزرگ هم میرسین، اینکه چقدر طول میکشه تا به پول درآوردن برسید کاملا به خودتون بستگی دارهبرنامه نویسی رو از کجا شروع کنم پس؟ بریم ادامه متن رو بخونیمیه زبان مناسب برای خودتون انتخاب کنیدهمونطور که گفتم مثل همه کارهای دیگه اینجا هم شاخه های تخصصی و مختلفی داره، به عنوان مثال خلبانی رو در نظر بگیرید، اگر شما بخاین از یه شخص خلبان اطلاعات بیشتری به دست بیارید میپرسید خلبان چه هواپیمایی هستید؟ جنگی؟ مسافربری؟ باربری؟ یا اصلا اگر هر کدوم هستید چه مدل از هواپیما هاشون رو بلدید؟ برنامه نویسی هم همینه، کلی هم زبان مختلف وجود داره، بعضی هاشون خیلی محبوبن بعضی هاشون کمتر طرفدار دارن، بعضی اصلا در دسترس همه نیستن (درون شرکتی)، بنظرم چون شروع کارتون هست طبیعتا سخته که خودتون انتخاب کنید چه زبانی کار کنید، اگر من بگم برید Python یا JavaScript یا هر زبان دیگه شما قطعا نمیدونید اینا چی هستن و کجاها بدرد میخورن، بهتره برای شروع ببینید چه کاری (حوزه ای) دوست دارید انجام بدید، مثلا دوست دارید برنامه برای گوشی های اندروید بنویسید؟ یا سایت درست کنید؟ یا برنامه های دسکتاپ (ویندوز، لینوکس و غیره) هر کدوم از اینا رو میشه با زبان های مختلفی انجام داد، حتی از بعضی زبان ها میتونید توی جاهای مختلف استفاده کنید. پیدا کردن این حوزه و زبان کار سختی نیست، اگر سوالی داشتید تو انتخاب تو بخش کامنت ها بپرسید، اگر دانش کافی داشتم حتما راهنمایی میکنمکدوم بخش بهتره؟وقتی از افراد این سوال بپرسید به جوابای مختلفی میرسید، از نظر طراحی وب بهتره، نظر یسریا روی موبایله، یا هر بخش دیگه ای، علت هم اینه که هر شخص با توجه به تجربه خودش به این سوال شما جواب میده، شما ممکنه یه برنامه نویس موبایل پیدا کنید که از درآمدش راضیه و به شما بگه حتما موبایل، یا برنامه نویس وب ناموفقی پیدا کنید و بگه که اصلا سمت وب نیاید! حرف ها خیلی متناقضه، البته آمار های کلی ای هم هست که کمک میکنه ولی نهایتا بهترین کسی که میتونه انتخاب کنه خود شما هستید، من فقط برای شروع دو تا توصیه میکنم بهتونیه چیزی شروع کنید که سریعتر از بقیه بتونید جواب بگیریدعلاقه داشته باشید بهششاید شما سرچ کنید و لیست درآمد های مختلف رو ببینید و توی اون لیست چشمتون بخوره به ++C و بگید به به، عجب درآمدی! درست هم هست ولی باید توجه داشته باشید یادگیری این زبان و نتیجه رسیدن یکم چالشی تره، اصولا میگیم Learning curve دشوار تری داره، این به این معنی نیست که شما نمیتونید یاد بگیرید و حرفه ای بشید، نه اصلا، فقط منظور اینه برای رسیدن به نتایج دلخواه و برنامه های واقعی و در نهایت درآمد یذره کارتون بیشتر طول میکشه و راستشو بخواین برای تازه کار ها دیدن نتیجه کار خیلی مهمه، نتیجه و دستاورد باعث میشه شما لذت ببرید و علاقه و پشتکارتون هم بیشتر بشه، اینم بگم خیلی سخت نگیرید برای شروع، توی زندگی خیلی اوقات اتفاق میوفته که زبانتون رو عوض کنید، یادگیری رو شروع کنید و با توجه به شرایط خودتون یه بخش رو انتخاب کنید.نظر شخصی من اینه که علاقه یکی از مهم ترین دلایل توی یادگیری هست، شاید وقتی بررسی کردید دیدید درآمد برنامه نویسی موبایل الان بهتر از وب هست (این یک مثاله صرفا) ولی شما از وب بیشتر خوشتون میاد، یعنی اگر یک برنامه موبایل درست کردید به اندازه ای که وبسایت درست کنید لذت نمیبرید، پیشنهاد من اینه کاری رو که دوست دارید انتخاب کنید، وقتی مفاهیم کلی برنامه نویسی رو یادگرفتید و ذهنتون اون شکل کلی رو گرفت عوض کردن سخت نیست، من یکلی دوست برنامه نویس دارم که از چند سال پیش تا الان بارها کارشون عوض شده، برای یادگیری لذت بیشتر بردن یکی از مهم ترین مسائله، از من گفتن بود.منابع آموزشی خوب پیدا کنیداز کسایی که به شما میگن من فلانی هستم، یکی از موفق ترین برنامه نویسان، کتاب دارم، سالهاست اینکارو میکنم و اگر دوست دارید موفق بشید فقط کافیه منو دنبال کنید و فقط از آموزش های من استفاده کنید دوری کنید، این افراد میخوان با فروختن موفقیت به شما خودشون موفق بشن، هر شب با شما لایو میزارن، پکیج های آموزشی خودشونو فقط قبول دارن و خیلی اوقات هم بقیه زبان ها رو مسخره میکنن و روی زبانی که خودشون تدریس میکنن تعصب خاصی دارن، یه مدت کار میکنن روی اینستا/سایت/یوتیوب و غیره و در نهایت یه دوره چند میلیونی میزارن و به درآمد مطلوبی برای خودشون میرسن، ببینین من منظورم افرادی نیست که واقعا برنامه نویسن و وقت آزاد گیر میارن و دوره میزارن، منظورم برنامه نویسانیه که کارشون آموزش برنامه نویسی هست قطعا کسی که برنامه نویس باشه و کار داشته باشه خیلی وقت نمیکنه هر روز پست بزاره و مطلب بزاره و لایو برگزار کنه، خیلی از برنامه نویس ها دوست دارن دوره بزارن آموزش بدن ولی در نهایت این یک کار تفریحی در وقت آزادشونه و کار اصلیشون نیست، پس گول نخورید لطفا.چطور منابع آموزشی خوب پیدا کنیم؟پیدا کردن آموزش ویدئویی، متنی یا مقاله کار سختی نیست، آموزش های پولی یا رایگان هم انگلیسی هست و هم فارسی، پیشنهاد اصلی من انگلیسیه ولی اگر زبانتون در اون حد خوب نیست با فارسی شروع کنید و حتما به فکر تقویت زبان انگلیسی هم باشید، خیلی به کارتون میاد. یادتون باشه هرکس یه سبک آموزشی داره، بعضی ها از آموزش دیدن لذت میبرن و بعضی ها از مقاله خوندن، پس روش مخصوص خودتون و چیزی که ازش لذت میبرید رو انتخاب کنید و البته به یه منبع وابسته نباشید، از منابع مختلف استفاده کنید و سعی کنید از هر آموزشی یک نکته بردارید. یکی از بهترین راه های یاد گرفتن برنامه نویسی هم انجام پروژه های کوچیک و تستی برای خودتون هست، معمولا پروژه ای که خیلیا تمرینی باهاش شروع میکنن ساختن یه Todo (وظافت) یا درست کردن یه ماشین حسابه (بسته به نوع و کارایی زبان شکلشون فرق داره یا ممکنه توی بعضی زبان ها اصلا کار درستی نباشه) ولی کلی تست پروژه های بامزه میتونین برای خودتون تعریف کنید، مهم اون تجربه و چالش هاییه که باهاشون مواجه میشید و یاد میگیرید.حواستون به خرج کردنتون باشهمنظورم از خرج کردن هم مالی هست و هم اینترنت، لازم نیست هر دوره ای دیدید بخرید یا اگر رایگان بود سریع دانلود کنید، داشتن آموزش و دوره های متفاوت باعث سردرگمی میشه و در نهایت هیچکدوم دیده/استفاده نمیشه، این موضوع در بعضی افراد هم ممکنه پیش نیاد ولی پیشنهاد میکنم یه دوره انتخاب کنید و کامل ببینید و بعد سراغ بعدی برید، یا نهایتا دو دوره همزمان ببینید، بهرحال هرطور خودتون راحت ترید ولی مراقب باشید که یوقت یه پوشه کامل آموزش داشته باشید اما چیزی بلد نباشید.چقدر طول میکشه تا به پول برسم؟ اصلا تو این شغل پول هست؟خیلی سوال کلی ای هست، بسته به زبانی که انتخاب کردید و تلاش خودتون این زمان تعین میشه، ممکنه کسی رو بشناسید که 2 ساله کار میکنه ولی هنوز درآمد نرسیده، ممکنه کسی باشه که 6 ماهه کار میکنه و درآمد داره، ولی یه بازه معقول معمولا بین 6 ماه تا یکسال اگر در مسیر درست، در وقت درست، و بصورت مستمر ادامه بدید قطعا به درآمد هم میرسید، این زمانی که گفتم برای درآمد های بالا نیست، یه درآمد معقول و درآوردن خرج زندگی منظورمه. به موقیت جغرافیایی هم بستگی داره، اگر تهران یا شهرای بزرگ ایران باشید موقعیت های کاری مختلفی چه برای کار اصلی چه برای کارآموزی هست، شهر های دیگه هم ظرفیت های خاص خودشونو دارن، شهر صرفا میتونه سرعت بده اما همه ماجرا نیست، شما به اینترنت و یک سیستم نیاز دارید.در مورد سوال دوم باید بگم بله، برنامه نویسی شغل خوبی برای زندگیه و مثل همه شغل های دیگه درآمد های مختلفی داره، از ماهی 800ت تا ماهی 50 میلیون رو من به چشم دیدم (و مطمئنا بالاترش هم هست)، عجله نکنید، ادامه بدید و میرسید.شروع کنید و خسته نشیدبرنامه نویسی یه مهارته و مثل هر مهارت دیگه ای نیاز به تلاش مستمر و تمرین و وقت گذاشتن داره، اگر شما روزی نیم ساعت برای یادگیری وقت بزارید در طول سال بیشتر از 180 ساعت میشه، اگر شما 180 ساعت درباره چیزی خونده باشید و تمرین کرده باشید قطعا یه فرقی بین شما و شخصی که کاری نکرده هست، هرچقدر این زمان رو بیشتر کنید نتیجه بیشتری میگیرید، یه مسیر درست انتخاب کنید و حتی اگر به جایی هم رسیدین بازم به یادگیری ادامه بدید، همیشه برای یادگیری و دانش بیشتر و در نتیجه موفقیت بیشتر و خوب طبیعتا پول بیشتر مطالب هست.پیشنهاد من برای انتخاب زبان و حوزه چیه؟راستش توی این زمینه و در جواب این سوال من معمولا پیشنهادم طراحی وب با HTML و CSS ، چرا؟ بنظرم زودتر میشه به نتیجه های اولیه ای رسید و یسری چیزای کلی هم یادمیگیرید، از باقی دوستام هم که میپرسم خیلی هاشون پایتون رو پیشنهاد میکنن، پیشنهادم اینه طبق همون حرفی که زدم با علاقه انتخاب کنید، یکم که راه افتادید میتونید عوض کنید.دوره های خوب پیشنهادی:دوره رایگان سایت وی لرندوره پایتون جادیدوره درک برنامه نویسی با جادیدوره طراحی الگوریتم (پایتون)زبان انگلیسیتون رو «لطفا» تقویت کنیداینو یبار گفتم ولی چون بنظرم تاکید بیشتر لازم داره یاداوری میکنم، روی زبان کار کنید، خیلی به کارتون میاد و شمارو جلو میندازه، انگلیسی زبان بین المللی هست و شما میتونید کلی آموزش و راهنما و مقاله های مختلف پیدا کنید، تقریبا همه زبان های جهان هم Document (راهنمای) خودشون رو به انگلیسی ارائه میدن.صحبت نهاییاین مطلب مجموعه ای از تجربه های شخص منه، هیچ قانون و تاکیدی بر درستی حرف های من نیست، اگر مطلب رو دوست داشتید ممنون میشم لایک کنید و اون رو با دیگران هم به اشتراک بزارید. اگر سوال داشتید من درخدمتم چه در بخش کامنت ها و چه از طریق راه های دیگهموفق باشید :)