برنامه نویس از جلو
برنامه نویسی رو از کجا شروع کنیم؟
میخوام جواب پر تکرارترین سوالاتی که برای افراد تازه کار پیش میاد رو تو این مقاله بنویسم و توضیحاتی بدم که شاید مسیر رو برای کسانی که علاقه دارند وارد این حوزه بشن یکم روشن کنه.
قبل از هرچیز میخوام اشاره کنم که این مقاله کاملا حاصل تجربیات شخصی من بوده و تمام موضوعاتی که مطرح میشه نظرات من هست.
(خیلی زیاده حوصله ندارم بخونم) TL;DR
اول هدف خودتونو مشخص کنید، بعد از روشن شدن هدف ببینید به کدوم حوزه از برنامه نویسی علاقه دارید. مثلا حوزه وب و موبایل هم جذاب هست و هم یاد گرفتنش ساده هست. بعد ببینید شیوه آموزشی که مناسب شماست چیه؟ با دوره حضوری بیشتر ارتباط برقرار میکنید یا ویدئو آموزشی یا کتاب یا کار عملی و ... تقریبا باید توی هر کدوم یک سرکی بکشید تا متوجه بشید واقعا با کدوم راحت تر هستید. کار مهمی که باید انجام بدید اینه که ببینید با چه مدل کاری (کارمندی، فریلنس، پارت تایم، استارتاپ و ...) دوست دارید کار کنید و متناسب با اون شاخه برنامه نویسی تون و حتی زبان برنامه نویسی تون رو انتخاب کنید.
بعد شروع کنید به مطالعه و یادگیری و انجام کار. یادتون باشه، خوندن یه چیزی بدون انجام دادن اون هیچ فایده ای براتون نداره پس هر کدوم از روش های بالا که بیشتر باهاش حال کردید و انتخاب کردید حتما انجام کار رو تو الویت قرار بدید. هرچیزی یاد گرفتید همون لحظه دست به کیبرد بشید و انجامش بدید. بعد از چند ماه باید نتایج خوبی حاصل بشه البته اگر توی کار استمرار وجود داشته باشه و زود کنار نکشید. بعد از مدتی آماده ورود به بازار کار هستید ولی چون تجربه کمی دارید انتظار حقوق و دریافتی بالا نداشته باشید. حتی ممکنه مجبور بشید چند وقتی رو رایگان یا با حقوق خیلی کم کار کنید تا تجربه به دست بیارید. مثل هر کار دیگه ای این هم قسمتی از کار هست پس سخت نگیرید و با صبر ازش عبور کنید.
از کجا شروع کنم؟
خب این سوالی هست که همیشه اول از همه مطرح میشه ولی درست نیست! اول باید چرایی موضوع رو برای خودمون روشن کنیم. چرا شروع کنم؟ چرا برنامه نویسی؟ اصلا هدف چیه؟
مهم ترین چیزی که باید اول از همه به جواب اون برسیم این هست که من چرا باید توی چنین مسیری قدم بردارم و بعد از اینکه صادقانه با خودمون به جوابش رسیدیم بریم سراغ یادگیری.
باید با خودتون کاملا صادق باشید و خودتون رو گول نزنید! اگر میخواید برنامه نویسی رو برای این یاد بگیرید که صرفا خفن تر به نظر برسید، همین الان این صفحه رو ببندید و به جاش برید چندتا اصطلاح عجیب غریب یاد بگیرید و هرجا نشستید در موردشون صحبت کنید.
اما اگر هدفتون رسیدن به درآمد خوب، علاقه شخصی و ... هست باز هم باید هدفتون رو واضح تر کنید. مثلا اگر هدف شما فقط درآمد بهتره خب خیلی کار های بهتر با درآمد های بهتر و کم دردرسر تری هست که انجام بدید! یا اگر فقط به خاطر علاقه میخواید وارد اینکار بشید ممکنه بعد از یک مدت که سختی کار رو میبینید مایوس بشید.
خلاصه هدف داشتن خیلی مهمه و شاید بشه گفت مهم ترین قسمت این ماجرا همینه.
حالا از کجا شروع کنم؟
اوکی، فرض میکنیم که هدفتون رو متوجه شدید و میدونید که میخواید چیکار کنید... حالا دقیقا از کجا باید شروع کرد؟
دنیای برنامه نویسی و کامپیوتر واقعا بزرگه. حوزه های مختلفی برای کار هست از جمله برنامه نویسی وب، موبایل، سیستم عامل، شبکه، سرور و ...
در مورد هر کدوم از اینها گوگل کنید و با کارشون آشنا بشید. حتی اگر کسی رو میشناسید که داره کار میکنه برید و باهاش صحبت کنید. این به شما کمک میکنه بهتر بدونید دارید تو چه کاری وارد میشید. کار تخصصی من وب و موبایل هست و به طبع راجع به همین ها هم میتونم تخصصی نظر بدم و در مورد بقیه شاخه ها باید به متخصص خودش صحبت کنید.
برای اینکه در مورد هر کدوم یک توضیح کوتاهی داده باشم:
- سیستم: تصور کنید با یک تیم خیلی بزرگ در حاص توسعه سیستم عامل ویندوز یا iOS بودید! کار خیلی سخت،نتایج خیلی کوچیک البته با بیگ پیکچر عظیم، سرعت کم ولی درآمد خوب!
- وب: برنامه نویسی هر سرویسی که روی بستر اینترنت و وب که با مرورگر به اون سرویس دسترسی پیدا میکنید میشه برنامه نویسی وب. شامل قسمت های مختلفی میشه و تقریبا محبوب ترین شاخه برنامه نویسی هست.
- موبایل: اگر دوست دارید اپلیکیشن هایی مثل اینستاگرام یا یک ویدئو پلیر یا یه اپ یادآور کار های روزانه و ... بنویسید این شاخه برای شماست! البته دقت کنید که بعضی مثال هایی که زدم ممکنه احتیاج به برنامه نویسی سمت سرور هم داشته باشند.
- شبکه: این دیگه از اون شاخه های پیچیده و خاصه که هرکسی نمیره سمتش، مثلا برنامه نویسی برای یک روتر یا دیوایس های شبکه.
چندتا از شاخه های مهم دیگه:
یادگیری ماشین، هوش مصنوعی، بیگ دیتا، توسعه بازی، IOT یا اینترنت اشیا، روباتیک و ... که سرچ کردن در مورد هر کدوم از اون ها رو به خودتون میسپرم اما حتما جستجو کنید چون خیییلی جذاب هستند.
تیپ شغلی تون رو انتخاب کنید
یک موضوع خیلی مهم در مورد انتخاب شاخه برنامه نویسی، تیپ شغلی هست که میخواید در آینده کار کنید. مثلا روحیه یک نفر طوری هست که دوست داره هر روز ساعت ۷ صبح بیدار بشه و تا ۵ عصر کار کنه و بعدش هم برای خودش باشه و استراحت کنه که خب میشه مدل کار فول-تایم یا تمام وقت. زندگی کارمندی!
یک نفر دیگه دوست داره پروژه ای کار کنه، توی خونه که نشسته و پا روی پا انداخته یا لم داده یه کدی هم بزنه و پروژه رو برسونه و پولشو بگیره! خب این هم یک مدل دیگه است که بهش میگن فریلنس
بعضی ها هم کلا دوست دارن استارتاپ بزنن و کارآفرینی کنند و ... که باز هم روحیات خاص خودشو داره.
قرار نیست بگیم کدوم بهتره چون هر کدوم از اینها ویژگی های خودشونو دارند و تقریبا فکر میکنم واضح باشه. جایی که برای ما این تیپ شغلی مهم میشه اونجاست که این موضوع روی انتخاب شاخه یا حتی زبان برنامه نویسی که میخواید کار کنید تاثیر بسیار زیادی داره.
مثلا اگر برنامه نویس سیستمی باشید دیگه باید قید کار پروژه ای رو بزنید! یا مثلا شاید پیدا کردن یک کار تمام وقت تو حوزه اینترنت اشیا توی تهران کار بسیار مشکلی باشه.
مدل یادگیری خودتون رو پیدا کنید
تقریبا هر کدوم از ما، روشی که مطالب رو یاد می گیریم متفاوته. یکی با کتاب، یکی با ویدئو، یکی با کار عملی و ... هر کدوم از این روش ها رو امتحان کنید. من خودم با انجام دادن کار و مطالعه داکیومنت خیلی راحت تر هستم ولی ممکنه برای شما این روش اصلا جواب نده.
فراموش نکنید که منابع آموزشی مثل کتاب و دوره تخصصی و ویدئو و ... بدون انجام کار هیچ ارزشی نداره. حتما باید کار رو انجام بدید و حین انجام کار هست که به نتیجه میرسید. البته بعضی کار ها رو حتی تا مدت ها بعد از اینکه انجام دادید هم متوجه نمیشید! ولی جای نگرانی نیست چون قرار نیست از لحظه اول همه چیز رو خیلی عمیق درک کنید. به مرور براتون جا میوفته.
شروع به یادگیری کنید
شرکت تو یک دوره برنامه نویسی، خوندن یک مقاله ساده، پیاده کردن یک مثال از روی کتاب و دیدن فیلم و ... از هر روش که میتونید شروع به یادگیری کنید. اینکار رو با صبر و حوصله انجام بدید. برنامه نویسی کاریه که زمان میبره تا بتونید معنی چیز ها رو درک کنید و کاملا متوجه شون بشید پس خیلی سخت نگیرید اگر اول راه هستید و معنی همه چیز رو متوجه نمیشید. یک دلداری: شما خنگ نیستید!
نکته خیلی مهم اینه که ذهن پرسشگر داشته باشید. برای هرچیزی که براتون نا مفهوم هست جستجو کنید. همین کار باعث میشه از یک موضوع خیلی کوچیک کلی چیز های دیگه هم یاد بگیرید ولی فقط مطالعه کافی نیست، باید چیزی که یاد می گیرید رو پیاده کنید و در عمل ببینید. دستتون باید بیاد روی کیبرد
اگر نمیدونید که کدوم زبان برنامه نویسی برای شما مناسبه پیشنهاد میکنم این مقاله رو بخونید:
نتیجه محور نباشید
به نتیجه آخر کارتون توجه نکنید، مهم مسیری هست که برای رسیدن به اون نتیجه طی کردید. قطعا اولین پروژه ها و کار هاتون افتضاح از آب در میان. این کاملا طبیعیه. همه برنامه نویسی ها و طراح ها و نقاش ها و هنرمندان و ... کار های واقعا بدرد نخوری دارند و به اونا افتخار می کنند.
سوالات پر تکرار
درآمدش چطوره اینکار؟ بستگی به مدل کار کردن، تجربه تون، جایی که کار میکنید و تخصص شما داره. هم برنامه نویس فقیر و کم درآمد داریم و هم برنامه نویس پر درآمد و ثروتمند. این کاملا به شما و مدل کاری که انتخاب میکنید بستگی داره.
حتما باید ریاضی مون خوب باشه؟ خب این سوالیه که خیلی ها تو ذهنشون میاد و جوابش هم بله هست و هم نه. بله برای وقتی که شاخه برنامه نویسی خاصی رو انتخاب میکنید. مثلا هرکاری که روی بحث دیتا و یادگیری ماشین بخواد انجام بشه یا توسعه بازی خب طبیعتا ریاضی تون بهتر باشه خیلی کمک میکنه ولی مثلا برای وب و موبایل و ... نه خیلی شاید به کارتون نیاد.
[بهترین/قوی ترین/امن ترین] زبون برنامه نویسی کدومه؟ این سوال اصلا اشتباهه! هر زبون و تکنولوژی برای کاری ساخته شده و توسعه پیدا کرده و بعضی از زبون ها مثل پایتون که برای کار دیتا و یادگیری ماشین بهینه تر شدند انتخاب بهتری هستند ولی مقایسه کیفی زبون ها با هم بسیار کار اشتباهیه.
چقدر طول میکشه تا وارد کار بشم؟ اینم به خود شما بستگی داره. برای یک نفر ۳ ماه کفایت میکنه، برای یک نفر حتی ۲ سال هم کافی نیست. به پشتکار و استعداد و تلاش خودتون بستگی داره.
برای شروع کار چه چیزی احتیاج دارم؟ از نظر امکانات فیزیکی شما فقط یک لپتاپ یا کامپیوتر کاملا معمولی احتیاج دارید. نیازی به هزینه های زیاد برای تهیه سیستم خوب نیست و شروع کارتون میتونه با یک سیستم معمولی هم باشه. بقیه نیاز شما به منابع آموزشی هست که خیلی هاش رایگانه و در دسترس شما هست. هزینه زیادی هم نداره. البته اگر بخواید دوره آموزش تخصصی توی آموزشگاه یا به صورت خصوصی شرکت کنید شامل هزینه خودش میشه.
اگر سوال دیگه ای هم دارید توی قسمت کامنت ها بپرسید که اضافه کنم.
جمع بندی
برنامه نویسی یک کار با آینده بسیار روشنه. توی ایران هم شرایط مناسب و درآمد خوبی داره. ولی کاری هست که برای اینکه نتیجه بده باید صبر و حوصله داشته باشید. مثل یک کوه یخه.
مقاله های دیگر من که به این پست مرتبط هست:
مطلبی دیگر از این انتشارات
چرا باید از الگوی repository استفاده کنیم؟
مطلبی دیگر از این انتشارات
آموزش اصولی کد نویسی تمیز - بخش دوم
مطلبی دیگر از این انتشارات
توضیحی در مورد threadها در زبان جاوا