چگونه‌ برنامه‌نویس شویم؟

این نوشته اولین بار در این آدرس منتشر شد.

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

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

نوشته را با پاسخ به یک ادعای معروف آغاز میکنیم:

من استعداد برنامه نویسی ندارم.

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

برنامه‌نویسی سخت است و گونه‌ی ما برای آن استعداد ندارد.

اما از آنجا که ما تنها گونه‌ای هستیم که روی کره‌زمین قابلیت این را داریم که برنامه‌نویسی کنیم(حداقل فعلا) چاره‌ای نیست که بعضی از ما به سمت آن برویم.

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

تکرار فرکانس بالای یک فعالیت میتواند باعث تغییر در مدار بندی مغز ما شود. برنامه‌نویس‌های حرفه‌ای صدها و هزاران ساعت را صرف کد زدن کرده‌اند و این تکرار فرکانس بالا باعث شده است که به نظر برسد آن‌ها نیروی ماوراطبیعه‌ای دارند. نه اینطور نیست. با تمرین کافی احتمالا هرکسی با یک بهره‌ی هوشی نرمال توان برنامه نویسی خواهد داشت.


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

چرا باید برنامه‌نویسی یاد بگیریم؟

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

  • به این نمودار از نظرسنجی برنامه‌نویسان سایت استک اور فلو دقت کنید: بخش خوبی از برنامه‌نویسان در جهان بین سه تا پنج سال سابقه دارند. یعنی متولد دهه ۹۰ میلادی هستند. مثل نگارنده این مطلب. و این چه معنایی میدهد؟ این که درخواست بازار برای نیروی فنی برنامه‌نویس رو به افزایش است. اگر عقب بودن بین پنج تا ده سال بازار ایران از بازار جهانی را هم در نظر بگیرید، میتوانید متوجه شوید در حال حاضر حداقل تقاضای نیروی کاربلد از عرضه کمتر است و این نیروها را احتمالا گرانترین کارمندان ایران میکند(بعد از آقازاده‌ها). نتیجتا میشود حداقل تا ده سال آینده را با اطمینان بالایی تضمین کرد که شغل با درآمد خوب برای برنامه‌نویس خوب وجود خواهد داشت. در کشوری با ضریب بیکاری ۲۵ درصد چنین فرصتی شکل طلاست.
  • برنامه نویسی از جنس ساختن است. انسان موجود ابزار سازی است و به مدد همین توانایی توانست از باقی موجودات پیشی بگیرد و دنیا را از آن خود کند. ماهیت بسیاری از کارهای شهری امروز اما از جنس ساختن نیست. بسیاری از تخصص‌ها در حال فیکس کردن چیزی هستند اما برنامه‌نویس‌ها هرروز میسازند و دستشان برای این ساختن باز است، چرا که مواد اولیه نیاز ندارند و هزینه‌ی آزمون خطا در مقایسه با دیگران ساختن‌ها بسیار پایین است. نتیجتا شاید برنامه نویسی بتواند روح سازنده‌ی درونتان را ارضا کند.
  • یادگیری برنامه‌نویسی رایگان و بدون نیاز به استاد است. بعید است در طول تاریخ مهارتی تا این حد تخصصی را میشد بدون فعالیت آکادمیک و استادراهنما یاد گرفت، اما برنامه نویسی را میشود. مثال زنده‌آن خود من و باز هم این نمودار از نظرسنجی استک اور فلو. خودآموزی محبوب‌ترین راه یادگیری برنامه‌نویسی است. به عنوان کسی که چون نمیتوانست یک ساعت و نیم سر کلاس‌های دانشگاه بنشیند از دانشگاه انصراف داده، این شاید مهمترین ویژگی برنامه‌نویسی باشد که برای من جذاب است.
  • تاثیر گذاری روی تعداد بسیار زیادی انسان. کار برنامه‌نویسی مقیاس پذیر است. ما دندان پزشکان را دوست داریم، چرا که دندان‌های مارا خوب میکنند و از آن مهمتر خیلی پول در می‌آورند. اما یک سوال. یک دندان پزشک موفق در طول عمرش میتواند مشکل چند نفر را حل کند؟ روزی ۱۰ ویزیت*سی سال کار= حدود صد هزار نفر. تازه این بسیار خوشبینانه‌است چرا که تعطیلات نباید برود و هرروز خدارا سی سال شبانه‌روز ده نفر را به طور متوسط ویزیت کند که خیلی از دندان پزشکان به چنین مرتبه‌ای نمیرسند. دوستی میگفت که من در اولین روز کاری‌م، یک تغییری کوچک در بخشی از کدهای شرکت دادم که برای چهل هزار نفر را، حداقل نفری ده ثانیه به شکل روزانه صرفه جویی کرد. در طول یک سال میشود معادل چهل سال صرفه‌جویی زمانی در عمر چندین هزار نفر. این چنین اثری میتواند حاصل یک ساعت کار شما باشد. میتوانید روی پلتفرم‌هایی با جمعیت میلیاردی و میلیونی کار کنید و خب چه چیزی بهتر از این؟ آقای بهداد اسفهبد (فیلتر بودن وبسایتش شاید تکراری و ساده باشد، اما نشانه‌ای از یک سرطان در اوضاع مملکت است که آدم را غمگین و ناامید میکند، بگذریم.) توسعه دهنده ایرانی در گوگل روی پروژه‌ای کار میکرد که امروز باعث شده است بتوانیم زبان فارسی را روی اندروید و کروم در اختیار داشته باشید. یعنی با احتمال خوبی این متنی که دارید میخوانید حاصل دسترنج ایشان است، میگفت مادرم که فارسی به من پیام میدهد، احساس افتخار میکنم. حالا همه قرار نیست همه بهداد اسفهبد شوند ولی سقفی برای اثر گذاری نمیتوان متصور شد. (دندان پزشکان کاش مارا نکشند در کامنت ها، استدلالم جدی‌نیست و به باگ‌هایش آگاهم)

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


چگونه برنامه‌نویسی یاد بگیریم؟

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

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

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


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

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

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

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

  • پریدن در حوض مهمترین اصل یادگیری برنامه نویسی است. سریع شروع کنید به مسئله حل کردن. اینجا یک پارادوکس مرغ یا تخم‌مرغ هم وجود دارد. چطور وقتی زبانی را بلد نیستم با آن شروع کنم به کد زدن؟ خب راه حل من ساده است. در یک بازه‌ی زمانی کوتاه(کمتر از ده ساعت) اصلی ترین مفاهیم یک زبان یا یک فریم ورک را یاد بگیریم. از روی داکیومنت‌های اصلی یا یک ویدیو. بعد بپریم در حوض مسئله حل کردن. چطور؟ یک پروژه‌ی کوچک تعریف کنید و آن را انجام بدهید. تودو لیست. ماشین حساب یا هرچیزی. مهم این است که خودتان بدون راهنما دست به کد شوید و با مشکلات روبرو شوید. سرچ کنید، مشکل را حل کنید و اینجاست که دقیقا یادگیری اتفاق می‌افتد. من یک کورس ۲۴ فاکینگ ساعته در مورد جاوا را نگاه کردم. بعد آمدم شروع کردم به کد زدن و خب نتیجه؟ هیچ چیزی یادم نبود و هیچ چیزی بلد نبودم. وقتتان را با کورسها و کتاب‌ها تلف نکنید. هیچکس با دیدن فیلم‌های بروسلی کنگفو کار نمیشود. بپرید در حوض. به نظر من همان ساعت اول یادگیری. مسئله حل کنید. ترجیحا خارج از کورس و خارج از جایی که معلم راهنمایی وجود دارد. بات‌های تلگرام و توییتر فوق العاده‌اند برای یادگیری زبان‌های جدید. ساده‌اند و میشود سریع چیزهای کاربردی ساخت.


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

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

  • گفتم خیلی سریع بپرید در حوض و شروع کنید به یادگیری؟ خب چون مهم است، دوباره گفتم.

  • مسیر یادگیری را خودتان تعیین کنید نه کورسها. حداقل روش من این است. ابتدا چندتا منبع را برای خودم فراهم میکنم. ویدیو/کتاب/سایت. بعد شروع میکنم به مقدمات را خواندن. مقدمات را که فهمیدم بلافاصله شیرجه میزنم در پروژه‌ای که خودم تعریفش میکنم و بسته‌به نیازم به سراغ آن دوره‌ها و کتاب‌ها میروم و هرکدام را از یکی یاد میگیرم. افسارم را نمیسپارم دست استادی که دوره‌را طراحی کرده که بفروشد نه که لزوما یاد‌دهنده باشد.

  • دلسرد نشوید. برنامه‌نویسی سخت است. مخصوصا اوایلش. سریع وارد گودشدن باعث میشود که فیدبک مثبت بگیرید و انگیزه پیدا کنید برای ادامه دادن. ول نکن بودن در این حوزه مهم است. انتظار نداشته باشید کدتان با اولین تلاش بدون خطا اجرا شود. با فرایند دیباگ دوست شوید.

  • اکانت گیتهاب باز کنید. برنامه نویسان دیگر را دنبال کنید(مثلا من:) ) کد خوانی بخش مهمی از یادگیری است. طبیعی است که ابتدا خیلی از کدها را نفهمید. از پروژه‌های ساده‌تر شروع کنید. کد‌هایتان را حتی همان آزمایشی‌ها را پابلیش کنید و از دیگران بخواهید که روی آن‌ها نظر بدهند. بعدا میتوانید آن‌ها را پاک کنید. لازم نیست که بگویم کار کردن با گیت را هم یاد بگیرید. برنامه‌نویس بی ورژن کنترل به چه ماند؟هیچ. مجتبی درویشی عزیزم اینجا دو پست(+ +) دارد درباره‌ی گیت و گیتهاب. خواندن آن‌ها را توصیه میکنم، به خصوص اگر تازه کارید.

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




این پست شماره یک از مجموعه‌ی چگونه برنامه نویس شویم؟ بود. در قسمت‌های بعدی احتمالا میرویم سراغ این که چگونه شغل پیدا کنیم؟ مهارت های نرممان را بهتر کنیم و … . اگر حس میکنیم، ممکن است بدرد کسی بخورد، لینک این پست را با او به اشتراک بگذارید. اشتراک گذاری متون در توییتر و تلگرام هم من را عمیقا خوشحال میکند:) ممنون.