علی آیتی
علی آیتی
خواندن ۶ دقیقه·۳ سال پیش

نقشه راه برنامه نویسی: حتی برای شما دوستِ عزیز!

تصویر از toptal.io
تصویر از toptal.io

یکی از سوالاتی که خیلی از من پرسیده شده و قطعا ممکنه سوال شما هم باشه اینه:

چجوری می تونم برنامه نویس بشم؟

اما قبل از اینکه این سوال رو جواب بدم، سعی کنید سوال زیر رو جواب بدید:

آیا به برنامه نویسی علاقه کامل دارم؟

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

واقعا نمی دونم به برنامه نویس شدن علاقه ای دارم یا نه!

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

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

پیشنهاد دیگه ای که برای این دسته از دوستان دارم اینه که، به جز برنامه نویسی، بر روی سایر مهارت هایی که میشه با کامپیوتر به دست آورد تحقیق کنید. مانند:

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

سخن پایانی این قسمت:

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

نقشه راه

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

قدم اول: مفاهیم اولیه

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

  • قسمت های اصلی کامپیوتر (شامل: CPU و رم و هارد و پاور و مادربورد و گرافیک و ورودی و خورجی ها)
  • تعریف سخت افزار و نرم افزار
  • تاثیر فناوری های مرتبط به کامپیوتر در حوزه های مشاغل
  • سیستم عامل چیست و ویژگی های آن
  • مفاهیم اولیه شبکه های کامپیوتری
  • مقایسه سیستم عامل ها و کاربرد هریک
  • پروتکل چیست و انواع پروتکل های پر کاربرد
  • زبان های برنامه نویسی متداول و کاربرد هر کدام
  • مفاهیم زبان های سطح بالا و سطح پایین و تفاوت آن دو
  • مفاهیم کامپایلر و مفسر، کد ماشین
  • مفاهیم جبر بولی و سیستم اعداد باینری ( صفر و یک)
  • تقویت زبان انگلیسی (اگر ضعف دارید)

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

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

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

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

قدم سوم: یادگیری زبان برنامه نویسی انتخاب شده

  • ساختار کلی زبان برنامه نویسی انتخاب شده
  • انواع داده ها: int, float, double, long, short, string, Boolean
  • عملگر های محاسباتی: چهار عمل اصلی، مود یا باقی مانده (%)، توان (^)
  • متغیر و اصول نام گذاری آن
  • تبدیل انواع داده ها به یکدیگر: به اصطلاح Type Casting
  • عملگر های مقایسه ای: برابری، بزرگتری، کوچکتری،.....
  • لیست ها و آرایه ها
  • مپ یا دیکشنری
  • ورودی و خروجی: داده هایی رو در کنسول(ترمینال) از کاربر بگیرید و یا به او نشان دهید.
  • حلقه ها: حلقه for، حلقه while، حلقه do-while
  • دستورات شرطی: دستورات if، if-else, switch-case
  • تابع
  • کار با فایل
  • تحقیق در مورد امکانات مخصوص زبان برنامه نویسی انتخاب شده و یادگیری آن ها: مثلا توابع خود زبان یا به اصطلاح توابع built-in

قدم چهارم: قدمِ سخت ماجرا

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

  • سایت کویرا (ایرانی)
  • سایت TopCoder
  • سایت HackerRank
  • و...

پیشنهاد میکنم در این قدم حداقل 100 سوال مختلف رو حل کنید و حسابی خودتون رو به چالش بکشید.

قدم پنجم: قدمی طولانی و درازمدت :(

در این قدم یادگیری و تمرین کردن با هم باید اتفاق بیوفته چون حجم مطالب زیاده و اگر تمرین نکنید تبدیل میشه به نقطه ضعف تون! حتما حتما حتما تمرین کردن رو جدی بگیرید!

  • یادگیری و تمرین سوکت (Socket Programming)
  • یادگیری و تمرین شی گرایی: کلاس، اصول شی گرایی و...
  • یادگیری و تمرین ساختار های داده: مثل صف، پشته، درخت گراف و....
  • یادگیری و رعایت اصول کدنویسی تمیز یا Clean Code
  • یادگیری و تمرین الگوریتم های معروف: DFS, BFS, A-Star, Sorting

قدم شیشم: پیش به سوی بی نهایت و فراتر از آن

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

  • توسعه وب سمت کاربر یا Front-End
  • توسعه وب سمت سرور یا Back-End
  • توسعه نرم افزار های موبایل: اندروید، آی او اس
  • توسعه نرم افزار های دسکتاپ
  • توسعه بازی
  • هوش مصنوعی
  • یادگیری ماشین
  • و کلی حوزه های مختلف و جذاب

سخن پایانی

در پایان توجه شما رو به اثر دانینگ کروگر جذب می کنم:

تصویر از sinapress.ir
تصویر از sinapress.ir


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

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

رمز پیشرفت = تمرین زیاد + یادگیری همیشگی

با آرزوی بهترین ها، اون بالا مالاها ببینمتون ?

ارتباط با من

من در لینکدین: seyyedaliayati

من در اینستاگرام: cpt9m0

منابع



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