سهيل مرادی مریم‌نگاری
سهيل مرادی مریم‌نگاری
خواندن ۵ دقیقه·۵ سال پیش

برنامه نویسی رو درست و اصولی یاد بگیر، مثل یه لاکپشت!

به نام خدا.

سلام.

یه بار برای همیشه میخوام این بار رو از رو دوش خودم بردارم و بر اساس تجربه خودم به این سوال که «چطور برنامه نویسی یاد بگیرم؟» جواب بدم.

خب اول سرتیتر بخش های این مقاله:

  • خشت اول
  • دارکوب!
  • خشت دوم
  • دارکوب!
  • یه سری مهارت مهم
  • خشت آخر وجود نداره، همش دارکوبه تا آخر!
  • یه توصیه دوستانه



فقط قبل شروع ۳ تا نکته:

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



خشت اول

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

اکثر افراد بدون گذراندن این مرحله، مستقیم میرن سراغ یادگیری یه زبان مثل Python که خیلی کار اشتباهیه.

در واقع بیشتر افراد میان یه زبان برنامه نویسی رو یاد میگیرن و بعد از یکی ۲ ماه با این سوال کلافه کننده روبرو میشن که «خوب حالا که زبان فلان رو یاد گرفتم، الان چطور ایده هایی که تو ذهنم دارم رو بسازم؟» و متاسفانه چون نمیدانن چکار کنن، اکثرا برنامه نویسی رو ول می کنن و یا اینکه خیلی ناامید و سردرگم میشن.

خب دلیل چیه؟ و راه حل چیه؟

دلیل اینه که پایه قوی ندارن، یعنی اینکه یادنگرفتن مثل یه برنامه نویس فکر کنن.

راه حل هم اینه که . . . درست گفتید! اینکه بیان پایه قوی بسازن.

خب این پایه قوی رو چطور بدست بیاریم؟

راهش از دید من یه کتابه به اسم How to Design Programs ، ولی ۲ تا دوره ویدیویی تو سایت edX هستن که همین کتاب رو آموزش میدن و برای این هدف فوق العاده هستن. کاملا هم رایگان هستن:

این ۲ تا دوره رو باید به نوبت بگذرانید، اول Simple Data و بعد هم Complex Data. این دو تا دوره چنان بیس قوی برای شما میسازن که تا آخر عمر ممنونشان خواهید بود.

هرکدام از این دوره ها باید حدود ۲ یا ۳ ماه طول بکشن، پس لاکپشت باشید!

دارکوب!

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

خشت دوم

خشت دوم یعنی اینکه شما اون ۲ تا دوره رو پشت سر گذاشتین و تازه الان آماده این هستید که یه زبان برنامه نویسی مثل Python یا Java یا یکی از LISP ها یا هر زبان دیگه ای رو یاد بگیرید!

راجب این مرحله همه جا مطلب زیاده و نیاز به من نیست تقریباً.

دارکوب!

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

یه سری مهارت مهم

حالا بعد از اینکه نزدیک حدود یک سال گذشت و یکم دستتان روان شد و مهارت کسب کردید، بعدش دیگه باید برین سراغ مباحثی مثل مباحث زیر، که خیلی خیلی مهم هستن:

  • یاد گرفتن اصول مهندسی نرم افزار که خیلی هم مهمه.
  • یاد گرفتن Standard Library زبانی که یاد گرفتید.
  • مبحث Algorithm ها و Data Structure ها، که بسیار مهم هستن.
  • مبحث Operating System ها
  • مبحث Networking و همینطور برنامه نویسی شبکه و غیره.
  • مبحث GUI
  • یاد گرفتن Library ها و Framework های دیگه ای که مورد نیازه.
  • و . . .

خشت آخر وجود نداره، همش دارکوب و لاکپشته تا آخر!

خب احتمالا برای رسیدن به این مرحله یه ۲ یا ۳ سالی زحمت کشیدید.

طول میکشه ولی آخرش قشنگه!

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

ولی اهمیتِ داشتنِ یه پایه قوی تو اینه که باعث میشه تو پیشرفت و یادگیری چیزای جدید دچار مشکل چندانی نشید.

از این به بعدِ کار برای شما میشه اینکه یه تخصص برای خودتان انتخاب کنید و توی اون خیلی ماهر بشید. حالا اون تخصص میتانه یکی از اینا باشه:

  • تخصص تو Web Development
  • تخصص تو Game Development
  • تخصص تو Systems Development
  • تخصص تو Mobile Development
  • تخصص تو Desktop Development
  • تخصص تو Embedded Development
  • یا چیزای دیگه.

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

معمولا برای آدم هایی که تو یه زمینه ای واقعا متخصص باشن، همیشه کار و موقعیت های خوب و عالی وجود داره.

یه توصیه دوستانه

علاوه بر لاکپشت بودن و دارکوب بودن، یه مفهومی هم تو بدنسازی هست به اسم Progressive Overload که نه تنها تو برنامه نویسی بلکه تو همه جای زندگی معجزه می کنه!

این یعنی چه حالا؟ یعنی اینکه کم کم که رو به جلو داری میری، کم کم سخت ترش هم بکن برای خودت!

یعنی اینکه همینطور که روبه جلو حرکت میکنی، پروژه ها و تمرین هایی هم که انجام میدی سخت تر بشه همیشه. با انجام دادن کار های سخت تره که آدم پیشرفت میکنه.



بعضی مقاله های دیگه من:


یا علی.

برنامه نویسیprogrammingعلوم کامپیوترcomputer scienceنرم‌افزار
در حال یادگیری دانش‌ها یا در حال جمع‌آوری کتاب‌ها؟
شاید از این پست‌ها خوشتان بیاید