بد نیست قبل از ورود به هر حیطهای، ابتدا بررسی کنید که آیا از نظر ویژگیهای جسمی و روحی برای آن حیطه ساخته شدهاید یا خیر؟ گاهی یک انتخاب غلط مشکلات بزرگی پیش میآورد! در این زمینه قبلاً مطالبی داشتهایم؛ مثلاً:
- خانم ها در چه رشته هایی موفق تر هستند؟ آقایان در چه رشتههایی؟ (به ویژه در زمینه کامپیوتر)
- ده چیز که خانمها بهتر از آقایان میتوانند انجام دهند!
و یا مثلاً در مطلب «خودتان را بهتر بشناسید تا بهتر زندگی کنید» تیپهای شخصیتی و اینکه چه شغلی برای چه تیپی مناسبتر است را توضیح داده بودم...
اما به هر حال، اگر سؤال شما این است که آیا من به درد برنامهنویسی میخورم یا خیر؟ من یک آزمون ساده معرفی میکنم که پاسخ این سؤال را بفهمید:
آزمون عقبگرد یا Backtracking Test
دانشجویان رشته کامپیوتر در درس طراحی الگوریتم، با روشی برای طراحی الگوریتم آشنا میشوند به نام «عقبگرد» یا «Backtracking». در این روش شما برای یافتن پاسخ مسأله باید تمام مسیرهای مسأله که ممکن است پاسخ در آن مسیر باشد را پیمایش کنید و در نهایت به یک پاسخ صحیح برسید. وقتی به دنبال پاسخ، وارد یکی از مسیرها میشوید، هر چقدر هم که داخل رفتید، باید حواستان باشد که الان کجا هستید و مسیر برگشت کجا بود و مسیرهای باقیمانده کدامها هستند؟
نمونه مشهور مسائل مربوط به این نوع الگوریتمها، مسأله «هزارتو» یا Maze است که من از بچگی عاشق این بازیها در مجلات بودم و الان هم هر کجا گیر بیاورم تا آخر میروم:
آزمون ابداعی من این است:
مغز شما در روز چندین و چند بار در یک هزارتو قرار میگیرد. وقتی الان در حال فکر کردن به یک موضوع هستید، ناگهان متوقف شوید و بررسی کنید که آیا میتوانید بفهمید که شروع افکار شما کجا بود و از کجا وارد این فکر شدید؟
اگر بتوانید به نفطه آغازین که از آنجا این فکر شروع شد برسید، شما استعداد برنامهنویسی دارید و احتمالاً برنامهنویس موفقی خواهید شد.
مثلاً من دیشب وسط نماز صبح متوجه شدم که دارم به یک ماشین خاص که قصد دارم بخرم فکر میکنم! خوب، برایم تعجبآور بود که چه شد که به اینجا رسیدم!؟ سریعاً برگشتم عقب که نقطه آغاز را پیدا کنم و کردم:
- قضیه از این قرار بود که در نماز صبح باید سوره را بلند بخوانیم. من کمی که بلند خواندم، احساس کردم که صدایم از اتاق بیرون میرود و اعضای خانواده که خواب هستند متوجه میشوند.
- بعد به این فکر رفتم که دیوارهای این خانه که قدیمی است، خانههای جدید که سفال ساده است چطور خواهد بود؟
- بعد به این فکر رفتم که اگر رفتم خانه جدید کجا نماز بخوانم که با آن دیوارهای سفالی صدا به اتاقهای دیگر نرود.
- بعد از آنجا به این فکر رفتم که دیشب که فلان دوستم را آورده بودم آن خانه صحبت از اتاق خواب شد و نظراتی داشت...
- بعد از آنجا به این فکر رفتم که دوستم در فلان اداره است.
- بعد یادم افتاد که رئیس آن اداره ماشین مورد نظرم را دارد، باید از طریق این دوستمان با او تماس بگیرم و نظرش را در مورد آن ماشین بپرسم!
تصور کن! اگر دقت کنید در روز دهها بار ذهن شما این مسیرهای عجیب را پیمایش میکند! اگر شما بتوانید در هر بار و در هر جا از مسیرها به عقب برگردید و ببینید شروع این فکر از کجا بود، شما کاندیدی برای برنامهنویس شدن هستید.
دانشجوها میدانند که من این تست را چند بار در هر کلاس روی آنها انجام میدهم! وقتی بحث، حسابی تو-در-تو میشود، یک دفعه بحث را متوقف میکنم و میگویم: اگر گفتید از کجا به اینجا رسیدیم؟ گاهی از بین مثلاً سی دانشجو فقط یک نفر میتواند بگوید از فلان جا به خاکی زدیم و من میدانم که او دقیقاً برنامهنویسی میکند... مثلاً امروز از بحث اینکه طول جدولِ کلی سایت را در طراحی وب چقدر بگیریم، وارد بحث Usability (کاربردپذیری) و از آنجا وارد طراحی Responsive و از آنجا وارد بحث آمارگیرهای سایتها و از آنجا وارد افزونههای وب و از آنجا وارد تناسب طلایی و... شدیم! معمولاً خودم خیلی بعید است که مسیر را گم کنم...
آزمون عقبگرد و سخنرانان ماهر
این آزمون برای اینکه بفهمید آیا سخنران ماهری میشوید یا خیر نیز کاربرد دارد. بارها دیدهاید که یک سخنران با یک بحث شروع میکند و اصلاً از جاهایی سر در میآورد و به قول معروف «الکلام یَجُرُّ الکلام» (حرف حرف میآورد) و در نهایت میبینی یک خروار مبحث ناتمام به مخاطب ارائه کرد!
در نوجوانی وقتی سخنرانیهای استاد فاطمینیا را گوش میکردم، متوجه شدم که او در این آزمون میتواند یک الگو باشد!
اگر سخنرانیهای ایشان را گوش کنید، متوجه میشوید که ممکن است در یک سخنرانی دهها انشعابِ تو-در-تو ایجاد کنند اما تقریباً همیشه با موفقیت به عقب برمیگردند و بحثهای باز را یکییکی تمام میکنند و نهایتاً بحث اصلی بسته میشود.
برنامهنویسی دائماً نیاز به عقبگرد دارد
در برنامهنویسی شما دائماً آکولاد باز میکنید و یک خروار کد مینویسید و در بین آنها دوباره یک خروار آکولاد دیگر باز میشود و همینطور تو-در-تو مثل یک چنگال (Fork) انشعاب (Branch) ایجاد میکنید و در همه این مسیرها باید حواستان به عقب باشد که این آکولادی که باز شد آیا تمام جوانبش در نظر گرفته شد؟
برنامهنویسان این تمرین را تکرار کنند
گذشته از اینکه این ایده یک آزمون است، یک تمرین مهم برای برنامهنویسان هم میتواند باشد. اگر برنامهنویس هستید، با این چالش میتوانید بدون نیاز به هیچ نوع امکانات خاصی دائماً ذهن خود را نرمش دهید. اگر به یک جا رسیدید که دیدید نمیتوانید راحت بفهمید که آغاز افکار چه بود، یک مشکلی به وجود آمده است...
علاوه بر تمرین بالا، در این سالها، بازیهایی برای زمینه تقویت ذهن برنامهنویسی معرفی کردهایم:
- بازیهایی برای تقویت ذهن دانشجویانی که دوست دارند برنامه نویس حرفهای شوند
- LightBot ؛ بهترین بازی برای آموزش و آمادهسازی کودکان تا دانشجویان برای برنامه نویسی
- n-back test ؛ بازیای برای تست حافظه فعال شما
- بازی Limbo و بازی دیگر همان شرکت یعنی Inside هم که معرف حضورتان هستند!
موفق باشید؛
حمید رضا نیرومند