در سال جدید چه‌کار کنیم و چه‌جوری؟

در سال جدید چه‌کار کنیم و چه‌جوری؟

پیش از این، با جادی میرمیرانی -گیک قدیمی و علاقمند دنیای آزاد- مصاحبه‌ای تحت عنوان مصاحبه با جادی: وبلاگ‌نویس ایرانی و مدیر سایت کیبورد آزاد داشتیم که در این مصاحبه، جادی پیرامون برنامه‌نویسی، لینوکس و ... صحبت کرد؛ سپس در یکی از ایپزودهای رادیو فول‌استک تحت عنوان مصاحبه با جادی گیک قدیمی و فعال جامعهٔ اپن‌سورس، پادکستی گوش‌کردنی پیرامون مسائل مختلفی با وی ضبط کردیم. در سال ۱۳۹۶،‌ وی دیدگاه‌هایش را پیرامون «هدف‌گذاری برای سال جدید» با ما به اشتراک گذاشت تا این سال را به شکلی متفاوت، اثربخش و مفید شروع نماییم. باتوجه به اینکه نکاتی که جادی در این مقاله بیان کرد برای هر سال جدیدی قابل پیاده‌سازی است،‌ توجه به این نکات در هر زمانی به خصوص ابتدای سال جدید خالی از لطف نیست.

اولین کسی باشید که به این سؤال پاسخ می‌دهید

رزولوشن چیست؟
خیلی‌ها با شروع سال جدید برای خودشون اهدافی قرار می‌دن و سعی می‌کنن که تا آخر سال بهش برسن که خارجی‌ها بهش می‌گن «رزولوشن». رزولوشن‌های ما معمولاً چیزهای بزرگه که مایهٔ ناامیدی می‌شه! به قول معروف، سنگ بزرگ نشونهٔ نزدنه. اگر رزولوشنتون رو بگذارید که تا سال بعد یک کامیت به کِرِنل لینوکس داشته باشین در حالی که الان زبان C رو بلد نیستین، احتمالاً در طول سال ترجیح می‌دین اصلاً رزولوشنتون رو به یاد نیارید یا مثلاً اگر هدفتون این باشه که در سال جدید توی لینوکس حرفه‌ای بشین (نَه مثال بدی بود، این یکی به راحتی ممکنه!)

اصلاً ببینیم ما کی هستیم. اکثر ما جزو کسانی هستن که هنوز دنبال این می‌باشن که «چی‌کاره بشن» که خیلی هم خوبه. راستش منم هنوز به این فکر می‌کنم که وقتی بزرگ شدم چی‌کاره بشم و اتفاقاً همیشه هم می‌گم بدترین اتفاق اینه که بدونین تو زندگی چی‌کاره هستین!

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

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

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

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

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

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

در اینجا یکی از بهترین سنجه‌ها همون حل باگ هست که بالا گفتم. اگر مثلاً هدفتون هست که «پی‌اچ‌پی یاد بگیرم» لازمه فکر کنین که آیا می‌تونین «یاد گرفتن» رو تعریف کنین؟ به راحتی نه. پس چرا عوضش نمی‌کنین که «پنج تا باگ از پروژه‌های پی‌اچ‌پی رو حل کنم». این باعث می‌شه نتیجه قابل‌سنجش بشه و شما هم مسیرتون رو راحت کشف کنین. اما چه‌طوری به سراغ باگ‌ها برین؟

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

این باگ‌ها مدخل خیلی خوبی هستن به خوندن سورس‌کد اون پروژه. بخش مرتبط رو پیدا کنین و نگاه کنین. بعد سعی کنین سورس پروژه رو طبق راهنمای خودش کامپایل کنین و وقتی تونستین، به راحتی خواهید تونست باگ رو شبیه‌سازی/تکرار کنین (راستش اینه که اگه به اینجا رسیده باشین، بقیهٔ مسیر چندان سخت نیست؛ در دنیای برنامه‌‌نویسی خیلی وقت‌ها اگر بشه باگی رو شبیه‌سازی کرد و تکرار، تقریباً حل شده به حساب میاد!) حل چنین باگی نه فقط به شما اعتبار و اعتماد به نفس می‌ده، بلکه باعث می‌شه مسیر درست حرکت رو هم پیدا کنین و بدونین که باید چی بخونین و چه‌طوری پیش برین.

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

و نکتهٔ طلایی؟
هر چیزی که یاد می‌گیرین رو درست یاد بگیرین. وقتی بحث یادگیریه، اصلاً نباید به دنبال راه انداختن کار باشین بلکه باید تا جایی که می‌تونین دیرتر کار رو راه بندازین و به جاش کل جزئیات زیر ماجرا و اطرافش رو تا جایی که حوصله‌تون می‌کشه یاد بگیرین.

مثلاً توی مثال هاست توی خونه، برنده کسی هست که وقتی تیک DMZ توی مودم رو می‌زنه، یکی دو ماه طولش بده، چرا؟ چون تصمیم گرفته +Network و CCNA رو هم نگاهی بندازه یا وقتی سعی می‌کنه از چیزی مثل DynamicDNS استفاده کنه، سراغ این رفته باشه که اسکریپتش رو هم خودش بنویسه یا مثلاً به جای یک کامپیوتر معمولی، پول‌هاش رو جمع کرده و روی یک رزبری‌پای تجربه می‌کنه که اگر میزان بازدیدش از ۳ نفر در روز بیشتر بود، یک ال‌ای‌دی قرمز رو روشن می‌کنه!

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