از انتخاب اولین زبان تا اولین پیشنهاد کاری: ترتیب واقعی یادگیری، مهارتهایی که بازار میخواهد و اشتباههایی که سالها وقت شما را تلف میکنند.
شروع برنامهنویسی امروز سختتر از ده سال پیش نیست؛ فقط شلوغتر شده است. هر روز ده مسیر تازه معرفی میشود، هر مسیر ده ویدیو دارد و هر ویدیو در دقیقه سوم شما را به یک کتابخانه ناشناس میرساند. مشکل اصلی تازهکارها کمبود منابع نیست، اضافه بودن آنهاست. نتیجه این آشفتگی همیشه یکسان است: شش ماه جستوجو، چند پروژه نیمهکاره و این حس که «من هنوز آماده نیستم».
این نوشته یک نقشه راه عملی است: چه چیزی را به چه ترتیبی یاد بگیرید، در سه ماه اول چه بسازید، از کجا بفهمید آماده کار هستید و چه اشتباهاتی را هزینهدار تمام میکند.
سه عامل بیشترین نقش را دارند. اول، انتخاب مسیر را با انتخاب ابزار قاطی میکنیم؛ فریمورک عوض میشود ولی منطق برنامهنویسی ثابت میماند. دوم، یادگیری را با تماشا اشتباه میگیریم؛ ویدیو دیدن حس پیشرفت میدهد، در حالی که مهارت فقط با نوشتن کد ساخته میشود. سوم، معیار پایان کار را نمیدانیم؛ بدون معیار، هر مسیری بیپایان به نظر میرسد.
قبل از انتخاب زبان برنامهنویسی مشخص کنید چه چیزی میخواهید بسازید. زبان ابزار است، نه هویت شما.
انتخاب زبان مهم است، اما مهمتر از آن انتخاب یک مسیر و تمام کردن آن است. کسی که یک زبان را کامل یاد بگیرد، زبان دوم را در چند هفته یاد میگیرد؛ کسی که سه زبان را نیمهکاره رها کرده باشد، بعد از دو سال هنوز هیچ برنامهای نمیسازد. اگر مطمئن نیستید، با پایتون یا جاوااسکریپت شروع کنید؛ هر دو مسیر شغلی روشنی دارند و منابع فارسیشان هم غنی است.
یک سال زمان منطقی برای رفتن از صفر تا قابل استخدام شدن است، اگر هفتهای ۱۰ تا ۱۵ ساعت کار کنید.
هدف این فصل «ساختن» است، نه «دانستن». باید با متغیر، شرط، حلقه، تابع و ساختمان دادههای ساده یک برنامه کوچک بنویسید: ماشینحساب خط فرمان، برنامه ثبت هزینهها یا یک بازی حدس عدد. در پایان این فصل باید بتوانید یک مسئله ساده را به کد تبدیل کنید و خطاها را خودتان بخوانید و رفع کنید. مهمترین مهارت جانبی این فصل، خواندن پیام خطاست؛ نود درصد تازهکارها در پیام خطا گیر میکنند نه در منطق کد.
در این فصل از «کد نوشتن» به «کد نگهداشتن» میروید. Git و GitHub، دیباگ گامبهگام، نوشتن تابعهای ماژولار، کار با فایل و پایگاه داده ساده، و مدیریت خطا. اگر مسیر وب را انتخاب کردهاید، اینجا اولین پروژه واقعیتان را میسازید: یک صفحه که داده را از سرور میگیرد، نمایش میدهد و در پایگاه داده ذخیره میکند. اگر مسیر پایتون را انتخاب کردهاید، ساخت یک API کوچک یا یک اسکریپت خودکارسازی گزارشگیری هدف این فصل است.
یک پروژه متوسط که بتوانید درباره تصمیمهایش حرف بزنید، ارزشش از پنج تمرین کوچک بیشتر است. در این فصل تست ساده اضافه کنید، حالتهای خطا و ورودی خراب را مدیریت کنید، پروژه را روی اینترنت منتشر کنید و برای آن دموی کوتاه بگیرید. انتشار، یادگیری را از حالت آموزشی بیرون میآورد: با خطاهای محیط واقعی، دامنه، متغیرهای محیطی و تفاوت رفتار روی سرور روبهرو میشوید.
رزومه، بازنویسی پروژهها با توضیح تصمیمها، تمرین مصاحبه فنی و حل مسئلههای کوچک روزانه. اگر مسیرتان فرانتاند است، اینجا جاوااسکریپت را عمیقتر میکنید؛ اگر بکاند است، پایگاه داده و امنیت پایه. هدف این فصل این نیست که چیز جدید یاد بگیرید، این است که آنچه میدانید را برای دیگران قابل ارزیابی کنید. جزئیات این مرحله را در نوشته چطور یک پروژه شخصی را به رزومه حرفهای تبدیل کنیم؟ آوردهام.
۱. زبان و نسخهاش را انتخاب کنید و همان روز محیط کدنویسی را نصب کنید. ۲. یک مخزن GitHub بسازید و از همان روز اول کد را آنجا بگذارید. ۳. یک دفترچه «سؤالهای حلنشده» کنار دستتان باشد؛ هر مفهومی که در همان پنج دقیقه حل نشد، آنجا نوشته شود. ۴. هر روز یک تمرین کوچک حل کنید، حتی اگر فقط بیست خط باشد. پیوستگی مهمتر از مدت زمان است. ۵. در پایان هفته، کدی که نوشتید را از صفر بازخوانی کنید و نامگذاریها را بهتر کنید.
تمرین فعال: بعد از هر ویدیو، کد را ببندید و خودتان بازنویسی کنید. اگر مجبور شدید به ویدیو برگردید، آن مفهوم را هنوز یاد نگرفتهاید.
شکستن مسئله: هر مسئله بزرگ را به سه بخش کوچک تقسیم کنید و هر بخش را جدا اجرا کنید. کسی که «نمیدانم از کجا شروع کنم» میگوید، در واقع مسئله را تقسیمبندی نکرده است.
خواندن کد دیگران: به مخازن پروژههای کوچک و متنباز نگاه کنید. دیدن ساختار واقعی پروژه، سرعت یادگیری ساختاردهی را بالا میبرد.
توضیح دادن: هر چیزی که یاد گرفتید را در دو پاراگراف برای یک دوست بنویسید. اگر نتوانستید ساده توضیح دهید، آن بخش را نفهمیدهاید.
آماده بودن به معنی دانستن همه چیز نیست. اگر بتوانید این کارها را انجام دهید، آمادهاید:
برنامهنویس حرفهای کسی نیست که همه چیز میداند؛ کسی است که میتواند چیزهای ناشناس را سریع یاد بگیرد و به خروجی قابل استفاده برساند. مسیر پیشنهادی همین است: یک زبان، یک پروژه در پایان هر فصل، و یک انتشار عمومی.
قدم بعدی را همین امروز بردارید و آن را کوچک نگه دارید: زبان و ابزار را نصب کنید، مخزن بسازید و نسخه اول برنامه حدس عدد را بنویسید. اگر ترجیح میدهید مسیر را ساختارمند و بدون سرگردانی جلو بروید، یک دوره پروژهمحور مثل آموزش پایتون از صفر تا پیشرفته نقشه راه آمادهای به شما میدهد و جای آزمونوخطا را میگیرد.