نقشه راه برنامه نویسی

برنامه‌نویسان حرفه‌ای و نیمه‌حرفه‌ای معمولا با سوالات تکراری و زیادی از طرف علاقه‌مندان به برنامه نویسی روبه‌رو می‌شن. بعضی هاشون رو در ادامه لیست میکنم:

برنامه نویسی رو از کجا شروع کنم؟
نقشه راه یادگیری برنامه نویسی چیه؟
چقدر طول می‌کشه تا یه برنامه‌نویس خوب بشیم؟
میزان درآمد یک برنامه‌نویس چقدره؟
چه زبان برنامه‌نویسی برای شروع انتخاب کنم؟
و ده ها سوال دیگر…

در فصل 6 کتاب الگوریتم و فلوچارت فصلی رو با عنوان “ورود به دنیای برنامه‌نویسی”  اختصاص دادم که  تا حدودی به این پرسشها پاسخ داده شده . من در این مقاله سعی میکنم که کلی‌تر به این موضوع بپردازم تا شما راحت‌تر مسیر خود را انتخاب کنید. هدف اصلی این مقاله بیان ساده و قابل فهم مطالب با پرهیز از اصطلاحاتیه که ممکنه شما رو در ابتدای راه گیج کنه.

لپتاپ - برنامه نویسی

قبل از شروع بحث این نکته رو بگم که علاقه و پشتکار در برنامه نویسی فوق العاده مهمه. در هر پروژه‌ای بیشتر وقت برنامه‌نویس صرف یافتن و رفع  خطاهای برنامه‌نویسی میشه که ممکنه ساعتها و یا روزها وقت شما را بگیره.  پس به عنوان اولین نکته در نظر داشته باشید که صبر و پشتکار  لازمه یک  برنامه‌نویسه!

قدم صفرم - یادگیری زبان انگلیسی!

نترسید! قرار نیست زبان رو در حدی یاد بگیرید که بتونید انگلیسی صحبت کنید، بنویسید و یا فیلم های خارجی رو بدون زیرنویس ببینید. اصلا قرار نیست اول زبانتون رو تقویت کنید بعد بیایید سمت یادگیری زبان انگلیسی. اما یه چیزی رو گوشه ذهنتون داشته باشید:

اگر میخواهید برنامه نویس موفقی بشید باید یادگیری زبان رو در کنار یادگیری برنامه نویسی شروع کنید. چون همیشه آموزشهای فارسی در اختیار شما نیست و بدون زبان نمی‌تونید در انجمنهای معروف برنامه‌نویسی دنیا فعالیت کنید. اگر مهارتی در زبان انگلیسی ندارید و یا حتی بدتر از اون فکر میکنید استعدادی در زمینه یادگیری زبان ندارید خیلی نگران نباشید. وارد برنامه‌نویسی که بشید خودتون متوجه می‌شید یادگیری زبان اون قدرها هم که فکر میکنید سخت نیست.

مداد و کتاب

شما برای برنامه نویسی در این حد به زبان نیاز دارید که بتونید یه متنی رو بخونید و متوجهش بشید. برای شروع شاید گوگل ترنسلیت هم کمکتون کنه. به زودی به پست آموزشی آماده میکنم و نکاتی بهتون میگم که چطور زبان انگلیسی رو در حدی که در برنامه نویسی نیاز دارید یاد بگیرید.

قدم اول - الگوریتم و فلوچارت

فرقی نمیکنه شما چه زبان برنامه نویسی رو برای شروع انتخاب کنید. هر زبانی رو انتخاب کنید اول باید اصول و مفاهیم برنامه نویسی رو یاد بگیرید تا وقتی بهتون یک مساله میدن، بتونید به اون مساله فکر کنید، حلش کنید، و در نهایت کدنویسی کنید. وقتی شما اصول برنامه نویسی رو بلد باشید یادگیری هر زبان برنامه نویسی براتون خیلی راحت تر و شیرین تر میشه. پس این قدم رو جدی بگیرید. من قبلا یه مقاله با عنوان شروع برنامه نویسی نوشتم و اونجا همه نکات و منابعی که برای یادگیری الگوریتم و فلوچارت نیاز دارید رو معرفی کردم. پیشنهاد میکنم اون مقاله رو بخونید.

انتخاب

در الگوریتم و فلوچارت هنر فکر کردن و مساله حل کردن رو یاد میگیرید؛ اینکه چه جوری به یک مساله فکر کنید، تجزیه و تحلیل کنید و بتونید قدم به قدم مراحل حل مساله رو بنویسید. شما اگر قدم اول رو محکم بردارید نیمی از سختی اولِ راه رو رفتید.

پیشنهاد من
کتاب

کتاب الگوریتم و فلوچارت، تجربه سالها تدریس من و دوست خوبم افشین امینی در زمینه برنامه نویسی است. در این کتاب به زبان ساده مفاهیم و اصول برنامه نویسی را در قالب 6 فصل و بیش از 100 مثال و تمرین بیان کرده ایم. ویژگی مهم این کتاب وسواس و دقت در انتخاب و چینش سوالات از ساده به سخت است به طوری که خواننده با خواندن آموزشها و مثالهای این کتاب هنر حل مساله را یاد میگیرد

کتاب الگوریتم و فلوچارت

قدم دوم - هدفتان را مشخص کنید

حالا وقت این رسیده که یک زبان برنامه نویسی رو برای شروع انتخاب کنید. اول باید به این سوال جواب بدید که برای چه پلتفرمی میخواهید برنامه نویسی کنید؟ پلتفرم های مختلف از این قرار هستند:

– وب (مثل وبسایت‌ها)
– موبایل (اندروید، iOS)
– دسکتاپ  (ویندوز، مک، لینوکس)
آیا شما به طراحی سایت علاقه‌مندید؟ یا دوست دارید اپلیکیشن موبایل بنویسید و در مارکت‌ها منتشر کنید؟ نرم‌افزارهای تحت ویندوز چطور؟ بازیسازی؟ هوش مصنوعی؟

 پاسخ به این سوالات می‌تونه در انتخاب مسیرتون به شما کمک کنه.

دانشگاه برنامه نویسان نقشه راه برنامه نویسی

مشکلی که اینجا پیش میاد اینه که بعضی از بچه ها نمیدونن به کدوم شاخه علاقه مندن. بهتون حق میدم. ممکنه همه این شاخه ها براتون جذاب باشه، یا حتی بعضی هاش گنگ باشه و دقیقا ندونید چیه. باید دانشتون رو نسبت به این موارد زیاد کنید. اینکه شما الان این مقاله و یا مقالات مشابه رو دارید میخونید یعنی تو مسیر درستی هستید. پس ادامه این مقاله رو بخونید.

قدم سوم - انتخاب زبان برنامه نویسی

بعد از اینکه هدفتون رو انتخاب کردید باید زبانهای برنامه نویسی که در راستای هدفتون وجود داره رو بشناسید. تعصب رو بذارید کنار، بهترین زبان برنامه نویسی به معنی عام وجود نداره. هیچ کسی نمیتونه ادعا کنه مثلا پایتون بهترین زبان برنامه نویسیه. پایتون یکی از انتخاب های خوب در هوش مصنوعیه اما یک انتخاب اشتباه در بازیسازیه. پس باید برید روی حوزه ای که علاقه دارید تمرکز کنید و مناسب ترین زبان برنامه نویسی به خودتون رو انتخاب کنید

 

برنامه نویس
  • اگر علاقه مندید که وارد حوزه طراحی سایت بشید پیشنهاد میکنم مقاله نقشه راه طراحی سایت رو بخونید. اونجا زبانهایی که در این مسیر نیاز دارید یاد بگیرید رو معرفی کردم.
  • اگر هم علاقه مندید وارد دنیای برنامه نویسی اندروید بشید مقاله نقشه راه برنامه نویسی اندروید رو بخونید

مقالاتی که تحت عنوان نقشه راه نوشته شدن از این جهت که یک دید کلی نسبت به موضوع پیدا میکنید خوبه، اما یه مشکلی داره و اونم اینه که وقتی اولین بار مثلا نقشه راه طراحی سایت رو می بینید با خودتون میگید اووووه! چه خبره؟! من باید این همه زبان های مختلف یاد بگیرم؟ از تعدد زبانها نترسید و خودتون رو گیج نکنید، اول اینکه شاید هیچ وقت نیاز نشه همه این زبانها رو یاد بگیرید و اگر لازم هم بشه نترسید، به وقتش یاد میگیرید. قرار نیست روز اول همه اینا رو یاد بگیرید!

آموزشهای برنامه نویسی من رو در سایت و کانال یوتیوبم میتونید دنبال کنید:

جاوا اسکریپت

جاوا اسکریپت

سی‌پلاس‌پلاس

قدم چهارم - شروع به یادگیری کنید

مشکل بزرگی که در ابتدای راه برنامه نویسی ممکن است گریبان شما رو بگیره شَک  و دودلیه! یعنی مثلا شما بر اساس علاقه و پرس‌وجوهایی که کردید جاوا اسکریپت رو انتخاب می کنید. دو هفته بعد با یکی از دوستاتون که برنامه‌نویسی اندروید کار می‌کنه صحبت می‌کنید و متوجه می‌شید درآمد خوبی از اندروید کسب کرده!  جاوا اسکریپت رو کنار می‌گذارید و به سراغ اندروید می‌رید! و مدتی بعد در روزنامه آگهی استخدام چند شرکت رو می‌بینید که همگی متقاضی نیروی متخصص جاوا اسکریپت هستند و شما اینگونه برداشت می‌کنید که جاوا اسکریپت بازار بهتری داره!

موشک - شروع برنامه نویسی

در توضیح این مشکل ذکر چند نکته مهمه:

 اول اینکه شما اگر در یک حوزه برنامه‌نویسی وارد شدید و در اون حوزه متخصص شدید قطعا بازار کارش رو هم پیدا می‌کنید و به درآمد مناسب می‌رسید. شاخه به شاخه شدن در برنامه نویسی تنها سرعت پیشرفت شما رو کم میکنه.

نکته بعد اینکه قرار نیست هر زبانی رو که در ابتدا انتخاب کردید تا آخر با اون زبان بمونید. همانطور که قبلا هم اشاره شد شما اگر یک زبان برنامه‌نویسی رو به خوبی یاد بگیرید یادگیری زبان جدید دشوار نیست. چه بسا اینکه شما نمیتونید خودتون رو محدود به فقط یک زبان کنید. مثلا شما اگر بخواهید برنامه نویسی اندروید کار کنید باید جاوا، SQL و PHP هم یاد بگیرید

پس خیلی روی انتخاب زیان برنامه‌نویسی وسواس به خرج ندهید و هر چه زودتر شروع به یادگیری کنید. خوشبختانه منابع یادگیری به صورت رایگان و یا با صرف هزینه کم در دسترس است. اگر در خواندن مطالب انگلیسی مشکلی ندارید سایتهای مثل کد آکادمی (Code Academy) ، کورسرا (Coursera)  و خان آکادمی (Khan Academy) منابع بسیار خوبی هستند.

آموزشهای من رو در  یوتیوب  اینستاگرام تلگرام دنبال کنید

قدم پنجم- یک پروژه تعریف کنید

بهترین شیوه برای یادگیری بهتر یک زبان برنامه‌نویسی اینه که بعد از یادگیری اصول اولیه اون  زبان، یک پروژه برای خودتون تعریف کنید و درجهت تکمیل پروژه شروع به یادگیری کنید.

مثلا اگر شما میخواهید PHP یاد بگیرید نیازی نیست همه توابع و کتابخانه های php رو بلد باشید. که اگر بلد باشید هم ممکنه در آینده در هیچ پروژه ای ازش استفاده نکنید. پس بهتره یادگیری رو در خدمت پروژه ای که خودتون تعریف میکنید قرار بدید. مثلا یک پروژه فروشگاهی برای فروش یک محصول خاص برای خودتون در نظر بگیرید و در راستای پیاده‌سازیِ سایت شروع به یادگیری php کنید. در این مثالی که مطرح شد شما علاوه بر php حداقل به یادگیری html، css  و javascript نیاز دارید. اگر با دیدن این 4 زبان برنامه نویسی و تصور اینکه باید این زبانها را یاد بگیرید خسته شدید باید یکبار دیگر جمله ابتدای بحث را یادآوری کنیم: علاقه و پشتکار در برنامه نویسی فوق العاده مهمه!

مداد - تعریف پروژه

اگر شما قصد دارید یک دوره آموزشی انتخاب کنید و از روی اون دوره برید جلو (چه دوره رایگان و چه پولی) حتما پروژه محور بودن دوره رو مد نظر داشته باشید. یعنی یکی از معیارهای مهم در انتخاب دوره رو روی این بذارید که آیا دوره پروژه محوره؟ هر جلسه یا چند جلسه یک بار تمرین برای شما در نظر گرفته؟

نتیجه گیری و چند توصیه

در این مقاله سعی کردم با زبانی ساده چهارچوب و نقشه راه برنامه نویسی رو براتون ترسیم کنم. ساده انگارانه است که انتظار داشته باشید با خوندن این مطلب زبان برنامه نویسی محبوب و مورد علاقه خودتون رو پیدا کنید. حتما لینکهایی که در این مقاله براتون قرار دادم رو بررسی کنید و با برنامه نویسانی که دور و برتون هستند مشورت کنید و باهاشون صحبت کنید تا اطلاعات بیشتری پیدا کنید.در ادامه چند تا توصیه میخوام بهتون کنم که گوشه ذهنتون داشته باشید:

اخطار

وقتی میخواهید یک زبان برنامه نویسی رو انتخاب کنید لازمه که سرچ کنید، از دوستانتون مشورت بگیرید و اطلاعات کسب کنید. اما این وسط ممکنه یه مشکلی پیش بیاد و اونم اینه که زمان زیادی ازتون گرفته بشه. خیلی از دانشجوها رو دیدم که حتی ماه ها درگیر این موضوع شدن و بعد از یه مدت اون انرژی و انگیزشون رو از دست دادن. اگه تو این مرحله گرفتار شدید وسواس رو بذارید کنار و یک زبان انتخاب کنید. چه طوری؟ مثلا دانشجویید و تو دانشگاه پایتون یا سی پلاس پلاس بهتون یاد میدن؟ همون رو انتخاب کنید و شروع کنید. دوست صمیمیتون جاوا کار میکنه؟ جاوا رو انتخاب کنید و رو کمک دوستتون حساب باز کنید. یه دوره آموزشی خیلی خوب از php دارید؟ وقت رو هدر ندید.

اگر زبان برنامه نویسیتون رو به این دلیل انتخاب کردید که تو دانشگاه بهتون درس میدن به هیچ وجه به آموزش استادتون در دانشگاه اکتفا نکنید. شما خیلی فراتر از درس دانشگاهیتون باید برنامه نویسی رو یاد بگیرید. من با این شیوه فقط خواستم بهانه ای بهتون بدم که زودتر زبان برنامه نویسیتون رو انتخاب کنید

کار گروهی

وقتی میخواهید برنامه نویسی رو شروع کنید ممکنه با چالشهای زیادی روبرو بشید. به همین دلیل بهتره در ابتدای مسیر تنها نباشید. میتونید با دوستاتون یه تیم تشکیل بدید و به هم کمک کنید. اگر برنامه نویس حرفه ای یا حتی متوسطی رو میشناسید سعی کنید باهاش لینک برقرار کنید و سوالاتتون رو ازش بپرسید. یه چیز رو صادقانه بهتون بگم، برای شروع برنامه نویسی لازمه بعضی جاها پر رو باشید! خیلی از آدمای دور و برتون دوست دارن به شما کمک کنن که زودتر برنامه نویس بشید، پس اگر سوالی براتون پیش اومد با رعایت ادب و احترام جوری که زیادی هم وقتش رو نگیرید سوالاتتون رو بپرسید. بعضی وقتا سوالای پیش و پا افتاده ای برای شما پیش میاد که حتی گوگل هم نمیتونه کمکتون کنه. چون ممکنه از یه بی دقتی ساده بوجود اومده باشه و یه نفر باید کدتون رو ببینه تا کمکتون کنه.

گرافیک - فوتوشاپ - ایلوستریتور

اگر دانش آموزید، یا دانشجویید و یا زمان کافی برای یادگیری نرم افزارهای دیگه رو دارید پیشنهاد میکنم یکی از نرم افزارهای گرافیکی (فوتوشاپ، ایلوستریتور، فیگما و یا XD) رو یاد بگیرید. جدا از اینکه این نرم افزارها به تنهایی میتونن بازار کار خودشون رو داشته باشن به شما به عنوان برنامه نویس هم یه توانمندی مضاعف میده. فرض کنید شما میخواهید یه اپلیکیشن موبایل بنویسید. روش اصولی اینه که اول طرح رو در یکی از نرم افرارهای گرافیکی طراحی کنید و بعدش برید سمت پیاده سازی.

دقت کنید که یادگیری این نرم افزارها برای یک برنامه نویس ضروری نیست. چون در شرکت های برنامه نویسی یک موقعیت شغلی برای استخدام این نیروها وجود داره. از نظر زمانی هم یادگیری این نرم افزارها در اولویت نیستن. اما بد نیست این توانمندی رو در گوشه ذهنتون داشته باشید که اگر موقعیت و یا زمان مناسبی برای یادگیری پیش اومد از دستش ندید.​

سوال

ممنون که تا اینجا همراه من بودید. اگر در زمینه شروع برنامه نویسی سوالی دارید در قسمت نظرات سوالتتون رو بپرسید. حتما سوالات شما رو میخونم و بهشون جواب میدم. اگر هم فکر میکنید این مقاله برای دوستانتون مفیده، باهاشون به اشتراک بذارید