توصیه‌هایی به برنامه‌نویس‌های تازه‌کار، به مناسبت روز برنامه‌نویس

با عرض سلام و احترام خدمت دوستان خوب و عزیزمامروز تصمیم گرفتم که به مناسبت روز برنامه‌نویس مقاله‌ای منتشر کنم. نکاتی که در فیلم‌های آموزشی و یا مصاحبه‌ها به آن‌ها اشاره می‌کنم را به صورت متمرکز در اختیار دوستاران برنامه‌نویسی قرار دهم.یکی از مهم‌ترین پیش‌نیازهای برنامه‌نویسی، ذهن الگوریتمی و دقیق است! این ذهنیت را یا باید به طور ذاتی داشته باشیم و یا آن را پرورش دهیم.چگونه می‌توانیم شناسایی کنیم که خودمان یا دیگران چنین ذهنی دارند؟فارغ از سن، مدرک تحصیلی و تمرین و ممارست در خصوص ذهن الگوریتمی و دقیق به موارد ذیل دقت کنید، با این دو نمونه بدوی، به سادگی متوجه می‌شویم که آیا ذهنی الگورتیمی و دقیق داریم یا خیر؟مثال اولفرض کنید که یک مهمانی در جایی نسبتا پرت در اطراف شهرستان کرج گرفته‌اید و می‌خواهید به دوست خود، نشانی آن را ارسال کرده و طوری او را توجیه کنید که وی به سادگی به محل مورد نظر و به وقت برسد (فرض هم می‌کنیم که هنوز بحث Location و Google Map و غیره وجود ندارد). اگر دوستتان به وقت به مهمانی رسید و با لبخند به شما گفت که فلانی، دمت گرم! چقدر پیش‌بینی همه چیز را کرده بودی و خیلی راحت رسیدم... شما ذهنی دقیق و الگوریتمی دارید... ولی اگر دوست شما در اواسط مسیر کلافه شده و به شما زنگ زده و می‌گوید که فلانی! این چه مدل آدرس دادن است! من اصلا نمی‌دانم کجا هستم و شمال و جنوب خودم را گم کرده‌ام! شما قطعا ذهنی دقیق و الگوریتمی ندارید!مثال دومهمان‌طور که در مقدمه اعلام کردیم، اتفاقا ذهن دقیق و الگورتیمی به سن و سواد هم می‌تواند ارتباطی نداشته باشد، شاید بارها شاهد بوده‌ایم که یک تازه عروس برای درست کردن قرمه‌سبزی در منزل همسر، ب مادرش تماس تلفنی برقرار می‌کند و مادرش در کمال آرامش و با دقت و با پیش‌بینی همه موارد مانند اگر بیش از حد ترش شد، شور شد، ته گرفت و غیره... باعث تولید یک قرمه‌سبزی خوش‌مزه و یا لااقل قابل خوردن می‌شود، فارغ از این‌که مادر عروس ممکن است فقط ۴ کلاس سواد داشته باشد و یا دکترای فیزیک اتمی باشد، به راحتی به این نتیجه می‌رسیم که وی دارای ذهنی دقیق و الگوریتمی می‌باشد.این‌که حتی بتوانیم به راحتی با بازی‌های استراتژیک بازی کنیم، خود نشانه داشتن ذهنی الگوریتمی می‌باشد. حال سوال دقیقا اینجاست که اگر چنین ذهنی نداریم، چگونه می‌توانیم ذهن الگورتیمی پیدا کرده و یا آن را تکمیل کنیم.بسیار ساده است! بارها در کلاس‌های آموزشی خود و برای علاقه‌مندان برنامه‌نویسی این تمرین را انجام می‌دهم. چه تمرینی!؟ تمرین آن است که در کلاس را قفل می‌کنم و کلید را در یکی از جیب‌های شلوارم قرار می‌دهم و در انتهای کلاس بر روی یک صندلی می‌نشینم و به دانش‌پژوهان اعلام می‌کنم که دوستان! از حالا به بعد، من صرفا یک روبات هستم! هیچ‌گونه خلاقیتی ندارم و صرفا هر آن‌چه به من می‌گویید را انجام می‌دهم. پس تلاش کنید با دقت و با پیش‌بینی همه شرایط، طوری مرا هدایت کنید که بتوانم درب کلاس را باز کنم! با خنگ‌بازی‌هایی که انجام می‌دهم، دانش‌پژوهان به مرود متوجه می‌شوند که باید دقیق‌تر صحبت کرده و شرایط مختلف را پیش‌بینی کنند! چرا که قطعا با درخواست‌های غیرمنطقی، نادقیق و غیر الگوریتمی آن‌ها، من بارها از صندلی به زمین پرتاب شده و یا به درب و دیوار برخورد کرده و یا با دست خالی در حال باز کردن قفل درب کلاس خواهم بود!ذهن استقراییدومین نوع ذهنی که باید یک برنامه‌نویس داشته باشد، ذهن استقرایی است! ذهن استقرایی یعنی چه!؟ بگذارید مثالی بزنم. فرض کنید که من می‌گویم بعد از عدد یک، عدد یازده می‌آید. بعد از عدد دو، عدد بیست و دو می‌آد. بعد از عدد سه، عدد سی و سه می‌آید... حال از شما سوال می‌کنم که به نظر شما بعد از عدد چهار چه عددی می‌آید و بدیهی است که شما خواهید گفت، عدد چهل و چهار. همانطور که متوجه شده‌اید، من مطلقا آموزش نداده‌ام که بعد از عدد چهار، عدد چهل و چهار می‌آد! ولی شما توانستید پاسخ درست را بگویید. یعنی از نمونه‌هایی که در ابتدا عنوان کردم، با کمک ذهن استقرایی توانستید پاسخ درست را اعلام نمایید.حال سوال اینجاست که چرا به ذهن استقرایی نیاز داریم؟ در پروژه‌های رایانه‌ای و در اکثر موارد به مشکلاتی برخورد می‌کنیم که راه‌حل آن‌ها را نمی‌دانیم و شک نداشته باشید که اگر تمام اینترنت را هم جستجو کنید نمی‌توانید دقیقا همان سوال خود و جواب مورد نظر را پیدا کنید! بلکه صرفا می‌توانید سوال‌های مشابه را پیدا کرده و با مشاهده پاسخ‌های آن‌ها و یاری جستن از ذهن استقرایی، مشکل خود را حل کنید و اگر ذهن شما فاقد ویژگی ذهن استقرایی باشد، طبعا ساعت‌ها، روزها و حتی ماه‌ها، تکمیل پروژه با وقفه روبرو شده و باید شخصی را پیدا کنید که آن مشکل شما را حل کند!خاطره‌ای از (عدم) ذهن استقرایی یکی از شاگردان عزیزمدر حوالی سال‌های ۱۳۸۰، زمانی که من در کلاس‌های آموزشی Visual Basic آموزش می‌دادم، یک شاگردی داشتم که همیشه سر وقت سر کلاس می‌آمد و سر وقت می‌رفت و همیشه همه تکالیف را با دقت انجام می‌داد. در دوره‌های Visual Basic چون خیلی شاخ و برگ نداشت، می‌توانستم دوره را به صورت کاربردی پیش ببرم، به همین دلیل سر کلاس پروژه‌ای به عنوان دفترچه تلفن آموزش می‌دادم و به طور خلاصه جدولی درست می‌کردیم که دارای فیلدهایی مانند نام و نام خانوادگی و تلفن و آدرس و غیره داشت و متناظر آن‌ها کادرهای متنی در داخل فرم‌ها قرار می‌دادیم و دکمه‌هایی در صفحه قرار می‌دادیم مانند اضافه، ویرایش، ذخیره، حذف، اولین، قبلی، بعدی و آخرین و غیره. خلاصه این دوره با موفقیت به پایان رسید. پس از شش ماه این شاگرد عزیزم را دیدم که با غم و کمی خشم به سراغم آمد! از وی حالات روحی‌اش را پرس و جود کردم. وی گفت که شش ماهی می‌شود که به دنبال کار می‌گردم و بالاخره موفق شده‌ام که در شرکتی مشغول به کار شوم. من هم خیلی خوشحال شدم و به وی تبریک گفتم و بعد سوال کردم که خب پس مشکلت چیست!؟ ولی در حالی که چشمانش را از خشم کمی تیزتر کرده بود پاسخ داد که در آن شرکت از وی خواسته بودند که یک برنامه انبارداری ساده بنویسد! و من سوال کردم که خب، این که مشکلی نیست! برایشان به سادگی می‌توانی بنویسی! و ادامه داد! استاد!!! شما برنامه دفترچه تلفن به ما آموزش داده‌ای! نه برنامه انبارداری! زمانی که این پاسخ را داد تقریبا چشمانم داشت از حدقه در می‌آمد!!! این دوست خوب، کاملا فاقد ذهن استقرایی بود و هر چند مدت‌ها هم تلاش کرده بود نتوانسته بود این ذهنیت را در خود ایجاد کرده و یا تقویت کرده بود. قطعا این دوست خوب، تصور می‌کرد که باید برای نوشتن برنامه انبارداری به کلاس نوشتن برنامه انبارداری به زبان Visual Basic می‌رفته و یا برای برنامه حسابداری به دوره دیگری به نام حسابداری به زبان Visual Basic می‌رفته و اصلا متوجه نبود که برنامه دفترچه تلفن، صرفا یک نمونه و مثال بوده و وی باید با ذهن استقرایی، صرفا فیلدهای دیگری در بانک اطلاعاتی برای انبارداری ایجاد می‌کرد و فیلدهای فرم‌ها نیز برحسب برنامه انبارداری تغییر می‌کرد. به هر حال این دوست خوب من، بالاخره متوجه این مشکل شد و الان به عنوان یک خواننده در کشور کانادا در حال امرار معاش می‌باشد! پس لازم است که در این خصوص به چند نکته کلیدی که در ادامه بحث نوشته شده است، توجه نمایید.چند نکته کلیدی!خیلی وقت‌ها به دلیل چشم و هم چشمی، یا این‌که برنامه‌نویسی خیلی باکلاس است، افراد به سمت برنامه‌نویسی آمده و بعد از تلاش زیاد سرخورده می‌شوند! اشتباه نکنید! شما بهتر است که اگر به هر دلیلی به برنامه‌نویسی علاقه دارید، ابتدا یک دوره الگوریتم فلوچارت را گذرانده و یا مطالعه کرده و سپس یک زبان برنامه‌نویسی را آن هم در سطح مقدماتی بگذرانید. اگر با رعایت پیش‌نیازها و تلاش و کوشش نتوانستید با برنامه‌نویسی ارتباط برقرار کنید باز هم نباید سرخورده شوید و احساس کنید که فرد کودن و بی‌هوشی هستید! چرا که مغز انسان از دو قسمت چپ و راست برخوردار بوده و ممکن است که شما یک نقاش خوب و یا به طبع آن یک دیزاینر و طراح بسیار محشری شوید. در خارج از کشور معمولا تست‌های روانشناسی گرفته می‌شود که مشخص می‌کند شما که به طور کلی به فن‌آوری اطلاعات علاقه‌مند هستید، می‌توانید در چه حوزه‌ای موفق شوید. به عنوان مثال من به عنوان یک برنامه‌نویس خبره، مطلقا نمی‌توانم یک تحلیل‌گر خوبی باشم! چون یک تحلیل‌گر سیستم به صورت نادقیق و کلان به سامانه و پروژه‌ها نگاه می‌کند و من به عنوان یک برنامه‌نویس تا رنگ یک دکمه و یا فونت یک کادر متنی دقت دارم و اگر بخواهم صرفا یک تحلیلٰگر و طراح شوم، قطعا در دراز مدت به جنون خواهم رسید و یا این‌که شاید برای بعضی از شما عزیزان کمی عجیب باشد که من بعد از خرید چندین دوره فیلم‌های آموزشی Photoshop و حتی گرفتن معلم خصوصی، هنوز نتوانسته‌ام در طی این همه سال یک عکس در Photoshop ایجاد کرده و یا حتی ویرایش کنم و تنها نرم‌افزار گرافیکی که درک کرده و بکار برده‌ام صرفا Paint‌ ویندوز می‌باشد! و باور کنید که هیچ‌گاه احساس کودن بودن نکرده‌ام و از فن‌آوری اطلاعات منزجر و ناامید نشده‌ام.خلاصهبرنامه‌نویسی ضمن آن‌که می‌تواند در دراز مدت بسیار شیرین و جذاب باشد، نیاز دارد که پیش‌نیازهای لازم را به ترتیب و در کمال آرامش و همراه با تلاش و پشتکار پشت سر گذاشته و در این مسیر خود را و توفیقاتی که بدست می‌آوریم را بررسی و تحلیل نماییم و اگر بعد از ۶ الی ۹ ماه نتوانستیم از سرعت یادگیری خوبی برخوردار باشیم، می‌توانیم به شاخه‌های جذاب دیگری در فن‌آوری اطلاعات متوسل شویم، مانند تحلیل و طراحی، گرافیک و طراحی، شبکه و غیره. قطعا بسته به نوع کارکرد مغز، می‌توانیم بهترین شاخه را برای بهترین بازدهی پیدا کنیم.پی‌نوشتاین مقاله به دعوت شرکت خوب و پویای داتین نوشته شده است.پایانداتین - DOTIN