
در فرآیند آموزش برنامهنویسی، یکی از دشوارترین مفاهیمی که باید به دانشجویان منتقل شود، «طرز فکر» صحیح است، نه صرفاً یادگیری سینتکس یا حل تمرین. بسیاری از دانشجویان تصور میکنند اگر برنامهای برای چند ورودی معمولی بهدرستی اجرا شد، کار تمام است. اما در عمل، چنین نگاهی فاصلهی زیادی با دنیای واقعی نرمافزار دارد. به همین دلیل من همیشه به دانشجوهایم توصیه میکنم هنگام حل تمرینهای برنامهنویسی «زامبی باشند».
منظور از زامبی بودن، رفتار بدون فکر یا نوشتن کد شلخته نیست؛ بلکه دقیقاً برعکس، یعنی تلاش آگاهانه برای خراب کردن برنامه. دانشجو باید طوری با برنامهی خودش رفتار کند که گویی قصد دارد آن را از کار بیندازد. باید سعی کند ورودیهایی بدهد که برنامهنویس معمولاً انتظارش را ندارد و ببیند نرمافزار چگونه واکنش نشان میدهد.
برای مثال، تصور کنید تمرین سادهای داریم که وظیفهی آن تبدیل دمای سلسیوس به فارنهایت است. اغلب دانشجویان برنامه را با ورودیهایی مانند ۰، ۲۵ یا ۱۰۰ تست میکنند و پس از دریافت خروجی درست، نتیجه میگیرند که برنامه صحیح است. اما نگاه زامبیوار از همینجا شروع میشود: اگر بهجای عدد، رشته وارد کنیم چه اتفاقی میافتد؟ اگر ورودی خالی باشد چطور؟ اگر کاربر عددی بسیار بزرگ، مقدار منفی افراطی، کاراکترهای غیرمنتظره یا حتی ایموجی وارد کند چه میشود؟ در بسیاری از موارد برنامه با خطا متوقف میشود یا رفتار پیشبینینشدهای نشان میدهد؛ و دقیقاً همین شکستها ارزش آموزشی دارند.
اهمیت این نوع نگاه زمانی روشنتر میشود که بدانیم کاربران واقعی قابل پیشبینی نیستند. آنها مستندات را کامل نمیخوانند، اشتباه تایپ میکنند، یا اصلاً درکی از محدودیتهای برنامه ندارند. از سوی دیگر، هکرها نیز دقیقاً با همین ذهنیت عمل میکنند؛ آنها هرگز از برنامه همانطور استفاده نمیکنند که ما انتظار داریم، بلکه همواره بهدنبال لبهها، ضعفها و حالتهای غیرعادی هستند. بنابراین اگر خودِ برنامهنویس نتواند برنامهاش را خراب کند، بهاحتمال زیاد فرد دیگری این کار را خواهد کرد.
در واقع، بدبینی در برنامهنویسی نهتنها ویژگی منفی نیست، بلکه یکی از نشانههای بلوغ حرفهای محسوب میشود. برنامهنویس باتجربه دائماً از خود میپرسد: اگر ورودی نامعتبر بود چه میشود؟ اگر داده ناقص باشد چطور؟ اگر کاربر عمدی یا سهوی رفتاری خارج از انتظار داشت چه اتفاقی میافتد؟ همین سؤالها برنامهنویس را به سمت اعتبارسنجی ورودیها، مدیریت مناسب خطاها، نوشتن پیامهای خطای قابل فهم و در نهایت تولید کد مقاومتر و امنتر سوق میدهد.
تمرینی که میتوان به دانشجویان پیشنهاد داد ساده اما بسیار اثرگذار است: هر برنامهای که مینویسید، ابتدا از درست کار کردن آن با ورودیهای معمولی مطمئن شوید، سپس عمداً تلاش کنید آن را خراب کنید. هر جا که برنامه شکست خورد، بهجای ناراحت شدن، آن را فرصتی برای بهبود کد بدانید. این چرخه را آنقدر تکرار کنید تا خراب کردن برنامه دیگر کار سادهای نباشد.
در نهایت، «زامبی بودن» در برنامهنویسی یعنی مسئولانه فکر کردن. یعنی درک این نکته که نرمافزارها فقط برای شرایط ایدهآل نوشته نمیشوند، بلکه باید در برابر بدترین و غیرمنتظرهترین استفادهها نیز تاب بیاورند. برنامهای که صرفاً «کار میکند» الزاماً برنامهی خوبی نیست؛ برنامهی خوب، برنامهای است که حتی وقتی همهچیز علیه آن است، از هم نمیپاشد.