فصل پنجم - الگوهای کارآموزی
یادگیری همیشگی
توسعهی نرمافزار تولید محصول نیست؛ بلکه فعالیتِ کسبِ دانش است.
نرمافزار فقط جایی است که ما دانشی را که به دست آوردهایم، ذخیره میکنیم.
خیلیها منتظرند تا "شرایط مناسب" از راه برسد تا یادگیری را شروع کنند. وقتی پروژه تمام شد، وقتی سرشان خلوت شد، وقتی استرس کم شد...
اما سی. اس. لوئیس حقیقت تلخی را میگوید: شرایط مناسب هرگز نخواهد آمد. تنها کسانی موفق میشوند که در میانهی جنگ و آشوب، با ولع به دنبال دانش میگردند.
نویسندگان در این فصل، تفاوت حیاتی میان کار کردن و تمرین کردن را روشن میکنند.
نوازندگان بزرگ، ساعتها در تنهایی تمرین میکنند تا فقط یک ساعت اجرا کنند. اما برنامهنویسان چه؟ ما معمولاً تمام روز را در حال اجرا (کدنویسی برای پروژه) هستیم و هیچ وقتی برای تمرین (بدون استرسِ تحویل) نمیگذاریم.
برای اینکه در مسیر استادی بمانید، باید این الگوها را زندگی کنید:
۱. تمرین، تمرین، تمرین:
همانطور که در هنرهای رزمی کاتا وجود دارد، در برنامهنویسی هم باید زمانهایی را به حل مسائل تکراری و ساختگی اختصاص دهید. جایی که اشتباه کردن هزینه ندارد. اگر در زمان کار اشتباه کنید، باگ تولید کردهاید؛ اما در زمان تمرین، اشتباه یعنی یادگیری.
۲. اسباببازیهای شکستنی (Breakable Toys):
لینوس توروالدز لینوکس را نساخت چون میخواست دنیا را تغییر دهد؛ آن را ساخت چون فقط یک سرگرمی بود.
شما هم باید پروژههایی داشته باشید که فقط مال خودتان باشد. یک ویکی شخصی بسازید، یک بازی بنویسید، یا یک سیستمعامل ساده و ناقص طراحی کنید. اینها اسباببازیهایی هستند که اجازه دارید آنها را بشکنید، خراب کنید و از دلِ خرابیهایشان معماری واقعی را یاد بگیرید.
۳. استفاده از کد منبع (Use the Source):
فقط کتاب نخوانید؛ کد بخوانید. بیل گیتس میگفت سطل زبالههای مرکز کامپیوتر را میگشت تا کدهای سیستمعامل دیگران را پیدا کند و بخواند. کد، داور نهایی است. خواندنِ کدهای متنبازِ خوب، به شما یاد میدهد که بزرگان این صنعت چگونه فکر میکنند.
۴. یادگیری را ثبت کن و به اشتراک بگذار:
وبلاگ بنویس، نه برای اینکه مشهور شوی، بلکه برای اینکه وقتی مینویسی، مجبور میشوی عمیقتر فکر کنی. وقتی یکی درس میدهد، دو نفر یاد میگیرند.
این فصل یک هشدار بزرگ دارد:
تجربه با تکرار فرق دارد.
بسیاری از برنامهنویسان ۱۰ سال تجربه ندارند؛ آنها ۱ سال تجربه دارند که ۱۰ بار تکرار شده است.
یادگیری همیشگی یعنی هر روز به دنبال راهی باشی تا نادانیات را به مهارت تبدیل کنی، حتی اگر این فرآیند دردناک باشد. چون دردِ یادگیری، تنها نشانهی رشد است.