چند نکته خیلی مهم برای اونایی که میخوان برنامه نویسی یاد بگیرن

به نام خدا.سلام.تو این پست میخوام یه چند تا نکته که به ذهنم رسید و حاصل تجربه خودم هست رو بگم. مخاطبم هم اونایی هستن که می خوان برنامه نویسی یادبگیرن و یا تازه شروع کردن به یادگیری (''تازه'' یعنی مثلاً زیر یک سال).هدف من ناامید کردن شما نیست، فقط میخوام تو این دنیای جنگل مانندِ برنامه نویسی که همه از هر طرفی به شما ''وعده'' های رنگارنگ میدن، شما رو با یه سری واقعیت آشنا کنم.شاید یه سری ناراحت بشن که چرا کاسه کوزه شان رو بهم میریزم، ولی خب به هر صورت من کاری که فکر میکنم درسته رو انجام میدم.خب بریم سراغ نکته ها.نکته ۱ : اصلا فکر نکنید برنامه نویسی سادست.البته ما اینجور جسارتی نمیکنیم به کسی و شکم ما هم اونقدر بزرگ نیست!من تو یه مقاله دیگم هم این رو مفصل گفتم. برنامه نویسی از پزشکی سخت تره! اصلا فکر نکنید که با یادگرفتن یه زبان برنامه نویسی تبدیل به برنامه نویس میشید. اصلا این شکلی نیست. شما حداقل یه مسیر ۲ ساله رو پیش رو دارید که تازه بشید یه برنامه نویس سطح متوسط که توانایی این رو داره که پروژه های در سطح متوسط رو بنویسه.تبدیل شدن به یه برنامه نویس خوب نیاز به این داره که از مسیر درستش، بصورت سیستماتیک و با نظم و حوصله و البته علاقه و تمرین زیاد، جلو برید. درواقع قدم اول خیلی مهمه و راجبش تو اون مقالم صحبت کردم و منبع عالی (و رایگان) هم پیشنهاد دادم.پس اینارو نگفتم که ناامید بشید، فقط واقعیت رو بدانید و قدم اول رو درست بردارید و عجله نکنید.نکته ۲ : فقط یادگیری یه زبان برنامه نویسی کافی نیست.همونطور که تو نکته قبلی هم گفتنم، اصلا فکر نکنید که با یادگرفتن یه زبان برنامه نویسی تبدیل به برنامه نویس میشید.شما اول باید از پایه شروع کنید و یادبگیرید که بصورت algorithmic فکر کنید و بعد از یادگیری نسبی یه زبان، تازه نوبت به اصل ماجرا میرسه! یعنی مباحثی مثل:آشنایی با سخت افزار کامپیوتریاد گرفتن اصول مهندسی نرم افزار که خیلی هم مهمه.یاد گرفتن Standard Library زبانی که یاد گرفتید.مبحث Algorithm ها و Data Structure ها، که بسیار مهم هستن.مبحث Operating System هامبحث Networking و همینطور برنامه نویسی شبکه و غیره.مبحث GUIیاد گرفتن Library ها و Framework های دیگه ای که مورد نیازه.و . . .نکته ۳ : برنامه نویسی کل ماجرا نیست.این رو بدانید که تو پروژه های متوسط رو به بالا، خودِ عملِ برنامه نویسی فقط یه بخش کوچیک از کل ماجراست. درواقع یه پروژه نرم افزاری یه lifecycle داره که programming فقط یه مرحلشه و نزدیک به آخر هم هست! همین جور نمیان بشینن پای کامپیوتر و یا علی به امید تو شروع کنن به نوشتن!راجب اینها هم تو همون مباحث اصول مهندسی نرم افزار چیزای زیادی یاد می گیرید.نکته ۴ : بیشتر از اون چیزی که فکر می کنید طول میکشه.البته اون ۳ خط اول باید ۱۰۰ خط باشن!اینم یه جورایی به نکته های قبل مربوط میشه و تا اینجا دیگه حتما فهمیدید که بیشتر از اون چیزی که فکر می کنید طول میکشه.یادگیری و مسلط شدن حداقل ۲ سال طول میکشه، اونم اگه خیلی با علاقه و پشتکار باشی.نکته ۵: نرم افزار فقط یه بخش کوچیکشه!این نکته خیلی مهمه. تو این دوره زمانه، ''مارکتینگ یا بازاریابی'' و همچنین ''تجربه کاربری (UX و UI)'' خیلی مهم تر از خود محصول هستن (برای ما ''محصول'' میشه اون نرم افزار ما).بهترین پروژه نرم افزاری دنیا رو هم اگه بسازی، اگه مارکتینگت درست حسابی و تجربه کاربریت خوب نباشه، معمولا شکست میخوری.خیلی ها ایده های خوبی دارن، خیلی ها هم اون ایده ها رو پیاده سازی هم میکنن، ولی خیلی تعداد کمی هستن که مارکتینگ و تجربه کاربریِ درست و خوب هم داشته باشن.معمولا برنامه نویس ها تو این ۲ تا ضعیفن و بهتره که کار رو به کاردان سپرد.نکته ۶ : رویای پول زیاد!چیزی که هست اینه که معمولا برنامه نویس ها به میزان کافی پول برای یه مارکتینگ درست و خوب و یه تجربه کاربری خوب (که یه ذهن هنری میخواد دیگه، نه ذهن منطقی یه برنامه نویس!) ندارن، به خاطر همین هم اکثرا یا سراغ پروژه شخصی (مثلا استارتاپ ها) نمیرن و برای دیگران کار میکنن (تقریبا مثل یه کارمند)، و یا اینکه یه گروه تشکیل میدن و گروهی یه کارایی میکنن! (که البته اونم بدون مارکتینگ و تجربه کاربریِ درست و خوب، احتمالا شکست میخوره).درواقع پرامنیت ترین شغل برای شما میشه اینکه تقریبا مثل کارمند برای کارفرما کار کنید، که درامد آنچنان زیادی هم نداره، درامد خوبیه ولی خب اون درامد رویایی میلیاردی نیست اصلا.نکته ۷ : نا امید نشین!همه اینارو نگفتم که شما رو ناامید کنم. شما اگه خوب تلاش کنید و خودتان رو تبدیل به یه برنامه نویس ماهر و با دانش و تخصص کنید، مطمئن باشید که هم جاهای خوبی کار خواهید کرد و هم همیشه دارامد خوبی خواهید داشت و زندگی نسبتا راحتی هم خواهید داشت. البته برای کسی که عاشق این کار باشه خب یه عمر سر و کله زدن با چالش های جدید هم هست که میتانه لذت بخش هم باشه.به هر حال همه چی به خود شما بستگی داره که تو این آشفته بازار چقدر از بقیه ماهر تر و متخصص تر و بهتر باشید. برای متخصص ها همیشه جا هست، اتفاقا جاهای خیلی خوبی هم هست!نکته ۸ : یه شوخی!لطفا تو مسیر یادگیری برنامه نویسی این کلمه ''زدن'' رو یاد نگیرید! آقا جان کد ''زدنی'' نیست، ''نوشتنیه'' !!!نگید کد زدم، بگید کد نوشتم.شوخی بود، هرچی دوس دارید بگید. نظر شخصی من بود فقط.بعضی مقاله های دیگه من:اصلا برنامه نویسی یعنی چه؟برنامه نویسی رو درست و اصولی یاد بگیر، مثل یه لاکپشت!۲ کلمه اساسی و مهم برای برنامه نویس های تازه کار!پارادایم های برنامه نویسی به زبان سادهچرا به UI و UX به قدر کافی اهمیت نمیدیم؟اسلام بد است یا فیزیک؟مکتب «حشمت فردوس» در روانشناسی موفقیت!!!موفق باشید، یا علی.