بهترین چالشهای کدنویسی برای مبتدیان: تمرین کدنویسی از آسان تا سخت
این چیزی است که هیچکس در مورد آن به شما هشدار نمیدهد. میتوانید یک ماه آموزشهای مختلف را تماشا کنید، با سر به هر ویدیو اشاره کنید و سپس یک فایل خالی را باز کنید و هیچ ایدهای نداشته باشید که چه چیزی تایپ کنید. من این شرایط را داشتهام. اکثر افرادی که کدنویسی یاد میگیرند، این شرایط را داشتهاند.
راه حل کسل کننده است و جواب میدهد: مشکلات کوچک را خودتان حل کنید، البته در ابتدا خیلی بد. بنابراین این راهنما دو بخش دارد. بخش اول مجموعهای گلچین شده از بهترین چالشهای کدنویسی برای مبتدیان است (ده مورد از آنها، تقریباً از آسان تا سخت). بخش دوم سایتهایی را پوشش میدهد که وقتی مطالب من را مرور کنید، هزاران مورد دیگر در آنها پیدا خواهید کرد.
هر زبان برنامهنویسیای جواب میدهد. مثالهای من از پایتون و کمی هم جاوااسکریپت استفاده میکنند، چون بیشتر افراد از آنجا شروع میکنند. اگر میتوانید به ترتیب پیش بروید. هر مسئله یک ایده جدید را به دنبال دارد.
چرا چالشهای کدنویسی مهارتهای کدنویسی واقعی را ایجاد میکنند؟
چه چیزی به عنوان یک چالش محسوب میشود؟ چیزی کوچک با یک پاسخ درست واضح. «یک کلمه را بردار، آن را برعکس بگو.» «اینجا لیستی از اعداد است، کدام یک بزرگترین است؟» شما چیزی نصب نمیکنید یا چارچوبی انتخاب نمیکنید. شاید ده خط بنویسید.
تماشای یک آموزش به معنای دنبال کردن روند فکری شخص دیگری است. چالشهای کدنویسی این را برعکس میکنند و به روشی مفید، ناخوشایند هستند. حدس میزنید، برنامه خراب میشود، به یک خطا نگاه میکنید، دوباره امتحان میکنید. این کار را برای چند هفته انجام دهید و بعضی چیزها بیسروصدا آسانتر میشوند:
- تسلط بر سینتکس. دیگر لازم نیست برای پنجمین بار در گوگل جستجو کنید که چگونه یک حلقه for بنویسید.
- مهارتهای حل مسئله. شما قبل از اینکه صفحه کلید را لمس کنید، شروع به تقسیم یک کار مبهم به مراحل مختلف میکنید.
- تفکر منطقی. یک لیست خالی، یک عدد صحیح منفی، یک کلمه تک حرفی. شما شروع به انتظار دیدن آنها میکنید.
- اشکالزدایی. متن خطای قرمز دیگر توهینآمیز به نظر نمیرسد.
- اعتماد به نفس. هر مسئله حل شده، ثابت میکند که میتوانید خودتان یک برنامه بنویسید.
یک نفر یک بار به من گفت که کدنویسی قانون ۸۰/۲۰ خودش را دارد و برای مسائل مبتدی کاملاً دقیق است. اکثر آنها به همان پنج حرکت تکیه میکنند: حلقهها، if/else، بررسی رشتهها، شمارش چیزها در یک دیکشنری و پیمایش یک آرایه. اگر اینها را به کار بگیرید، بسیاری از مسائل «جدید» به مسائل قدیمی تبدیل میشوند که کلاهی به سر گذاشتهاند.

۱۰ چالش آسان کدنویسی برای مبتدیان که باید ابتدا حل کنند
هیچکدام از اینها بدیع نیستند، و نکته همین است. آنها تقریباً در هر دوره مبتدی وجود دارند، چون کار میکنند. پنج مورد اول فقط به حلقهها، شرطها و کمی کار با رشتهها یا لیستها نیاز دارند، در حالی که پنج مورد آخر باعث میشوند قبل از تایپ هر چیزی، در مورد ساختار دادهای که باید استفاده کنید فکر کنید. هر اتفاقی بیفتد، سعی کنید حداقل بیست دقیقه در گوگل جستجو نکنید، حتی وقتی که بیفایده به نظر میرسد.
چالش ۱: فیزباز
وظیفه این است که اعداد ۱ تا ۱۰۰ را چاپ کند، اما هر مضربی از عدد سه به صورت «Fizz»، هر مضربی از عدد پنج به صورت «Buzz» و اعدادی که مضربی از هر دو هستند به جای آن «FizzBuzz» را دریافت میکنند.
یادم میآید که فکر میکردم سادگیاش تقریباً توهینآمیز است. با این حال، آنقدرها هم ساده نیست، به همین دلیل است که مصاحبهکنندگان مدتها آن را دوست داشتند. افرادی که در مورد کدنویسی زیاد خواندهاند اما خیلی کم نوشتهاند، معمولاً به ترتیب بررسیها اشتباه میکنند. نسخه من در پایتون به این شکل است:
پایتون برای n در محدوده (1، 101): اگر n % 15 == 0: print("FizzBuzz") elif n % 3 == 0: print("Fizz") elif n % 5 == 0: print("Buzz") در غیر این صورت: print(n)
وقتی برنامهی شما کار کرد، خط %15 را به پایین بکشید، آن را اجرا کنید و ببینید چند FizzBuzze باقی میمانند. (اسپویلر: هیچ کدام)
چالش ۲: معکوس کردن یک رشته
«سلام» وارد میشود، «اُلّه» بیرون میآید.
تقریباً در هر زبانی یک میانبر وجود دارد، مانند s[::-1] در پایتون یا split("")).reverse().join("") در جاوا اسکریپت، و اشکالی ندارد که یک بار آن را بنویسید تا ببینید چطور کار میکند. بعد از آن صادقانه بگویم، آن را حذف میکنم و نسخه خستهکننده را با یک حلقه که هر بار یک کاراکتر اضافه میکند، انجام میدهم. اینجاست که متوجه میشوید که در اکثر زبانها نمیتوان یک رشته را در جای خود تغییر داد، که اگر هرگز آن را اینجا یاد نگیرند، بعداً بسیاری از افراد را گیج میکند.
چالش ۳: بررسی پالیندروم
پالیندروم کلمهای مانند "racecar" یا "noon" است که در هر دو جهت یکسان خوانده میشود، بنابراین تابع شما باید به آنها بله و به "hello" خیر بگوید.
وقتی این روش جواب داد، وقت خوبی است که مهارتهای کدنویسی خود را با دادن «یک مرد، یک نقشه، یک کانال: پاناما» کمی بهبود ببخشید، که فقط بعد از کوچک کردن متن و حذف فاصلهها و علائم نگارشی اجرا میشود. میتوانید کد معکوس کردن رشتهها را از چالش قبلی برای این کار قرض بگیرید که حس خوبی دارد.
چالش ۴: دنباله فیبوناچی
احتمالاً قبلاً این دنباله را دیدهاید: 0، 1، 1، 2، 3، 5، 8، 13، که هر عدد حاصل جمع دو عدد جلوی آن است. تابع شما باید n عدد اول آنها را برگرداند.
دو متغیر و یک حلقه کافی است. بخش جالب ماجرا زمانی شروع میشود که آن را با استفاده از بازگشت بازنویسی میکنید، به طوری که تابع خودش را فراخوانی میکند و سپس n = 35 را درخواست میکند. در اکثر لپتاپها مدتی منتظر خواهید ماند و فهمیدن دلیل این اتفاق، نگاهی اجمالی به برنامهنویسی پویا است. این یکی از آن لحظات کوچک «اوه، به همین دلیل است» است که ماندگار میشود.
چالش ۵: چرخش یک آرایه
یک آرایه و یک عدد k را در نظر بگیرید، سپس هر عنصر را k خانه به سمت راست منتقل کنید، به طوری که عناصر انتهایی به سمت جلو کشیده شوند. با [1، 2، 3، 4، 5] و k = 2، در نهایت باید به [4، 5، 1، 2، 3] برسید.
بیشتر تلاشهای اولیه وقتی k بزرگتر از لیست باشد، با شکست مواجه میشوند. چرخاندن پنج مورد به اندازه ۷ در واقع چرخاندن آنها به اندازه ۲ است، که وقتی آن را میبینید، واضح است و تا آن زمان قابل مشاهده نیست.
اگر از آن پنج مورد بدون درد زیاد عبور کردید، آفرین. موارد بعدی کمی بیشتر از شما انتظار دارند.
چالش ۶: پیدا کردن بزرگترین عدد صحیح در یک آرایه
اگر تابع max() را داشته باشید، پیدا کردن بزرگترین عدد آسان است، بنابراین نمیتوانید این کار را انجام دهید. در عوض، این کار را با یک حلقه انجام دهید و سپس دومین عدد بزرگ را نیز بدون دو بار مرور لیست پیدا کنید. اکنون شما دو مقدار را پیگیری میکنید و باید مراقب باشید که کدام یک را ابتدا بهروزرسانی کنید.
اعداد تکراری و منفی گزینههای خوبی برای آزمایش هستند، زیرا بسیاری از راهحلهای اولیه بیسروصدا روی آنها شکست میخورند.
چالش ۷: شمردن مصوتها در جمله
شمردن مصوتها، تمرین گرم کردن است. تمرین اصلی، شمردن هر مصوت به تنهایی و برگرداندن چیزی شبیه {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0} است.
برای بسیاری از مبتدیان، این لحظهای است که بالاخره دیکشنریها (یا اشیاء در جاوا اسکریپت) معنا پیدا میکنند، و این مهم است، زیرا احتمالاً این ساختار دادهای است که در سال آینده بیشتر به آن تکیه خواهید کرد.
چالش ۸: بررسی کنندهی آناگرام
آناگرامها دقیقاً از حروف یکسان اما با ترتیب متفاوت استفاده میکنند، مانند «listen» و «silent»، بنابراین شما در حال نوشتن تابعی هستید که مشخص میکند آیا دو رشته واجد شرایط هستند یا خیر.
من دو روش معقول میشناسم. میتوانید هر دو رشته را مرتب کنید و نتایج را با هم مقایسه کنید، یا میتوانید تعداد دفعاتی که هر حرف ظاهر میشود را بشمارید و این تعداد را با هم مقایسه کنید. نوشتن هر دو و سپس بررسی اینکه کدام یک کار کمتری انجام میدهد، اساساً اولین قدم شما برای فکر کردن به کارایی است.
چالش ۹: دو مجموع
با لیستی مانند [2، 7، 11، 15] و هدف 9، شما موقعیت دو عددی را که با هدف جمع میشوند، برمیگردانید، که در اینجا [0، 1] است.
بیشتر افراد با دو حلقه تو در تو شروع میکنند که هر جفت را امتحان میکنند و این برای لیستهای کوتاه اشکالی ندارد اما به سرعت کند میشود. رویکرد سریعتر، اعدادی را که قبلاً در یک دیکشنری دیدهاید نگه میدارد تا بتوانید فوراً آنها را جستجو کنید. اینکه LeetCode این مورد را در ابتدا قرار داده است، تصادفی نیست، زیرا به وضوح نشان میدهد که ساختار داده مناسب چقدر مهم است.
چالش ۱۰: بازی حدس اعداد
در اینجا کامپیوتر یک عدد مخفی بین ۱ تا ۱۰۰ انتخاب میکند، شما به حدس زدن ادامه میدهید و کامپیوتر به شما میگوید «خیلی زیاد» یا «خیلی کم» تا زمانی که آن را به همراه تعداد دفعات تلاش برای رسیدن به آن پیدا کنید.
این بازی کمتر شبیه یک پازل برنامهنویسی ساده است و بیشتر شبیه یک برنامه کوچک با ورودی کاربر، یک حلقه while و اعداد تصادفی است. در نهایت کسی به جای یک عدد، کلمه "banana" را تایپ خواهد کرد، بنابراین شما هم با ورودیهای بد مواجه خواهید شد. و برخلاف بقیه، این بازی را میتوانید به یک دوست بدهید تا بازی کند.
بهترین وبسایتها برای چالشهای کدنویسی آنلاین
بعد از اینکه ده تای من تمام شد، به یک منبع بیپایان با بررسی خودکار نیاز خواهید داشت. این سایتها برای چالشهای کدنویسی آنلاین، همه این کار را انجام میدهند. فقط حس و حالشان خیلی متفاوت است.
| پلتفرم | بهترین برای | قالب | هزینه |
|---|---|---|---|
| آدابیت | مبتدیان مطلق | چالشهای کدنویسی مختصر در مرورگر | سطح رایگان |
| جنگهای کد | تمرین بازیسازی شده | رتبهبندی شده با "کاتا" با راهکارهای اجتماعی | رایگان |
| ورزش | یادگیری عادتهای خوب | مسیرهای زبان با مربیان انسانی اختیاری | رایگان |
| رایگانCodeCamp | یادگیری ساختاریافته | برنامه درسی با تمرینهای داخلی و گواهینامهها | رایگان |
| هکررنک | مسیرهای مهارتی و آمادگی شغلی | مسائل مبتنی بر موضوع با برچسبهای دشواری | رایگان برای زبان آموزان |
| لیتکد | آماده سازی مصاحبه | مسائل الگوریتمی با برچسبهای آسان/متوسط/سخت | سطح رایگان |
| کدشف | پیش به سوی مسابقات | مسیرهای تمرینی به علاوه مسابقات منظم | سطح رایگان |
| پروژه اویلر | دوستداران ریاضی | معماهای سنگین ریاضی، ارائه فقط با پاسخنامه | رایگان |
| ظهور کد | تفریحات فصلی | معماهای روزانه داستان محور هر دسامبر | رایگان |
آدابیت
اگر دوستی از من بپرسد از کجا شروع کنم، میگویم Edabit. مسائل کوتاه هستند، همه چیز در مرورگر اجرا میشود و شما XP را جمعآوری میکنید. پایتون، جاوا اسکریپت، جاوا، سیپلاسپلاس و چند زبان دیگر پوشش داده میشوند و برچسب «بسیار آسان» در واقع به معنای بسیار آسان است.
جنگهای کد
کدوارز مسائل خود را کاتا (یک کلمه رزمی برای تمرینها) مینامد. آنها از ۸ کیو، سادهترین، تا ۱ کیو رتبهبندی میشوند. جادوی بازی بعد از ارسال شماست. میتوانید پاسخهای دیگران را ببینید و قرار دادن ده خط دست و پا گیر خود در کنار یک جمله دو خطی جذاب از کسی، چیزهای بیشتری از اکثر آموزشها به شما میآموزد.
ورزش
اکسرسیسم به عنوان یک سازمان غیرانتفاعی اداره میشود و کاملاً رایگان است. آهنگهایی برای بیش از ۸۰ زبان وجود دارد و در صورت درخواست شما، مربیان داوطلب کد شما را بررسی خواهند کرد. میتوانید در مرورگر بمانید یا تمرینها را روی دستگاه خودتان اجرا کنید. من در نهایت شما را به سمت گزینه دوم راهنمایی میکنم، زیرا این گزینه شما را با ویژوال استودیو کد و ترمینال راحتتر میکند.
رایگانCodeCamp
این سایت دقیقاً یک سایت چالشبرانگیز نیست. یک برنامهی درسی کامل است، اما از صدها تمرین کوچک کدنویسی ساخته شده است، بنابراین مناسب است. اگر به ساختار علاقه دارید عالی است: جاوا اسکریپت، پایتون، طراحی وب واکنشگرا و موارد دیگر، با پروژههای صدور گواهینامه در پایان هر مسیر.
هکررنک
HackerRank مسائل را بر اساس مهارتهای مختلف (پایتون، SQL، ساختمان داده، الگوریتم) دستهبندی میکند و به شما میگوید که هر کدام چقدر سخت است و چند نفر آن را حل کردهاند. بسیاری از شرکتها کاندیداها را بر اساس آن بررسی میکنند. عادت کردن به رابط کاربری اکنون باعث میشود که بعداً کمی در نگرانیهایتان صرفهجویی کنید.
لیتکد
اینجا سرزمین آمادگی برای مصاحبه است. مسائل با برچسبهای آسان، متوسط و سخت دستهبندی میشوند، و حتی «آسان» هم فرض را بر این میگذارد که شما اصول اولیه را یاد گرفتهاید. من چالشهای برنامهنویسی آن را به عنوان مسیری که به سمت آن میروید در نظر میگیرم، نه جایی که از آنجا شروع میکنید. وقتی ده دقیقهام برایتان تکراری شد، برگردید.
کدشف
CodeChef به عنوان یک سایت برنامهنویسی رقابتی رشد کرد. این روزها در کنار مسابقات معمول خود، مسیرهای تمرینی مبتدی نیز دارد، بنابراین اگر مسابقات زماندار سرگرمکننده به نظر میرسند، جای مناسبی برای امتحان کردن آنهاست.
پروژه اویلر
مسائل ریاضی که برای حل کردنشان به کد نیاز دارید. هیچ ویرایشگری در سایت وجود ندارد. شما برنامه را هر جا که دوست دارید مینویسید و فقط عدد نهایی را تایپ میکنید. ریاضیدانان عاشق آن هستند. بقیه معمولاً از آن لذت میبرند.
ظهور کد
هر دسامبر، روزی یک پازل دو قسمتی دریافت میکنید که با یک داستان مسخره به هم گره خوردهاند. اخیراً مدت زمان حل آن از ۲۵ روز به ۱۲ روز کاهش یافته و جدول امتیازات جهانی هم پایین آمده است، بنابراین این روزها بیشتر جدول امتیازات خصوصی با دوستان یا همکاران است. پازلهای قدیمیتر تمام سال آماده میمانند و آرشیو، یک کتابخانه تمرینی فوقالعاده است.
همچنین درباره Coderbyte خواهید شنید که چالشها را با دورههای مصاحبه ترکیب میکند، و Topcoder که واقعاً برای توسعهدهندگان باتجربه است.
یک هشدار. بسیاری از فهرستهای قدیمی هنوز شما را به Google Code Jam و Kick Start ارجاع میدهند. گوگل هر دو را در سال ۲۰۲۳ تعطیل کرد و فقط بایگانیهای مشکلدار باقی مانده است.

چگونه چالشهای کدنویسی را بدون خستگی تمرین کنیم؟
بوکمارک کردن ده سایت شما را بهتر نمیکند، بلکه یک عادت این کار را میکند. من تقریباً این کارها را انجام میدهم:
- یک زبان برنامهنویسی انتخاب کنید و به آن پایبند باشید. پایتون انتخاب معمول است زیرا تقریباً مانند انگلیسی خوانده میشود. اگر میخواهید وبسایت بسازید، جاوا اسکریپت منطقی است.
- یک ویرایشگر کد واقعی راهاندازی کنید. ویرایشگرهای مرورگر برای هفته اول مناسب هستند. نصب زودهنگام ویژوال استودیو کد به شما یاد میدهد که فایلها را اجرا کنید، خطاها را در ترمینال بخوانید و با یک دیباگر کار کنید.
- روزی یک تا سه مسئله حل کنید. تمرین کدنویسی روزانه با حجم کم، بهتر از یک برنامهی فشردهی شش ساعته در روز یکشنبه است. الگوها بین جلسات جا میافتند و گذشتن از یک هدف کوچک دشوار است.
- بعد از اتمام کار، راهحلهای دیگر را بخوانید. در Codewars یا Exercism، به دو یا سه پاسخ دیگر نگاه کنید. شما بهترین شیوهها و برخی ترفندهای هوشمندانه را که ارزش دزدیدن دارند، یاد خواهید گرفت.
- مسائل قدیمی را دوباره مرور کنید. یک هفته بعد، یکی را از حفظ حل کنید. اگر نمیتوانید، یعنی به جای فهمیدن، آن را حفظ کردهاید.
- به تدریج پروژههای کوچک را شروع کنید. حدود ۳۰ تا ۵۰ مسئله را بررسی کنید، چیزی بسازید: یک لیست کارها، یک برنامه آب و هوا روی یک API رایگان، یک ماجراجویی متنی. اینجاست که مهارتهای جداگانه شروع به همکاری با یکدیگر میکنند.
وقتی در یک چالش کدنویسی گیر میکنید چه باید بکنید؟
شما گیر خواهید کرد. توسعهدهندگان ارشد قبل از ناهار گیر میکنند. چیزی که آنها دارند یک روال برای رهایی از گیر افتادن است، پس یکی از آنها را قرض بگیرید:
- مشکل را با کلمات خودتان دوباره بیان کنید. تعداد شگفتآوری از لحظات «من نمیتوانم این را حل کنم» در واقع «من آن را اشتباه تعبیر کردم» هستند.
- یک مثال را با دست حل کنید. ورودیهای کوچک، خودکار و کاغذ، و هر قدمی که برمیدارید را بنویسید. تبریک میگویم، این الگوریتم شماست.
- اول شبهکد را بنویسید. «برای هر عدد، اگر از بزرگترین عدد فعلی من بزرگتر است، آن را نگه دارید.» اصلاح آن به زبان ساده آسانتر از کد است.
- همه چیز را چاپ کن. اکثر باگها یک متغیر هستند که چیزی غیر از آنچه شما فرض کردهاید را در خود نگه میدارد. آن را چاپ کن و متوجه خواهی شد.
- آن را با صدای بلند توضیح دهید. کد خود را خط به خط، برای یک شخص یا یک اردک پلاستیکی، توضیح دهید. اشکال نرمافزاری اغلب در اواسط جمله خود را نشان میدهد.
- از نکات به صورت مرحلهای استفاده کنید. بسیاری از پلتفرمها قبل از پاسخ کامل، یک نکته ارائه میدهند. نکته را بخوانید، سپس دوباره شروع کنید.
هر کاری که میکنید، فقط راهحل را کپی نکنید، عبور آن را تماشا کنید و به کار خود ادامه دهید. من مدتی این کار را انجام دادم و به جایی نرسیدم. اگر پاسخی را خواندید، تب را ببندید، یک ساعت صبر کنید و خودتان آن را از نو بسازید.
چالشهای کدنویسی با تم کریپتو برای مبتدیان بلاکچین
شاید پرداختهای کریپتو یا بلاک چین دلیل اصلی شما برای یادگیری کدنویسی بوده است. سپس روی مسائل مربوط به آن دنیا تمرین کنید. اصول اولیه یکسان هستند (رشتهها، اعداد صحیح، APIها)، اما وظایف بسیار شبیه کارهای فنی دنیای واقعی هستند. برای هیچ یک از این موارد نیازی به درک الگوریتمهای اجماع ندارید.
- قیمت زنده کوین را دریافت کنید. به یک API قیمت ارز دیجیتال عمومی و رایگان دسترسی پیدا کنید، قیمت فعلی بیت کوین را چاپ کنید، هر دقیقه رفرش کنید. سلام، درخواستهای HTTP و JSON.
- اعتبارسنجی قالب آدرس کیف پول. بررسی کنید که آیا یک رشته شبیه یک آدرس قابل قبول است یا خیر: طول مناسب، پیشوند مناسب، فقط کاراکترهای مجاز. تمرین رشته دوستداشتنی و مقدمهای مختصر بر عبارات منظم.
- یک مبدل واحد بسازید. ساتوشی به بیتکوین (۱ بیتکوین = ۱۰۰,۰۰۰,۰۰۰ ساتوشی)، وی به اتریوم (۱ اتریوم = ۱۰¹⁸ وی). به سرعت متوجه خواهید شد که چرا مقادیر شناور و پول با هم سازگار نیستند و چرا توسعهدهندگان مقادیر را به صورت اعداد صحیح نگه میدارند.
- یک رشته را با SHA-256 هش کنید. یک جمله را با کتابخانه استاندارد خود هش کنید، یک حرف را تغییر دهید، دوباره آن را هش کنید. خروجی کاملاً متفاوت. این ویژگی بخش بزرگی از چیزی است که بلاکچینها را در کنار هم نگه میدارد.
- یک صفحه پرداخت ساده ایجاد کنید. یک صفحه محصول با دکمه "پرداخت با کریپتو" که از طریق API درگاه پرداخت، یک فاکتور آزمایشی ایجاد میکند.
مورد آخر بقیه موارد را به هم مرتبط میکند: یک فرم، فراخوانی API، مدیریت خطا و نمایش نتیجه به یک کاربر واقعی. درگاههایی مانند Plisio یک API و اسنادی منتشر میکنند که میتوانید به یک فروشگاه تمرینی وصل کنید، که باعث میشود یک تمرین مبتدی بسیار شبیه یک ادغام تجارت الکترونیک واقعی به نظر برسد.
تمرین کدنویسی خود را همین امروز با یک مسئله شروع کنید
وقتی به گذشته فکر میکنم، چیزی که واقعاً مرا به عنوان یک مبتدی از بنبست نجات داد، یک مسئلهی سخت افسانهای نبود. بهترین چالشهای کدنویسی برای مبتدیان، مسائل کوچک و کسلکنندهای بودند که واقعاً تمامشان میکردم، معمولاً آخر شب با چای سرد کنار لپتاپ.
پس امشب یک ویرایشگر باز کنید و FizzBuzz را راه بیندازید، کد زشت و از این حرفها. تا وقتی که هنوز جذاب است، به پایین لیست من بروید، و وقتی دیگر جذاب نبود، به هر سایتی از جدول که دوستانهتر به نظر میرسید، بروید. این عادت را آنقدر کوچک نگه دارید که کنار گذاشتنش کمی مسخره به نظر برسد. یک ماه دیگر، بعضی از اینها تقریباً کسلکننده به نظر میرسند، و این کسلکنندگی تقریباً همان چیزی است که داشتن مهارتهای کدنویسی واقعی از درون احساس میکند.