برنامه‌نویسی رو از کجا شروع کنیم؟

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

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

اینایی که این زیر می‌نویسم کمک می‌کنه مسیر رو با اشتیاق ادامه بدین و ذائقه‌ی خودتون رو پیدا کنید:

  • در هنگام روبرویی با ابزارها یا زبان‌های جدید گاهی دچار ترس می‌شیم. از حجم چیزایی که نمی‌دونیم وحشت می‌کنیم. از اینکه چقدر عقب هستیم، و اینکه آیا فرصت می‌کنیم این همه رو یاد بگیریم، دچار هراس می‌شیم. این ترس و نگرانی طبیعی‌ست. این استرس‌ها موزیک متن زندگی برنامه‌نویس‌هاست. برنامه‌نویس‌های خوب این ترس رو کمی دستکاری می‌کنن. بهش معناهایی جدید می‌دن. برخی این رو به کنجکاوی تبدیل می‌کنن. برای برخی فراگیری یک زبان یا فناوری، مث متبحر شدن در یک بازی کامپیوتری‌ست. برای برخی دیگه خفن بودن ارزشه. برخی دوست دارن راه‌حل‌های شگفت‌انگیز توسعه بدن. برخی دوست دارن پول‌های بهتر بسازن. انگیزه‌های متفاوتی برای غلبه بر این ترس وجود داره. پس نترسین. برین جلو. همین که این متن رو می‌تونید بخونید، نشون می‌ده فارسی بلدین. زبان‌های دیگر رو هم مث فارسی آرام آرام یاد می‌گیرین.
  • زبان‌های برنامه‌نویسی مث زبان‌های طبیعی کاربردهای متفاوتی دارن. مثلا این متن به فارسی نوشته شده. فارسی زبانی‌ست که باهاش راحتم. اما برای اینکه پول دربیارم باید از انگلیسی استفاده کنم. در عین حال اگر گاهی بتونم به فرانسه خوش‌و‌بش کنم کارم بهتر پیش می‌ره. چندکلمه‌ای هم اسپانیایی تمرین می‌کنم گاهی. اسپانیایی زبان زیبایی‌ست. امروز برام کاربردی نیست. درعین‌حال می‌دونم کامل‌ترین زبان دنیا عربی‌ست. ولی من کاری باهاش ندارم. اونم کاری با من نداره. همچنین می‌دونم ژاپنی بسیار مختصر و مفیده. ولی کاری با ژاپنی‌ هم ندارم. در طول روز شاید ۶۰ درصد مکالمه‌هام به فارسی‌ست. ۳۵ درصد انگلیسی. ۴ درصد فرانسه و حدود ۱ درصد اسپانیولی. اینکه ۶۰ درصد فارسی‌ست بخاطر اینه که در خانواده‌ی فارسی زبان بزرگ شدم. بیشتر رفقام و تمام فامیلم فارسی صحبت می‌کنن. زبان‌های برنامه‌نویسی هم همینطور هستن. با برخی‌شون خیلی راحت هستیم. با برخی‌شون راحت می‌تونیم پول دربیاریم. همیشه مشتاقیم تا زبان‌های دیگری رو یاد بگیریم. در عین حال می‌دونیم زبان‌های بهتری هم وجود دارن. خلاصه در مسیر فراگیری زبان برنامه‌نویسی، باید به ذائقه‌ی خودمون و نیاز مارکت توجه کنیم. خوبه بتونید با زبان/آموخته‌هاتون کمی پول بسازین. چون پول راه ارزش رو پیدا می‌کنه. مث آب که گودال رو پیدا می‌کنه. اگر با زبان/فناوری‌‌ای پول خوبی می‌سازین و راحت کار می‌گیرین، اون زبان بهترین زبان اون مقطع از زندگی شماست. لذت پول ساختن با هر زبان، بخشی از لذت کدنویسی با اون زبانه. پس به کسب درامد مث یک قطب‌نما که مسیر درست رو نشون می‌ده، نگاه کنید.
  • خوبه از مثال‌های ساده شروع کنیم. خوبه خودآموزها رو دنبال کنیم. توی اینترنت نمونه فراوان داریم. دوره‌های آشنایی با برنامه‌نویسی و درک برنامه‌نویسی جادی برای شروع خیلی خوبن.
  • خوبه بعد از اینکه کمی راه افتادیم برای خودمون پروژه‌هایی خیالی تعریف کنیم و بریم جلو. من قدیما با نوشتن یک دفتر تلفن و آدرس شروع می‌کردم.
  • خوبه عجله نکنیم. چون با عجله به جایی نمی‌رسیم. هر چه بیاموزیم و هرچه بدونیم و هرچه بنویسیم، باز هم در ابتدای راه هستیم. پس بهتره با مسیر لذت ببریم. خوبه با خود فراگیری سرگرم بشیم و کنجکاو بمونیم. خوبه صبور و آرام جلو بریم.
  • خوبه کدهای آماده‌ی دیگران از پروژه‌های خوب (روی گیت‌هاب نمونه فراوان پیدا می‌شه) رو بخونیم و ایده بگیریم.
  • خوبه به جای اینکه به هر مشکلی که بر می‌خوریم سوال کنیم، یاد بگیریم که راهنما(Help) و مستندات بخونیم. خوبه قبل از اینکه سوال بپرسیم یا گوگل کنیم، فکر کنیم. کم کم خوندن لاگ مث خوندن روزنامه ساده می‌شه برامون.
  • در حالی که هر روز ابزارها و زبان‌های متفاوت و متنوع به بازار میاد، اصول پایه‌ی داستان چندان تغییر نمی‌کنه. اگر عمیق یاد بگیریم، مث راننده‌ای می‌شیم که براش راندن اتوموبیل‌های متفاوت، کاری آسان و ناخودآگاه می‌شه. هر چه عمیق‌تر یادبگیریم راحت‌تر به فناوری‌های دیگر سوئیچ می‌کنیم.
  • برای تمرین بد نیست اگر چرخ رو دوباره اختراع کنیم. ولی این ایده که همه چیز رو باید از نو بنویسیم ایده‌ی خطرناکیه و زمان و هزینه‌های بسیاری رو به فنا می‌ده. پس خوبه حتی‌المکان از پروژه‌های آماده (متن‌باز) و چارچوب‌ها استفاده کنیم. چارچوب‌های خوب به ما کمک می‌کنه بهتر فکر کنیم.
  • وقتی خسته می‌شین از کیبرد فاصله بگیرین تا دوباره دلتون براش تنگ بشه. مسابقه‌ای در کار نیست. فرصت زیاده. صبور و با حوصله یاد بگیرین.
  • از کاراموزی و شاگردی کردن نترسین. از اشتباه کردن نترسین. از اینکه اشتباهتون رو ببینن، نترسین. وسواس نداشته باشین. دنیای وسواسی‌ها کوچیک و محدوده. دل به دریا بزنید و جلو برین.
  • از هزینه کردن برای یادگیری نترسین. تمام ثانیه‌هایی که صرف یادگیری می‌کنیم پس انداز می‌شه (حتی اگر حافظه‌ی درست و درمونی نداشته باشیم).