هنر برنامهنویس بدون هدف، دروازه ای به سوی یادگیریدر دنیا نرمافزار تقریبا هر خط کدی که مینویسیم برای حل یک مشکل انجام میشه، برای حل سرعت دیتابیس، حل باگ UI یا automate کردن یکچیزی، توی دنیا پر از هدف شاید انجام یکسری کارها بدون هدف بتونه خیلی بهتون کمکنه!
چند وقت پیش با ایدهی Recreational programming آشنا شدم. Recreational programming وجه کاملا مخالف کارهای هدف دار و امروزی ما است و ایده اینه که کدی بزنیم صرفا جهت تفریح، ساخت چیزی که دوستداریم یا ساخت چیزی که کنجکاوی مارو بر انگیخته. وقتی داریم این کار میکنیم به چیزی جز تفریح و یاد گرفتن فکر نمیکنیم. کدی که مینویسیم قرار نیست پولی دربیاره و قرار نیست کسی حتی بخونتش، کدی که مینویسیم برای خودمون و یادگیری خودمون. اما چه چیزهایی به عنوان Recreational programming حساب میشن؟
- Esoteric Languages (Esolangs):
نوشتن یک برنامه تو زبانهایی که صرفا جهت MEME ساخته شدن یا کاربرد خاصی ندارن مثل brainfuck یا حتی julia
- Code Golf:
تلاش کنیم یک مشکل خاص تو کمترین خط کد ممکن حل کنیم، مثلا سعی کنی فیبوناچی توی ۴ خط حل کنیم یا کمتر. این مورد فقط درباره خط کد نیست و متونه به بایت هم محدود بشه.
- Quines:
برنامهای بنویسیم که خروجی دقیقا کپی سورس کد خودش باشه بدون اینکه فایل برنامه خودش رو بخونه. مثال های زیادیشو میتونید با HTML پیاده کنید :)
- Generative Art & Demoscene:
برنامه ای بنویسیم که یک نقاشی بسازه شاید یک عکس رو ادیت بزنه. یادمه قدیمهای یک برنامه بود که عکس تبدیل به یک گیف میکرد یک دست داشت نازش میکرد D:
- Algorithmic Puzzle:
حل کردن پازلهای برنامهنویسی. گاهی لازم نیست حتی کد بزنید میتونید چالشهای برنامهنویسی حل کنید. چالشهایی مثل Bandit یا Project Euler
اما Recreational programming چه مشکلی حل میکنه؟
اکثر برنامهنویسها وارد برنامهنویسی شدن چون برنامهنویسی فان بود و میشد کارهای بامزه باهاش کرد، یک بازی کوچولو ساخت، یک اسکریپت باحال یا یک ربات تلگرام شخصی، خیلی از ما هدفمون درامد ازش نبود اما وقتی برنامهنویسی از تفریح به شغل تبدیل شد دیگه بهش به عنوان یک چیز شاد و بامزه نگاه نمیکنیم، بهش به عنوان شغل و یک وضیفه نگاه میکنیم که باید انجام بشه تا پول دربیاریم و اگر پول در نمیاریم خوب انجامش نمیدیم!
اما اگر دیدگاهمون تغییر بدیم و دوباره تبدیلش کنیم به یک تفریح میتونیم خیلی چیزها یاد بگیریم و حتی درامد بیشتری داشته باشیم. Recreational programming به مشکلاتی مثل burnout کمک میکنه شاید عجیب باشه ولی شما میتونید burnout ناشی از کار به عنوان برنامهنویس رو با برنامهنوشتن حل کنید.
توصیههایی درباره چطوری و چگونه:
برای Recreational programming لازم نیست پروژهاتون تموم کنید.
لازم نیست پروژه خفنی باشه، یک ربات آبوهوا یا بازی ساده یا اسکریپت جالب میتونه کافی باشه.
سعی کنید از زبانهای low level استفاده کنید.
خلق کردن دوباره چرخ میتونه راه بامزهای برای یادگیری باشه، مثل نوشتن یک وبسرور از پایه یا ساختن دوباره git
در نهایت برنامهنویسی میتونه همچنان فان و بامزه باشه دقیقا مثل مواقعی که شروعش کردیم و هنوز میتونه پر از چیزهای جالب برای یادگیری باشه. Recreational programming مثل یک بسته LEGO میمونه که منتظر شما باهاش یکچیزی بسازید.
@TorhamDevCH