codingcogs' logo
Where do I start programming post cover

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

اگر قصد ورود به دنیای برنامه‌نویسی را دارید یا به تازگی به این دنیا وارد شده‌اید این مقاله برای شماست!
در این مقاله چند مسئله‌ی مهم را بررسی می‌کنیم:

  • ذهنیت برنامه‌نویسی
  • هدف از برنامه‌نویسی
  • روش‌های یادگیری و تمرین
  • رفع مشکل و پیدا کردن شغل

پس از خواندن این مقاله راه شما برای موفقیت ساده‌تر و قابل دستیابی‌تر خواهد شد. این مقاله شاید به نظر کمی طولانی باشد اما مطمئن باشید که اولین و آخرین مقاله‌ای است که در این زمینه به آن نیاز خواهید داشت.

مقدمه

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

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

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

قبل از برنامه‌نویسی

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

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

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

در نهایت احساس رضایت بعد از حل مسئله بعد از چند ساعت، احساسی است که هر برنامه‌نویسی بارها آن را تجربه می‌کند و می‌شناسد و دوست دارد؛ مطمئن باشید که ارزشش را دارد!

مسئله‌ی اصلی

کدام زبان برنامه‌نویسی را اول یاد بگیرم؟

رایج‌ترین سوال برای کسانی که قصد شروع برنامه‌نویسی را دارند همین است. جواب این سوال ساده‌تر از چیزی است که فکر می‌کنید:

آنقدری که فکر می‌کنید اهمیت ندارد!

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

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

پروژه یا تمرین؟

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

قرار نیست یک دیجیکالا یا اسنپ دیگر بسازید. به جای این کار با تمرین‌های ساده‌تر یا پروژه‌های خیلی کوچک شروع کنید. در ابتدای کار این تمرین‌ها مهارت search کردن را در شما تقویت می‌کنند و یاد می‌گیرید که راه‌حل‌های مختلف و مناسبی پیدا کنید و تئوری‌هایی که یاد گرفتید را به صورت عملی و کاربردی پیاده کنید. مراحل توسعه‌ای که باید یاد بگیرید شامل ساخت( build )، تست( test ) و رفع خطا ( debug ) هستند.

اولین خط کد

بعد از انتخاب زبان برنامه‌نویسی و قبل از نوشتن اولین خط برنامه، نوبت نصب و راه‌اندازی محیط توسعه( development environment ) است؛ این کار شاید کمی فنی و ترسناک به نظر برسد ولی واقعا ساده است. شما به 2 چیز نیاز دارید:

  • نرم‌افزار نوشتن کد یا code editor
  • ابزاری برای اجرای کد ( runtime یا compiler )

یک code editor یک نرم‌افزار نوشتن کد است و معمولا برای شروع باید با توجه به زبان برنامه‌نویسی خود آن را انتخاب کنید. معمولا اکثر تازه‌کارها از Visual Studio Code (VS Code) به عنوان اولین ادیتور خود استفاده می‌کنند.

پس از انتخاب code editor باید بر اساس زبانی که انتخاب کرده‌اید یک runtime یا compiler نصب کنید. مثلا پایتون یک زبان مفسری است و برای اجرای آن نیاز به runtime دارید. البته گاهی روش‌های بهتری نیز وجود دارند. مثلا در دوره‌ی کارگاه پایتون ما از Anaconda در ابتدای کار استفاده کرده‌ایم که با نصب آن هم runtime پایتون نصب شود و هم چند code editor در اختیار شما قرار بگیرد و سپس در اواسط دوره به VS Code مهاجرت می‌کنیم.

anaconda navigator  براش شروع برنامه نویسی

بعد از راه‌اندازی محیط توسعه نوبت به تست آن می‌رسد. برای اینکه درستی این مسئله را تست کنیم از سنت دیرینه‌ی برنامه‌نویسان یعنی نمایش "Hello, World!" در خروجی استفاده می‌کنیم. مثلا کد زیر را در زبان پایتون ببینید:

print("Hello World!")

وقتی این کد اجرا شود یعنی که دیگر محیط توسعه‌ی ما آماده است و می‌توانیم یادگیری را شروع کنیم. اجرای همین کد یک قدم بزرگ در یادگیری است. بعد از این نقطه می‌توانید متن "Hello, World!" را تغییر دهید یا آن را در چند خط چاپ کنید یا در آن عدد قرار دهید. بخشی از برنامه‌نویسی نیز همین تست و آزمایش کردن است تا بتوانید رفتار برنامه را بفهمید.

چطوری یاد بگیریم؟

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

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

خواندن کتاب‌های خوب و مناسب نیز به زبان اصلی (انگلیسی) راه مناسب دیگری برای یادگیری است. بهترین استراتژی به نظر من ترکیب تمام موارد گفته شده و تکرار و تمرین بیشتر است.

سلاح مخفی!

یادگیری و کار در دنیای برنامه‌نویسی یک چیز انفرادی نیست. یکی از مهم‌ترین مهارت‌هایی که باید یاد بگیرید کمک گرفتن است. تمام توسعه‌دهندگان برای حل مسائل و مشکلات کاری خود، کم یا زیاد، به جامعه توسعه‌دهندگان ( Community ) یا کامیونیتی وابسته هستند. Stack Overflow یکی از معروف‌ترین پلتفرم‌ها برای دسترسی به کامیونیتی بود که امروزه بیشتر جای خود را به X(توییتر سابق) ، Reddit و Discord داده‌است. ارتباط با کامیونیتی و پیدا کردن راه حل مشکلات با search و مشورت مهم‌ترین سلاح مخفی شماست.

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

دقت کنید که هدف این نیست که در آینده هیچوقت به کمک نیاز نداشته باشید؛ هدف این است که با کمکی که دریافت می‌کنید به درستی یاد بگیرید و رشد کنید.

چیزی رو فراموش نکردی؟

پیوستگی مهم‌تر از شدت است. اگر 3 روز پشت سر هم و هر روز 25 ساعت! به یادگیری بپردازید و سپس به مدت 2 ماه از یادگیری فاصله بگیرید قطعا چیز خاصی یاد نمی‌گیرید؛ ولی اگر روزی 1 یا 2 ساعت و هر روز به مدت یک ماه به صورت پیوسته به یادگیری و تمرین بپردازید قطعا اثر بهتری را تجربه می‌کنید. تمرین مرتب ذهن شما را آماده نگه می‌دارد و باعث می‌شود که مباحث مهم، اصلی و کاربردی را فراموش نکنید. مثل باشگاه رفتن به آن فکر کنید، شما با مرتب به باشگاه رفتن و با تمرین‌های کوچک و کوتاه در هر بار به باشگاه رفتن نتیجه می‌گیرید.

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

اشتباهات رایج

هر کسی که به تازگی وارد دنیای برنامه‌نویسی می‌شود اشتباهات قابل پیش‌بینی زیادی انجام می‌دهد، دانستن اشتباهات رایج از قبل می‌تواند به شما کمک کند که تا حد زیادی از انجام آن‌ها پرهیز کنید. بزرگترین اشتباه رایج گیر کردن در دنیای آموزش‌هاست که به آن جهنم آموزش ( Tutorial Hell ) نیز گفته می‌شود؛ در این حالت شما فقط آموزش‌های مختلف را می‌بینید و اصلا خودتان کد نمی‌نویسید، احساس یادگیری دارید ولی واقعا فقط دارید اطلاعات را مصرف می‌کنید و هیچ یادگیری واقعی‌ای برای شما اتفاق نمی‌افتد. راه‌حل این مشکل این است که با هر آموزشی که پیش می‌روید، بعد از یادگیری هر چیزی، سریعا دست به کد شوید و بدون تکیه‌ی مجدد به آموزش، چیزی مشابه تمرین یا پروژه‌ی آموزشی خود بسازید.

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

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

ادامه‌ی راه

با در نظر گرفتن تمام موارد بالا و شروع یادگیری مفاهیم اولیه با اولین زبان برنامه‌نویسی‌ای که انتخاب کردید، دنیای جدیدی برای شما نمایان می‌شود. قدم مهم بعدی یادگیری version control با Git و GitHub است تا بتوانید مدیریت کد و همکاری با دیگران را یاد بگیرید. این مهارت ضروری‌ترین مهارت حرفه‌ای شماست.


آموزش رایگان Git و GitHub :

از قسمت 19 تا انتهای فصل 8 و 3 قسمت اول فصل 9 در دوره‌ی کارگاه پایتون می‌توانید به رایگان مبانی اصلی Git و GitHub را بیاموزید.


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