
تقریباً همهی برنامهنویسها یک نقطهی مشترک دارند:
در مقطعی حس میکنند گیر کردهاند.
کد میزنند، پروژه تحویل میدهند، حتی شاید درآمد خوبی هم داشته باشند، اما در درونشان میدانند که رشد واقعی متوقف شده.
در این نقطه، معمولاً دو واکنش دیده میشود:
یا سراغ یاد گرفتن یک فریمورک جدید میرویم،
یا احساس میکنیم «استعدادش را نداریم».
اما حقیقت این است که لولاَپ شدن، خیلی کمتر از آنچه فکر میکنیم به ابزار مربوط است و خیلی بیشتر به نوع نگاه ما به مسئله و کدنویسی.
در این نوشته، فرض کن من جان اسکیت هستم؛ کسی که سالها با کد، باگ، مستندات و سؤالهای عمیق سر و کار داشته. نه برای اینکه نسخهی جادویی بدهم، بلکه برای اینکه مسیر فکر کردن را شفافتر کنم.
بیشتر ما برنامهنویسی را با «چطور» یاد میگیریم:
چطور API صدا بزنم؟
چطور این خطا را رفع کنم؟
چطور این فیچر را سریعتر پیاده کنم؟
این طبیعی است. اما اگر در همین مرحله بمانی، رشدت خیلی زود سقف میخورد.
برنامهنویس حرفهای وقتی کدی کار میکند، راضی نمیشود. مکث میکند و میپرسد:
چرا این کد درست کار میکند؟
اگر شرایط عوض شود چه؟
اگر سیستم بزرگتر شود، دادهها بیشتر شوند یا همزمانی اضافه شود، آیا باز هم جواب میدهد؟
«چرا» پرسیدن، مغزت را از مصرفکنندهی راهحل به تحلیلگر سیستم تبدیل میکند.
و این دقیقاً همان نقطهای است که لولاَپ واقعی اتفاق میافتد.
بسیاری از برنامهنویسها به چند زبان «مسلطاند»، اما به هیچکدام عمیقاً مسلط نیستند.
دانستن syntax چند زبان، تو را قوی نمیکند؛ فهم عمیق یک زبان میکند.
وقتی میگویم عمیق، منظورم اینهاست:
حافظه چگونه مدیریت میشود؟
سیستم type چه محدودیتها و چه مزایایی دارد؟
در شرایط مرزی (edge cases) چه رفتاری میبینیم؟
همزمانی واقعاً چگونه پیادهسازی شده؟
خواندن مستندات رسمی سخت است، کند است و هیجان ندارد؛
اما دقیقاً همانجایی است که تفاوت ایجاد میشود.
وقتی زبانت را عمیق بفهمی، دیگر:
باگها تو را غافلگیر نمیکنند
رفتار عجیب سیستم برایت «جادو» نیست
و تصمیمهایت آگاهانهتر میشوند
یکی از بزرگترین سوءتفاهمها این است که فکر میکنیم کیفیت، نتیجهی refactor بعدی است.
در حالی که کیفیت واقعی، قبل از نوشتن اولین خط کد شکل میگیرد.
برنامهنویس قوی قبل از تایپ:
روی نامها فکر میکند
ساختار را ساده نگه میدارد
و جرئت حذف کردن ایدههای اضافی را دارد
کدی که نوشته نشده:
باگ ندارد
تست نمیخواهد
نگهداری نمیخواهد
لولاَپ یعنی یاد بگیری چه زمانی کد کمتر بنویسی، نه بیشتر.
برنامهنویس ضعیف از باگ متنفر است.
برنامهنویس حرفهای باگ را یک سیگنال میبیند.
هر باگ یک سؤال مهم پشتش دارد:
چه فرض اشتباهی داشتم؟
چه چیزی را سادهانگارانه در نظر گرفتم؟
طراحی کجا میتوانست بهتر باشد؟
اگر فقط باگ را patch کنی، چیزی یاد نگرفتهای.
اما اگر ریشهاش را بفهمی، نهتنها آن باگ، بلکه یک کلاس کامل از خطاها را حذف کردهای.
بیشترین رشد واقعی، معمولاً از سختترین باگها میآید.
وقتی چیزی را فقط برای خودت بلد هستی، ممکن است توهم فهم داشته باشی.
اما وقتی مجبور میشوی آن را به دیگری توضیح بدهی، همهچیز روشن میشود.
توضیح دادن:
حفرههای دانشت را نشان میدهد
ذهنت را منظم میکند
و باعث میشود از سطح «بلد بودن» عبور کنی
لازم نیست استاد باشی.
نوشتن یک پست، جواب دادن به یک سؤال یا حتی توضیح دادن به یک همتیمی، تو را چند پله جلو میبرد.
این شاید عجیب به نظر برسد، اما فروتنی یک مهارت فنی است.
اگر فکر کنی:
«من بلدم»،
دیگر سؤال نمیپرسی.
نقد نمیشنوی.
و اشتباهاتت نامرئی میشوند.
برنامهنویس حرفهای:
راحت میگوید «نمیدانم»
نظرش را با دلیل میگوید، نه با قطعیت
و حاضر است نظرش را عوض کند
رشد، فقط در ذهنی اتفاق میافتد که جا برای یادگیری دارد.
زبانها تغییر میکنند.
فریمورکها میآیند و میروند.
اما تفکر خوب ماندگار است.
اگر یاد بگیری:
مسئله را درست تحلیل کنی
trade-offها را بفهمی
و سیستم را بهعنوان یک کل ببینی
یاد گرفتن هر ابزار جدید فقط زمان میبرد، نه انرژی ذهنی.
لولاَپ شدن یعنی:
نه سریعتر تایپ کردن،
نه بلد بودن ابزارهای بیشتر،
بلکه عمیقتر فکر کردن.
اگر هر روز کمی بهتر سؤال بپرسی،
کمی دقیقتر فکر کنی،
و کمی مسئولانهتر کد بنویسی،
در بلندمدت، فاصلهای ایجاد میکنی که با هیچ دوره یا فریمورکی پر نمیشود.
برنامهنویس خوب کد مینویسد.
برنامهنویس حرفهای، مسئله را میفهمد.