آیا برنامه نویسی سخت است؟ پاسخ در گفتگو با محمد عبدالهی، کارشناس ارشد مهندسی فناوری اطلاعات و مدرس فرادرس

۲۹۰ بازدید
آخرین به‌روزرسانی: ۲۰ شهریور ۱۴۰۲
زمان مطالعه: ۳۰ دقیقه
آیا برنامه نویسی سخت است؟ پاسخ در گفتگو با محمد عبدالهی، کارشناس ارشد مهندسی فناوری اطلاعات و مدرس فرادرس

دروغ چرا؟ من وقتی چیزی به کسی یاد می‌دهم، خودم بهتر یاد می‌گیرم. از قدیم و از بچگی. وقتی کلاس پنجم دبستان بودم و معلم «رضایی»، هم‌کلاسی‌ام در دوره دبستان شدم. بعد دیدم روی دیگرِ آدم‌ها وقتی بهشان چیزی یاد می‌دهی، چقدر دیدنی‌ است. مثل آنکه پشت گلبرگ را بگردانی و مخمل رز را برای اولین بار تماشا کنی. انگار مهربانی درونشان را کشف کرده باشی. همانطور که مهربانی «رضایی»؛ اولین شاگرد من در کلاس پنجم دبستان جوانه زد. من دیدمش؛ مثل یک دانه گندمِ نم‌خورده که از بالایش یک تیزیِ شیری رنگ، به امید سبز شدن، جیک بزند بیرون. تازه من معلم نبودم. خودم یازده سال‌ام بود همه‌اش. ولی برای «رضایی» معلمی کرده بودم. برای یک بچه همسن و سالِ خودم.

اگر می‌خواستم داستان زندگی «محمد عبدالهی»؛ کارشناس ارشد مهندسی فناوری اطلاعات و مدرس «فرادرس» را بنویسم، از اینجا شروع می‌کردم. وقتی کتاب را جلوی چشم‌های ترسیده «رضایی» باز کرده بود برای نخستین بار. رو به آن حجم مچاله شده تن گفته بود: اینجا را ببین! باید که اینطوری انجامش بدهیم!» بعد خودکار را از روی کاغذ برداشته بود و زل زده بود به مردمک‌های «رضایی»؛ همکلاسی خودش؛ همانی که همیشه تنبل صدایش می‌کردند تا پیش از آن.

«رضایی» فهمیده بود؟ نفهمیده بود؟ اما محمد عبدالهی؛ همان مدرسی که امروز روبروی من نشسته تا دار و ندارِ حرفه‌اش را بگذارد روی میز برای مخاطبان، همه چیز را می‌داند. آنقدر با «رضایی» کار کرده بود و بعد خودش به پر و پای یادگیری پیچیده بود که آخرِ کار تبدیل شد به مدرس سخت‌ترین آموزش‌ها؛ HTML, CSS, PHP, MySQL, jQuery, JavaScript و بیشتر. با زمینه کاری برنامه‌نویسی و طراحی وب.

البته که خوشش نمی‌آید کسی بگوید: «برنامه‌نویسی سخت است.» برنامه‌نویسی سخت است آقای مهندس! اجازه بدهید من بگویم: کار هر شخصی نیست. اما این را هم اضافه کنم شُمای مدرس سختکوش، آن فردِ جدی پشت آموزش‌های‌تان نیستید. اگر باور نمی‌کنید، یکبار مصاحبه‌تان را همراه مخاطبان ما گوش کنید و خودتان نظر بدهید. شما کاربران «فرادرس» همراهی‌مان می‌کنید؟

نسخه صوتی مقدمه

ذخیره کردن این فایل صوتی: لینک دانلود

نسخه ویدیویی مصاحبه

نسخه ویدیویی این مصاحبه در ادامه آورده شده است. همچنین، برای دانلود نسخه‌های ۷۲۰p و ۴۸۰p این مصاحبه نیز می‌توانید از لینک‌های زیر استفاده کنید.

نسخه صوتی مصاحبه (فایل صوتی) به صورت یکجا

ذخیره کردن این فایل صوتی: لینک دانلود

نسخه متنی مصاحبه

سلام خدمت شما آقای مهندس «محمد عبدالهی» و همینطور مخاطبان مجموعه «فرادرس» که صدای ما را می‌شنوند. ما امروز در خدمت یکی از مدرسان «فرادرس» هستیم که آموزش‌های ایشان مربوط به طراحی وب است و تحصیلات ایشان کارشناسی ارشد مهندسی فناوری اطلاعات. در ابتدا می‌خواهم اگر صحبتی با مخاطبان دارید، بفرمایید تا سوالات را مطرح کنم.

به نام خدا. سلام خدمت شما و همکاران محترم «فرادرس» و دوستان عزیز و دانشجویان گرامی که همیشه سعی کردیم در خدمت آن‌ها باشیم.

 

بزرگوارید. آقای مهندس عبدالهی 2500 پله صعود بین دانشگاه‌های دنیا شما را یاد داستان خاصی نمی‌اندازد؟

یاد چه داستانی؟

 

داستانش را شما باید تعریف کنید؟

قضیه از اینجا شروع می‌شود که زمانی که می‌خواستم کارم را شروع کنم. بعد از فراغت از تحصیل، دانشگاهی که دوره کارشناسی را در آن می‌خواندم، به شدت تحت فشار بود که رتبه پرتال و وب‌سایت‌ خود در رتبه‌بندی جهانی را ارتقا دهد. رتبه‌بندی توسط یک موسسه اسپانیایی انجام می‌شد.

 

سالی دو بار.

و نتیجه آن هم در وب‌سایت webometrics منتشر می‌شد. آن دانشگاه بسیار تحت فشار بود چون جزو دانشگا‌ه‌های برتر به حساب می‌آمد و باید وب‌سایت آن هم نمود درستی می‌داشت. اینطور شد که رئیس فناوری اطلاعات آن دانشگاه و معاون ایشان که استاد من بودند، به من و بسیاری افراد دیگر پیشنهاد دادند که می‌آیی یا نه؟ یک ایمیل به صورت همگانی ارسال شده بود. من نمی‌دانستم که این ایمیل برای چند نفر رفته. بعد از مدتی باز یک ایمیل برای من ارسال شد و گفتند: این ایمیل را خصوصی‌تر برای بیست یا سی نفر فرستادیم. بعدا متوجه شدم که آن دو ایمیل را فقط من جواب داده بودم و از من دعوت کردند برای شروع کار به آن دانشگاه بروم. بعد از مدتی تلاش، معماری پرتال و آموزش (بعد از دو-سه سال) توانستیم رتبه «وبومتری» دانشگاه را - نه خودِ رتبه علمی- را 2500 پله بهبود بدهیم.

 

«وبومتری» همان وب‌سنجی است که یک انجمن اسپانیایی انجام می‌دهد؟

بله وب‌سنجی با پارامترهای خاص خودشان. نه چیزهایی مثل «سئو» که شما در موتور جستجوی «گوگل» Google سراغ دارید. برای آن‌ها مهم است که چقدر انتشار علم را  درست در پرتال خود انجام می‌دهید.

 

آن زمانی که شما این کار را انجام دادید و رتبه دانشگاه را به رتبه 650 رساندید، فکر می‌کنم فقط دانش مهندسی کامپیوتر با گرایش نرم‌افزار داشتید. یعنی راهکارهای سازمانی را هنوز نیاموخته بودید. وارد دوره کارشناسی ارشد نشده بودید. چطور این کار را انجام دادید آقای مهندس؟

البته کار من تنها نبود. بعد از مدتی دیدیم نتیجه نمی‌گیریم. یک بار رئیسم به من گفت: من خیلی نگران این موضوع هستم. نمی‌دانم چه کنیم. آقای فلانی هم که مسئولیت این کار را دارد، دارد استعفا می‌دهد و می‌رود. گفتم: تو همه را امتحان کردی به جز من را. چرا به من اعتماد نمی‌کنی؟ ایشان گفت: اگر خودت مشکلی نداری که خیلی هم عالی است. گفتم: این کار را بسپار به من. ولی من هرچه هم گفتم باید اجرا شود. رئیس گفت: قبول است.

رفتیم و مطالعه را آغاز کردیم. یعنی اول رفتیم ببینیم آن موسسه اسپانیایی چه روشی برای انجام وب‌سنجی دارد. چه کار دارد می‌کند؟ سعی کردیم آن را بفهمیم و درک کنیم.برای آنکه به آن پارامترها دست پیدا کنیم، لازم بود مثلا بیاییم از پلتفرمی استفاده کنیم که کار تولید محتوا را سرعت ببخشد. برای اینکه همه دانشگاه‌ها بتوانند با این پلتفرم خوب تولید محتوا کنند، مجبور شدیم آموزش خیلی سنگینی بگذاریم و تک‌تک دانشگاهیان را در دانشگاه‌ را چهره به چهره آموزش دادم.

اساتید، کارکنان فناوری اطلاعات و کسانی که در دانشکده‌ها موظف بودند وب‌سایت آن دانشکده را مدیریت کنند-جزو این افراد بودند- ما به همه اینها آموزش چهره‌ به چهره دادیم. البته همکاران من هم به من کمک می‌کردند. اینطور نبود که فقط من باشم. ولی در مورد سیاست‌ها من خط می‌دادم و می‌گفتم: این اتفاق باید بیفتد. آن چیزی که مدنظر آن موسسه وب‌سنجی است، این است. بعد از مدتی تاثیر آن را دیدیم.

 

آن سیاست‌ها از کجا آمده بود. شما که درسش را نخوانده بودید آقای مهندس؟

اگر درس‌تان را خوب خوانده باشید، با دادن یک سرخط، شما می‌توانید تحلیل کنید و به یکسری حقایق برسید. اصل مهندسی این است که شما باید نظاره‌گر خوبی باشید. اول، همه چیز را خوب نگاه کنید، درک و تحلیل کنید و به یکسری نتایج برسید. بعد آن نتایج را به کار ببندید. من سعی کردم این کار را انجام بدهم. اولین کاری که من کردم این بود که روش آن موسسه را درک کنم و ببینم چه کار می‌کند. مثلا یک پارامتر به نام Openness داشت. توضیحاتی هم داده بود که Openness از نظر ما چیست. ما با بررسی‌ها تشخیص دادیم که اینها می‌خواهند هر علمی که تولید می‌کنی، خیلی سریع منتشرش کنی.

کم‌کم کار به جایی رسید که بازخورد هم می‌گرفتیم. شش ماه یکبار که این نتایج را می‌گرفتم، یک گزارش درست کرده بودم که تحلیلی بود و مقایسه می‌کردم. برای آن می‌جنگیدم. گاهی رئیس آن دانشگاه تمایل داشت مطلب خاصی در قسمتی از سایت دانشگاه بگذارد یا معاون پژوهشی ایشان چنین درخواستی داشتند. چون ما زیر نظر معاون پژوهشی دانشگاه بودیم. یکبار رفتم به ایشان-معاون پژوهشی- ثابت کردم تنها کسی که روی لینکِ مطلب شما کلیک کرده، خودِ شما بوده‌اید. در نتیجه ایشان حاضر شدند آن لینک را از روی سایت برداریم. چون سایت را خراب می‌کرد. واقعا برای این کار جنگیدیم و آن نتیجه‌ای که حاصل شد، نتیجه کار همه ما بود.

 

به همین خاطر در کارشناسی ارشد رفتید سراغ مهندسی فناوری اطلاعات؟

فقط به این خاطر نبود. من حس کردم مهندسی «فناوری اطلاعات» فقط به دنبال کامپیوتری بودن و کامپیوتری شدن نیست. بلکه به دنبال کاربرد کامپیوتر در زندگی، صنعت، دولت و همه جاست. یعنی کامپیوتری که تو به آن رسیدی، حالا چطور می‌توانی از علم آن برای پیشرفت امور کشور، دولت یا سازمان استفاده کنی؟ بالاخره سازمان هم نهاد کوچکتری است. اگر سازمان‌ها، نهادها و افراد اصلاح شوند، در نهایت برآیندش این است که مملکت درست می‌شود و به جای بهتری می‌رسد. به این لحاظ بود که خیلی دوست داشتم وارد این رشته شوم و به دانش خودم عمق ببخشم. چون یک تجربه به دست آورده بودم. و به این نتیجه رسیده بودم که اگر عمق پیدا کند، شاید از من آدم پخته‌تری در این صنعت بسازد.

مصاحبه عبدالهی

 

به نظر می‌رسد با وجود دانشی که دارید، حتما کار مرتبط هم دارید. حالا چطور با «فرادرس» آشنا شدید و وارد کار تدریس شدید؟

من تدریس را خیلی دوست داشتم. اولین تجربه تدریس من شاید پنجم دبستان باشد.

 

جدی می‌فرمایید؟ چه چیزی درس می‌دادید؟

آن زمان جزو دانش‌آموزان زرنگ مدرسه بودم. ما دانش‌آموزانی داشتیم که مشکلاتی داشتند و درس آن‌ها خوب نبود. معلم ما به من و دو-سه نفر دیگر تکلیف کرد و هر کدام ما را مأمور آموزش به یکی از این دانش‌آموزان کرد. مثلا یادم است به من گفت: تو باید به «رضایی» درس بدهی.

یادم است انقدر با این بچه کار کردم که نمرات او بهتر شد. حس می‌کردم آن دانش‌آموز من را خیلی دوست دارد و از یک آدم خشک که فقط سر کلاس می‌آمد و اصلا به کسی توجهی نداشت، به یک بچه بامحبت تبدیل شده بود. به طوری که می‌گفت: من تو را خیلی دوست دارم و وقتی صحبت می‌کنی، از تو خیلی یاد می‌گیرم. دیدم این بچه چقدر استعداد دارد. و اگر آن توجه و محبت بود، زودتر یاد می‌گرفت. دوباره در سوم راهنمایی این تجربه برای من تکرار شد.

 

این دفعه خودتان رفتید سراغ آن؟

شهر ما عوض شده بود. اما باز پسر دیگری بود که در درس ریاضی مشکل داشت. من سعی کردم به او یاد بدهم. دروغ چرا؟ اصلا در یاددادن خودم بهتر یاد می‌گرفتم و کار برای من خیلی جذاب می‌شد. این خصوصیت در دبیرستان پررنگ‌تر شد و از سال آخر دبیرستان برای من جنبه کسب درآمد پیدا کرد. یعنی درس می‌دادم و پول می‌گرفتم. تا زمانی که فارغ‌التحصیل شدم و دنبال این بودم که از جاهای مختلف پروژه بگیرم.

گفتم: وقتی جاهایی می‌روم و می‌گویم: بیایید برای شما سایت طراحی کنم، به من نمی‌گویند: تو خودت سایت داری یا نه؟ اگر سایت خوب است، چرا خودت نداری؟ گفتم: بگذار برای خودم سایت تهیه کنم. آن وقت دیدم سایت بدون محتوا نمی‌شود. پس من باید چه چیزی در آن بنویسم؟

گفتم در آن آموزش وب بدهم؛ چیزی که خوب بلد بودم. شروع کردم به آموزش دادن. کم‌کم دیدم به من زنگ می‌زنند، اما نمی‌گویند بیا برای ما پروژه انجام بده. در عوض می‌گفتند: بیا به ما درس بده. یادم نیست «فرادرس» اولین بار در سال 1392 یا 1393 با من تماس گرفت. من آن موقع نامی از «فرادرس» نشنیده بودم. حس می‌کردم کاری که می‌خواهند انجام بدهند، خیلی نمی‌گیرد.

شاید سود آنچنانی برای من نداشته باشد. برای همین قبول نکردم. سال 1394 دوباره با من تماس گرفتند. این دفعه رفتم و دیدم انگار فعالیت‌های خوبی انجام می‌دهند. آن‌ها هم از طریق سایت من مرا پیدا کرده بودند. قبول کردم و آموزش‌های من شروع شد. اولین آن‌ها HTML بود و بعد رفتم سراغ CSS و همینطور آموزش‌های تکمیلی تا رسیدیم اینجا.

 

پس شما در دوران مدرسه درس سخت نداشتید آقای مهندس؟

درس سخت چرا. عربی من خیلی بد بود و سختم می‌شد. الان خیلی عربی بلدم. یعنی اگر کلمات عربی بگویید، من راحت می‌فهمم. ولی دستور و گرامر آن واقعا در ذهن ننشست.

 

چه شد عربی تبدیل به زبانی شد که الان بلد هستید؟ خودتان می‌گویید کلمات عربی بگویی، من می‌فهمم.

خب علاقه من به ادبیات، شعر، کتاب و قرآن باعث شد. من علاقه زیادی به قرآن دارم و می‌خوانم. چون حس می‌کنم کلمات پرمحتوایی دارد و درس خوبی به آدم می‌دهد. دیدم کلمات مشترک زیاد داریم و توانستم از دل کلمات، معانی را استخراج کنم. با توجه به تشابه کلماتی که از دل کلمات دیگر می‌آیند، یک مقایسه‌ می‌کردم و می‌گفتم این کلمه فلان کلمه است. در فلان جا به کار رفته. معانی آن‌ها را به نحوی استخراج می‌کردم. گاهی به نحوی سعی و خطا بود و گاهی اصلا در معنی کردن اشتباه می‌کردم. ولی فکر می‌کنم دایره لغاتم در این زمینه بد نباشد.

 

خودتان تلاش کردید و یاد گرفتید؟

خودم تلاش کردم و معلم عربی خوبی داشتم که مرا علاقه‌مند کرد. کسی که شاید من بخشی از اخلاق تدریسم را از ایشان گرفته باشم. ایشان فقط نمی‌آمد درس بدهد. سعی می‌کرد با آدم رفیق شود. چیزهای جالب برای آدم داشت. کلاس او فقط کلاس عربی نبود. کلمات خشک کتاب را یاد نمی‌داد.

می‌گفت: «مثلا من سال‌ها در فلان کشور عربی تدریس کردم. یکبار رفته بودم بانک و اتفاقی برای من افتاد.» و بعد همین را به عربی تعریف می‌کرد. بعد من یاد می‌گرفتم. تعریف می‌کرد: «گرم‌اش شده و می‌خواسته پنکه روشن کند.» اما پنکه به عربی چه می‌شود؟ من همان لحظه نشستم و گوشه کتابم نوشتم «المروحه» یعنی پنکه.

این معلم به طور ناگهانی متوجه شد و گفت: «بارک‌الله. این خوب است. همه باید اینطوری باشید که تا یک کلمه گیر می‌آورید و دانش جدیدی کسب می‌کنید، یکجا یادداشت کنید». دانش آنقدر عزیز است که تا گرفتی، نباید آن را رها کنی. آن تشویق خیلی در ذهن من ماند. اصلا شوق یادگیری را در من دو چندان کرد.

 

آقای مهندس یک اعترافی بکنم؟ من قبل از مصاحبه، تعدادی از آموزش‌های شما را گوش کردم و به نظرم رسید آقای مهندس عبدالهی چقدر در آموزش دادن جدیت به خرج می‌دهند.

الان هنگام مصاحیه می‌بینم نقطه مقابل تصور قبلی من، شخصی روبروی من نشسته که بسیار خوش‌مشرب هستند. شما چنین بازخوردی از مخاطبان گرفته‌اید؟ مثلا به شما بگویند: با جدیت کمتر درس بدهید. یک ذره سرگرم‌کننده‌تر باشد یا از شما بخواهند احساساتی اضافه کنید به تدریس‌تان تا آن حالت جدیت از بین برود.

اولا نظر لطف شماست. من چنین بازخوردی را از خیلی‌ها گرفتم. وقتی من را از روی تصویرم و از روی کلاس مجازی‌ام قضاوت می‌کنند، می‌گویند تو خیلی جدی هستی. برخی از بچه‌های «فرادرس» در فضای مجازی من را پیدا می‌کنند و با من صحبت می‌کنند یا می‌خواهند مشکلی را حل کنند.

یا کسب تجربه‌ای باشد یا هر چه. در اولین برخورد می‌گویند: تو اصلا به جدیت کلاس‌هایت نیستی. راحت می‌شود با شما حرف زد.  یک دلیل این است که کلاس مجازی همه ابزار را از فرد مدرس می‌گیرد. چون بحث آموزش، کلا بحث جدی‌ای بوده. البته من در آموزش‌هایم جدیت به خرج می‌دهم. من در کلاس‌های حضوری هم موقع آموزش دادن جدی هستم. یا در مواقعی که می‌خواهم از دانشجو کار بگیرم.

ولی جایی که می‌خواهم تمرین بدهم، همان آموزش را گاهی با شوخی همراه می‌کنم. تا به ذهن دانشجو بنشیند، ولی نمی‌گذارم دانشجوی من را تنبل کند. من سر این موضوع خیلی حساس هستم و به این دلیل حساس هستم که می‌دانم که آن دانشجو امروز را برای یادگیری فرصت دارد. ممکن است فردا دیر باشد. یعنی اگر بخواهد این زمان را هم به شیطنت سپری کند، ممکن است که فردا بماند و نتواند وارد بازار کار شود. و خودش و خانواده‌اش دچار مشکل شوند. بنابراین آنجا که از آن‌ها کار می‌خواهم، واقعا جدیت به خرج می‌دهم. ولی سعی می‌کنم با کلام و شوخی کلاس را جوری روان کنم که دلنشین شود و بچه‌ها را از کلاس فراری ندهم.

 

یک نمونه آموزش از شما دیدم که ترجمه کرده بودید. البته شمایل آن با آموزش مجازی شما فرق می‌کرد. فکر می‌کنید اگر به آن صورت تدریس کنید، این حالت به مخاطب منتقل بشود که با شخصی مواجه است که هم جدیت را به موقع دارد و هم به موقع احساساتش را بروز می‌دهد؟ فکر می‌کنم آموزش «جی کوئری»  jQuery بود که شما همزمان ترجمه می‌کردید.

و شخص مدرس، گوشه تصویر حضور داشتند. آیا در ذهن شما هست که چنین آموزش‌هایی داشته باشید؟ اصلا امکان این هست که چنین اموزش‌هایی به صورت مجازی ارائه بدهیم؟

به نظر من این بهترین حالت آموزش است. یعنی آموزش باید به آن شکل باشد. چرا سراغ آموزش‌های مجازی می‌آییم. چون ظرفیت مجازی بودن آنقدر بالاست که شما می‌توانید از چند کانال به مخاطب‌تان، اطلاعاتی را که می‌خواهید منتقل کنید. وقتی که صحبت از آموزش مجازی می‌شود، نمی‌توان از پروفسور «علی اکبر جلالی» که افتخار ایران است، صحبت و یاد نکنیم. ایشان نظریه‌پرداز موج چهارم است.

یعنی نظریه‌پردازی‌ دنیای مجازی را ایشان انجام داده است که الان در دنیا در حال پیاده‌سازی است. بحث «متاورس» Metaverse از روی نظریات ایشان است که دارد شکل می‌گیرد و بقیه دارند آن را تکمیل می‌کنند. ایشان یک مثال می‌زد. یکی از آشنایان ما در سال 1380 کنفرانس‌های ایشان را با CD به دست من می‌رساند و می‌گفت: چون داری دانشجو می‌شوی، باید اینها را ببینی. ایشان شخص جالبی هستند. در یک مثالی که ایشان می‌زد، گفت: شما روی یک تخته بنویس «سیب». چه نتیجه‌ای از آن می‌گیری؟

آیا این سیب زرد است؟ سیب سبز است؟ یا قرمز؟ سیب زمینی است؟ سیب تازه است؟ سیب درشت است یا کوچک؟ کرم دارد؟ چه نوع سیبی است؟ سیب ترشی است؟ معلوم نیست. اما حالا بیا و تصویر سیب سرخ را به شخصی نشان بده. دیگر هر کلمه‌ای حرف بزنی، اضافه است. دیگر این مشخص است که یک سیب قرمز دماوندی، متوسط، تر و تازه است. اصلا دیگر نیازی به کلمه برای توضیح وجود ندارد. واقعا آن سیبی که ایشان تصویرش را به شما نشان می‌داد، تمام اطلاعات را به شما منتقل می‌کرد.

خب آموزش مجازی هم باید اینطور باشد. گاهی شما با یک حرکت دست یا مثال توضیح می‌دهی. بچه‌ها گاهی می‌گویند با همین مثال تو آن مسئله‌ای که تا به حال درک نکرده بودیم، درک کردیم. چون من آدمی هستم که این را بر خودم تکلیف کردم. می‌گویم: اگر تو مدرس هستی و قرار است تدریس کنی، البته قبل از شروع تدریس هم روحیه‌ام اینطور بود، یک چیز را خودم باید یاد می‌گرفتم. برای من جذابیت نداشت که دیگری بخواهد برای من توضیح بدهد. انگار جلوی خودم شرمنده می‌شدم.

وقتی خودم می‌رفتم یاد می‌گرفتم، دقیقا متوجه می‌شدم ضعف آن یادگیرنده کجاست؟ یعنی خودم هم ضعف داشتم دیگر. می‌گفتم: این قسمت را خودم متوجه نمی‌شوم. می‌رفتم 10 بار می‌خواندم و کار می‌کردم تا یاد بگیرم. آن وقت، اگر جلو کسی می‌نشستم تا یاد بدهم و آن شخص یاد نمی‌گرفت، دقیقا می‌دانستم کجا را یاد نگرفته و به چه دلیل. آن‌وقت مثالی برای او می‌زدم که درجا یاد می‌گرفت. هنر آموزش مجازی باید این باشد که از تمام کانال‌ها؛ از صدا، تصویر و فیزیک فرد و حتی لهجه استفاده کند. من زمان زیادی در اصفهان زندگی کردم و کلاس‌های حضوری در اصفهان زیاد داشتم. خودم هم خوزستانی هستم. یکبار یکی از بچه‌های خیلی نکته‌سنج کلاس گفت: استاد! چرا شما بعضی از کلمات را با لهجه اصفهانی می‌گویید؟

گفتم: می‌خواستم نفوذ آن زیاد شود. چون شما اصفهانی هستید. و اگر با لهجه اصفهانی بگویم، شاید نفوذ آن بیشتر شود. می‌خواستم تاکید کنم. خودم هم همینطور بودم. استادی داشتیم که مرحوم شده‌اند. خیلی از دانسته‌های من مرهون زحمات ایشان است. گاهی وقتی با ادبیات خاص کتابی صحبت می‌کرد، از او یاد می‌گرفتیم.

یعنی اگر هزاربار هم عامیانه می‌گفت، ما شاید متوجه نمی‌شدیم. ولی با آن حالت و شوخی‌هایی که ایشان می‌گفت، کاملا در ذهن ما قرار می‌گرفت. من سعی کردم چنین چیزهایی را برای خودم داشته باشم. حس می‌کنم جذاب است.

 

به نظر می‌آید خیلی چم و خم آموزش را بلدید آقای مهندس عبدالهی. در عناوین آموزشی که در «فرادرس» بعضی‌هایش خیلی پربازدید و پرمخاطب است.

ببینید من آموزش HTML، CSS و «جاوا اسکریپت» JavaScript دارم. همینطور jQuery و طراحی Responsive. البته آموزش Crash course on JavaScript هم در فاز هماهنگی است.

 

برای اینکه به این تقسیم‌بندی برسید که آموزش‌ها برای مخاطب کاربردی باشد، چقدر زمان گذاشتید؟ چه تغییراتی را لحاظ کردید؟ تا دانشجو آموزش را ببنید و بتواند وارد بازار کار شود.

اولا در بین سرفصل‌های درسی سعی کردم آن‌هایی را گلچین کنم که خودم طی سابقه‌ای که داشتم و در مورد آن‌ها تجربه کسب کردم، به کارم آمده است. من الان 14 یا 15 سال سابقه کار تخصصی در رشته کامپیوتر دارم. اگر یک دستور در این 14 سال که برنامه‌نویسی کرده‌ام و کار تحلیل و فنی انجام داده‌ام، مورد استفاده من واقع نشده به احتمال 99 درصد مورد استفاده شخص یادگیرنده هم قرار نمی‌گیرد.

پس چرا باید انرژی خود را صرف آن آموزش خاص کند. شاید گاهی بچه‌ها آن اوایل از آموزش HTML من ایراد می‌گرفتند. حتی «فرادرس» هم این ایراد را به من منتقل می‌کرد و من هم معمولا کامنت‌ها را می‌خواندم که «چرا این آموزش ناقص است؟» آن زمان می‌گفتند: HTML5 در آن نیست.

من می‌گفتم: اصلا اصرار دارم که شما HTML5 را الان یاد نگیرید. اگر شما آمدید HTML4 را یاد بگیرید، یا X HTML را یاد بگیرید، معنی‌اش این است که چیزهایی بلد نیستید. چون HTML5 در یک جاهایی «جاوا اسکریپت» نیاز دارد. «جاوا اسکریپت» که شما به صورت حرفه‌ای بلد باشید. یعنی وقتی می‌خوانید، بفهمید چه دارد می‌گوید. وقتی هنوز  HTML4 را بلد نیستید، قطعا «جاوا اسکریپت» را هم نمی‌دانید. وقتی «جاوا اسکریپت» را نمی‌دانید، قطعا HTML5 را هم متوجه نخواهید شد. حالا اگر من به تو HTML5 بگویم، شما می‌گویید: در مقدماتی آموزش داده‌اند دیگر.

یعنی گفته‌اند اول کار بروید  HTML یاد بگیرید. پس حس می‌کنی باید آن را یاد بگیری. ولی نمی‌توانی آن را یاد بگیری. چون پیش‌زمینه‌اش را نداری. بعد اذیت می‌شوی. یعنی وقتت را می‌گذاری. انرژی و انگیزه می‌گذاری. از همه مهمتر انگیزه است. وقتی انگیزه‌ات را از دست بدهی، من به عنوان یک مدرس چه کار کنم؟

من عمدا به بچه‌ها انتظار می‌دادم که عطشی پیدا کنند. تا فرصت بشود روی مطالب قبلی مسلط شوند. زمانی یک فرد تشنه به سراغ «ابوعلی سینا» آمد. او بیمار بود و «ابوعلی سینا» دید فرد بیمار، خیلی عطش دارد. به او یک ظرف آب داد، درحالیکه روی آب مقداری گیاه ریخته بود.بیمار برای آنکه آب بخورد، مدام ظرف آب را از لب خود جدا می‌کرد و گیاه‌های خشک را فوت می‌کرد که عقب بروند.

«ابوعلی سینا» این کار را کرد که فرد، یکباره آب را سر نکشد. گاهی در آموزش‌های‌مان مجبوریم این کار را بکنیم. ولی فردی که بیرون نشسته، فکر می‌کند که آموزش من ناقص است. در صورتی که ناقص نیست. من می‌خواهم به تو کمک کنم که از راه درست و در زمان مناسب بیایی. از این اتفاقات در دنیا خیلی افتاده. یک مثالی را در دوره ارشد برای درس معماری نرم‌افزار بیان کردم. استاد من از مثال خیلی خوشش آمد و شنیدم بعدها در کلاس‌های بعدی خود این مثال را به کار برده.

گفته شده «الله‌وردی‌ خان» زمانی که «سی‌وسه‌پل» را می‌ساخت، وقتی اشتیاق شاه عباس را دید که سریع می‌خواست «سی‌وسه‌پل» را بسازد، و مدام برای او ضرب‌الاجل تعیین می‌کرد که باید تا فلان تاریخ ساخته شود، پایه‌های پل را زد و بیست سال غیب‌اش زد. فرار کرد و به کشور دیگری رفت. او بعد از گذشت بیست سال پیدا شد.

نگهبان‌ها او را شناختند و دست‌بسته او را پیش شاه بردند. او هم گفت: من خودم آمده‌ام. چرا دست و بال مرا می‌بندید؟ شاه به او گفت: قبل از آنکه اعدامت کنم، بگو چرا این کار را کردی؟ او جواب داد: تو می‌خواستی یک بنا بسازی که سال‌ها به یادگار بماند. اگر من این بنا را دوساله می‌ساختم، نشست نمی‌کرد.

چند سال بعد نشست می‌کرد و آنوقت تخریب می‌شد. پس پایه‌های آن خراب می‌شد. این کار را کردم که در این بیست سال این پایه‌ها نشست کند. برای آنکه سازه‌ای که روی آن می‌گذاریم سال‌ها به یادگار بماند. که در نهایت تبدیل به سی‌وسه‌پلی شد که الان داریم. آموزش هم همین است. آموزش هم مثل یک آجرچینی است. یعنی شما باید بسترسازی کنی و آجر روی آجر بچینی و بالا بیایی. اگر همه‌اش را یکباره به کاربر خود بدهی، آنوقت است که نشست می‌کند. یعنی آنطور که «باید» یاد نمی‌گیرد.

 

به عنوان مخاطب می‌توانم این سوال را بپرسم؟ اگر در آموزش‌هایتان این موضوع را برای مخاطب توضیح بدهید، آیا تاثیر بیشتری روی فرد یادگیرنده نمی‌گذارد؟

من فکر می‌کنم ابتدای آموزش «جاوا اسکریپت» چنین چیزی را گفته‌ام. گفتم: که شما باید HTML و CSS را بلد باشید. یا گفتم اینجا آموزش «جاوا اسکریپت» است. پس من به کسی که آمده و آموزش «جاوا اسکریپت» می‌بیند، احترام می‌گذارم. فرض می‌کنم ایشان قبلا رفته و مبانی برنامه‌نویسی را یاد گرفته و الان آمده زبان سطح بالایی به نام «جاوا اسکریپت» را یاد گرفته که بیاید و وارد وب شود. بنابراین دستورات حلقه مانند For و Whille را نمی‌گویم.

یا اگر بگویم، خیلی سریع از آن رد می‌شوم. که در این آموزش هم گفتم، اما سریع از روی آن رد شدم. من تعجب می‌کنم خیلی از دانشجوها هستند که تا می‌آیند عجله دارند. می‌گویند: HTML و CSS را یاد گرفته‌ایم. نوبت آن است که برویم و «ری‌اکت» React کار کنیم؟ برویم «انگولار» Angular یاد بگیریم؟ یا می‌گویند: اینها را رد کن و برو. برو چیزهای پیشرفته «جاوا اسکریپت» را بگو. یا کلاس‌های حضوری من که خیلی‌هایش PHP است، می‌گویند: چیزهای پیشرفته PHP را بگو. گفتم : باشد می‌گویم. من یک تمرین به تو می‌دهم.

از همین‌هایی که می‌گویی ساده است. آن را حل کن. اگر توانستی حل کنی، من به تو جایزه می‌دهم. جایزه تو هم این است که یکراست می‌روم قسمت پیشرفته. جالب است که تا الان حتی یک نفر هم نتوانسته آن تمرین خاص من را در کلاس من حل کند.

 

آن تمرین سخت را می‌دهید دیگر؟

نه. یک تمرین خیلی آسان. یک برنامه بنویسید که از ورودی یک عدد بگیرد و جمله «فیبوناچی» متناظر با آن عدد را به ما بدهد. اکثر بچه‌ها یک راه در ذهن دارند. و همان یک راه را پیاده‌سازی می‌کنند. بعد آن یک راه مثلا تا عددِ 20 جواب می‌دهد. اگر یک کم بالاتر بروی، جواب نمی‌دهد.

 

چقدر تدریس کردن، فنون مختلف دارد و چقدر هم سخت به نظر می‌آید. عجیب‌ترین خاطره‌ای که در آموزش دادن داشتید چه بوده؟ فرقی ندارد مجازی یا حضوری.

تدریس که خاطره زیاد دارد. ولی یکی این بود که یکبار کسی با من تماس گرفت. او گفت: «یکی از آشنایان ما برای فرزندش دنبال مدرس است. خانواده در کانادا زندگی می‌کنند و دو ماه در سال به ایران می‌آیند. او می‌خواهد در دو ماه به فرزندش یک آموزش بدهد. دنبال آدمی می‌گردیم که خوشنام باشد و سابقه خوبی در تدریس داشته باشد. ما پرس و جو کرده و به شما رسیده‌ایم. آیا قبول می‌کنی؟». گفتم: «باشد. مسئله‌ای نیست». و ایشان جواب داد: «می‌گویم با شما تماس بگیرند». پدر فرد تماس گرفت و قرار شد برای آموزش یک زمان هماهنگ کنیم.

ایشان گفت: «در این ساعت بچه‌ام کلاس بسکتبال دارد.» من فکر می‌کردم این بچه 18 یا 20 ساله باشد. گفتند: «این ساعت کلاس شطرنج دارد. ساعت دیگری کلاس پیانو دارد.» طوری که حتی وقتی برای ایشان باقی نمانده بود. در نهایت گفتند: ساعت 14 تا 16 می‌توانیم کلاس داشته باشیم. مثلا از ساعت 14 بچه را از کلاس بسکتبال می‌آورد و ساعت 16 هم باید به کلاس شطرنج می‌رفت.

بین این دو ساعت وقت آن بود که آن دانش‌آموز غذا بخورد و بیاید سر کلاس من. من رفتم دیدم با یک بچه 10 ساله طرف هستم. گفتم: «آقا من باید به ایشان HTML و  CSS یاد بدهم. ایشان اصلا نمی‌تواند چیز دیگری یاد بگیرد». گفت: «خواهش می‌کنم آن دیدی که نسبت به یک بچه این سنی داری بگذار کنار و آموزش بده. اگر شما بگویی این نمی‌‌کشد، من قبول می‌کنم». گفتم: باشد.

حالا ثابت می‌کنم. بعد دیدم مثال‌هایی که من سر کلاس می‌زنم و دانشجوی فوق لیسانس کامپیوتر -با آنکه برای یک دانشجوی فوق لیسانس کامپیوتر و ترم دو کامپیوتر سخت نیست-. این بچه کلاس چهارم دبستان، پایه تمرین ریاضی را همان لحظه می‌فهمید. فکر کنید من به ایشان می‌گفتم: «فاکتوریل». او «فاکتوریل» بلد نبود و تازه آنجا می‌فهمید «فاکتوریل» چیست. بعد می‌نشست برنامه را به زبان C می‌نو‌شت. این برای من خیلی عجیب بود. من دو ماه به او آموزش دادم. سال بعد دوباره تابستان شد. خانواده دوباره به ایران برگشتند و با من تماس گرفتند که بیا یک مبحث دیگر یاد بده. این بار رفتم و به او «جاوا اسکریپت» یاد دادم.

سال بعد یادم است جلو تلویزیون داشتم بازی‌های جام جهانی یا جام ملت‌ها را نگاه می‌کردم. دوباره گوشی من زنگ زد. گفتند: ما فرودگاه «امام خمینی» هستیم. همین الان رسیدیم. و بچه ما می‌گوید: برای فردا صبح با آقای عبدالهی هماهنگ کن. یعنی رابطه‌ای بین ما ایجاد شده بود که اصلا دوست داشت با هم صحبت کنیم. گاهی از کانادا زنگ می‌زنند و می‌گویند: «این بچه دیگر درس نمی‌خواند. کمی نصیحتش کن». آن سال من رفتم و گفتم: من دیگر چیزی ندارم به تو یاد بدهم. این مدت چه کار کردی؟

گفت: من کتاب «جاوا اسکریپت» گرفتم و خواندم. یک بازی هم نوشته‌ام. از او پرسیدم: چه کتابی خوانده‌ای؟

سه تا کتاب قطور آورد. پرسیدم: واقعا اینها را خوانده‌ای؟ کتاب را باز کردم و دیدم صفحه 694 را با ماژیک خط کشیده. یک تکه از بازی‌های قدیمی «سگا» SEGA را که فکر می‌کنم «سوپر ماریو» Mario Series بود، با «جاوا اسکریپت» درست کرده بود. تا الان که 18 ساله شده و جوان است با هم در ارتباط هستیم. ایشان دیگر ایران نیامده و من به صورت مجازی از طریق «اسکایپ» Skype به ایشان درس می‌دهم.

خوشحال هستم اعلام کنم دارم با ایشان برای المپیاد کامپیوتر کار می‌کنم. ایشان هفته پیش نتایج اولیه‌ المپیادش اعلام شد. در مدرسه‌ای در «تورنتو» اول شده بود. حالا باید نتایج شهر بیاید و بعد نتایج ایالتی. ولی برای خود من جذاب است که توانسته‌ام هشت سال با این بچه باشم و روی او اثر بگذارم. ایشان هم روی من اثر گذاشته. انگیزه‌ای که ایشان به من می‌دهد که یک کودک 10 ساله هم می‌تواند انقدر خوب کار کند. من هر چه به او گفتم، یاد گرفت. مطمئنم از خودِ من بهتر است. شکی در این ندارم. چون چیزی را که من یک ماه زمان گذاشتم و یاد گرفتم، ایشان دو روزه یاد گرفت. این یکی از خاطرات عجیب و جالب بوده برای من.

 

سخت‌ترین شاگرد دنیاست دیگر؟ برای درس دادن به ایشان باید خیلی آماده باشید.

خیلی. الان به نقطه‌ای رسیدیم که ایشان به دنبال یادگیری مطلب جدید نیست و دنبال به کارگیری مطالب است. پدرش زنگ می‌زند و می‌گوید: «همه اینها را یاد گرفتیم که چه؟ الان باید یک کاری کنیم.» بعد مجبورم برای او پروژه بنویسم یا گاهی مطالب تحلیلی به او بگویم. می‌گویم: «تو برنامه‌نویس خوبی هستی.

خیلی از کارها را هم بلد هستی. ولی هنوز فکر مهندسی نداری و بدون تحلیل، برنامه می‌نویسی.» متاسفانه یکی از ایرادات برنامه‌نویسان ما این است که بدون فکر کار می‌کنند. اصلا ارزشی برای اصول مهندسی نرم‌افزار و مهندسی کامپیوتر قایل نیستند. فکر می‌کنند اگر یک زبان را یاد گرفتند، بروند با همین زبان کار کنند و دیگر به این فکر نمی‌کنند که من باید بنشینم با فکر برنامه بنویسم.

من دوست داشتم یک جایی در مصاحبه‌مان این را بگویم که خیلی از مواردی که در فرهنگ کامیپوتری ما بیان می‌شود، اشتباه است. بچه‌ها چند دوره برنامه‌نویسی می‌روند و فکر می‌کنند برنامه‌نویس شده‌اند. من خودم را هم به عنوان یک برنامه‌نویس به آن صورت قبول ندارم. اگر همه ما برنامه‌نویس هستیم، پس چرا وضعیت نرم‌افزار مملکت ما این است؟ چرا نرم‌افزارهایی که تولید می‌کنیم، اینطور است؟ چرا صادرات نرم‌افزار به صورت درست نداریم؟ اگر فقط به برنامه‌نویسی باشد که همه با یک کتاب یا سایت، برنامه‌نویس می‌شوند.

کِی سراغ تحلیل می‌روید؟ اگر می‌شود دو تا کار را با دو تابع متفاوت انجام داد، کدام بهتر است؟ اگر توانستی در این مورد نظر بدهی، آن وقت تو داری به یک کار مهندسی نزدیک می‌شوی. من دوست ندارم کامپیوتر و نرم‌افزار را فقط در کدنویسی خلاصه کنم. حتی الان معماری نرم‌افزار که برنامه‌نویسان خرد به آن بها می‌دهند، باز هم برداشت اشتباهی از معماری نرم‌افزار دارند.

تا به آن‌ها بگویی معماری نرم‌افزار می‌گویند: معماری سه‌لایه. یا کسی که خیلی بلد است، می‌گوید: Onion. ولی بحث معماری نرم‌افزار آنطور که در دانشگاه یاد می‌دهند، اصلا با این قضیه فرق دارد. اینکه شما بتوانید مثل یک معمار از چند دید به قضیه نگاه کنید. گرایش ارشد من «معماری سازمانی» است. آنجا ما این را یاد گرفتیم که به عنوان یک معمار به قضایا نگاه کنیم.

معمار کسی است که از چند دید مختلف به قضیه نگاه می‌کند. شما وقتی می‌خواهید یک ساختمان بسازید یک نقشه دارید که اتاق، این طرف است و هال و پذیرایی و آشپزخانه آن طرف است. ولی وقتی برق‌کار ساختمان را بیاورید، یک نقشه دیگر در ذهن اوست. او نقشه سیم‌کشی ساختمان را در ذهن دارد.

فرد لوله‌کش، نقشه لوله‌های خانه در ذهنش می‌آید. آن نقشه‌ای که او به تو می‌دهد با نقشه‌ای که تو در ذهن داری، زمین تا آسمان فرق دارد. برنامه هم همین است. اگر قرار است یک برنامه بزرگ را برای یک سازمان معتبر بنویسی و اجرا کنی، از دید رئیس آن سازمان، برنامه باید به موقع به ذی‌نفعان خود ارزش منتقل کند.

از دید اپراتور، آن برنامه باید کمترین میزان تاخیر را داشته باشد و سریع به جواب برسد. User-Friendly باشد و اگر Error می‌دهد آدم نماند که این Error یعنی چه. مثلا «سیستم در دسترس نیست». دیدید بعضی جاها این خطا را می‌دهد. این یعنی چه؟ اما اگر بگویی «ارتباط شبکه با مرکز قطع است»، Error بهتری است.

یک نرم‌افزار از چندین دیدگاه باید بررسی شود و برای آن طرح ارائه شود تا بتوانیم به یک نرم‌افزار خوب برسیم. پس در بهترین حالت آن‌هایی که فقط کد یاد می‌گیرند و کد بزنند، کدنویس هستند. خیلی راه داریم همگی تا به جایی برسیم که با دیدِ مهندسی برنامه‌نویسی کنیم و چیز ارزشمندی خلق کنیم.

من الان به همان دانش‌آموزی که گفتم، علاوه بر موارد المپیادی دارم این را یاد می‌دهم که چطور دید مهندسی داشته باشد. تا من یک چیزی گفتم، نپر برو انجام بده. یک کم فکر کن. یک کم حل مسئله انجام بده و یک کم Problem Solving انجام بده. یک کم بگرد و ببین دردِ منی که به عنوان مشتری دنبال خواسته‌ای پیش تو آمدم چیست؟ دنبال چه می‌گردم؟ چطور می‌توانی به من جواب بدهی؟

 

آقای مهندس گرایش ارشد شما معماری سازمانی بوده. تدریس هم می‌کنید و خودتان را برنامه‌نویس نمی‌دانید. اگر بخواهید «برنامه‌نویس» را در یک یا دو جمله کوتاه تعریف کنید، به ما می‌گویید برنامه‌نویس چه شخصی است؟

برنامه‌نویس به نظر من کسی است که علاوه بر تسلط بر کد و فهمیدن کد دیگران بتواند زمانی که به او خواسته‌ای منتقل کردند، تحلیل کند. از چه راهی باید به چه جوابی برسم. فقط در زرق و برق برنامه گیر نکند. زبان‌های سطح بالا که امروزه زیاد شدند، با توجه به ابزارها و Framework-هایی که آمده‌اند- برخی از آن‌ها Framework  هستند- آنقدر امکان به شما می‌دهند و آنقدر Option برای استفاده و طراحی به شما می‌دهد که اصلا می‌مانی از کدام یک استفاده کنی.

این باعث می‌شود افراد در این زرق و برق گیر می‌کنند و جلوتر نمی‌روند که ببینند چه خبر است. من به آن‌ها می‌گویم: شما فرض کنید من فقط همین 10 تا تابع را به شما داده‌ام. اجازه استفاده از هیچ چیز دیگری را ندارید. اگر توانستی با این 10 تا تابع برنامه بنویسی، من به تو می‌گویم برنامه‌نویس.

اگر به شما بگویند کسی راننده است، انتظار دارید با هر ماشینی بتواند رانندگی کند. اگر بگوید من فقط با BMW مدل فلان، دنده اتوماتیک می‌توانم کار کنم و فقط در اتوبان تهران- اصفهان که یک اتوبان پهن است. این می‌شود ماشین راندن یا ماشین بردن. اسمش رانندگی نیست. راننده شخصی است که اگر «پیکان» 57 یا «ژیان» هم به او بدهی، بتواند رانندگی کند.

پس برنامه‌نویس هم کسی است که با این سختی‌ها و امکانات کم بتواند برنامه‌نویسی کند. قصد خودآزاری نداریم. قصدمان این است که کامپیوتر را بفهمیم. همان استادی که بسیاری چیزها را از او یاد گرفتم و خدا او را رحمت کند، نحوه تدریس ایشان بی‌نظیر بود. من فکر نمی‌کنم در ایران کسی مثل ایشان بیاید.

آن‌هایی که زبان C را بلدند، توابع آن را هم می‌شناسند. خیلی تابع دارد. ایشان سر کلاس می‌آمد و می‌گفت من زبان C بلد نیستم. درحالیکه بلد بود. برای اینکه به ما منتقل کند، اینطور می‌گفت. می‌گفت من از زبان C دو تابع می‌شناسم :  getc و putc.

getc یک کاراکتر می‌خواند. putc یک کاراکتر در خروجی چاپ می‌کرد. می‌گفت: هرچه که می‌نویسید باید از این دوتا استفاده کنید. مثلا زبان C تابعی به نام Scanf داشت. یک رشته را از ورودی می‌خواند. می‌گفت: حق ندارید از این استفاده کنید. باید با getc یک چیزی بنویسید که مثل Scanf عمل کند. یک تابع Printf داشتیم.

می‌گفت: حق ندارید از این استفاده کنید. باید با putc طوری رفتار کنید که مثل این عمل کند. یک تابع داشتیم به نام strlen که طول رشته را حساب می‌کرد. می‌گفت: حق نداری از این تابع استفاده کنی. مگر رشته آرایه‌ای از کاراکترها نیست؟ مگر تو حرف Y بلد نیستی؟ یک تابع بنویس که خودش طول رشته را حساب کند. آنوقت برای امتحان 10 سوال به ما داد که در هر سوال باید یکی از این توابع را می‌نوشتیم. ولی یادم است برای یکی از سوالات 11 تابع مختلف نوشتم. کل امتحان که 10 سوال بود و 90 دقیقه وقت داشت. می‌گفت: «من پیرمرد هستم. بیشتر از این حوصله ندارم سر جلسه امتحان بایستم.. و این به من فهماند.

خیلی‌ها بودند که این مطلب را نفهمیدند. که اگر برنامه‌نویس هستی با حداقل امکانات برنامه‌نویس شو. چرخه یادگیری تمام‌نشدنی است. این اتفاق برای خود من افتاد. زمانی که داشتم PHP یاد می‌گرفتم، رفتم یک دیکشنری PHP گرفتم و دیدم سه هزار تابع است. دیدم من که نمی‌توانم همه این سه هزار تا را یاد بگیرم. اگر من یک سایت را دیدم که این 30 ،40 یا 50 دستور را یاد داده، یک جایی باید به خودم اعتماد کنم که اگر برنامه‌نویس هستی با همین‌ها برو برنامه‌نویسی کن.

هرجا لازم شد برو و یک چیز جدید یاد بگیر. اگر توانستی این کار را بکنی، آن وقت آن 2950 تابع دیگر هم به درد تو می‌خورد. بعد دیدم با همان‌ها هم می‌شود کار کرد. خیلی وقت‌ها خودم می‌نشستم و یک تابع می‌نوشتم و متوجه می‌شدم فلان تابع این زبان را داشت و من بیخود نشستم و نوشتم. ولی چه عیبی دارد که آدم خودش خلق کند. متاسفانه این دید در جوانان ما خیلی رایج شده که می‌گویند که آدم عاقل، چرخ را از اول اختراع نمی‌کند. این از نظر من اشتباه است و به آن اعتقادی ندارم. روز اولی که چرخ اختراع شد، مگر به این شکل بود. اگر می‌گوییم: نباید چرخ را از اول اختراع کنیم، پس معنای Re-Engineering چیست؟

بازمهندسی و مهندسی مجدد. مهندسی مجدد یعنی هر چیزی که داشتی بینداز دور و دوباره از اول بنشین خلق کن و ببین چه کار داری می‌کنی. آن وقت است که تو به یک سیستم دیگر می‌رسی. در برنامه‌نویسی هم همین است. در برنامه‌نویسی هم سال‌ها بود که می‌آمدند روی توابع جست‌وجو کار می‌کردند که سرعت آن را بهبود بدهند.

بعد یک نفر آمد و ثابت کرد تا زمانی که شما بر مبنای مقایسه دو تا خانه دارید این کار را انجام می‌دهید بهتر از مرتبه N Log N به آن نمی‌رسید. چون خاصیت مقایسه این است که تو مجبوری از مرتبه N Log N  مقایسه انجام بدهی که این کار را بکنی. بعد افراد دیگری رفتند و از روش‌های دیگری استفاده کردند و به مراتب کمتر از  N Log N (مرتبه پیچیدگی الگوریتم) رسیدند. به مراتب کمتر از این رسیدند. یعنی توانستند الگوریتم‌های سریع‌تری خلق کنند. اگر یک نفر نمی‌آمد همه چیز را از بیخ و بن بزند و بگوید این جست‌وجو را از اول خلق کنید و مرتب‌سازی را از اول خلق کنید، ما به اینجا نمی‌رسیدیم. بنابراین به نظر من می‌شود چرخ را از اول و بهتر اختراع کرد.

 

و باید اختراع کرد؟

یک جاهایی باید اختراع کرد. یک جاهایی می‌بینی هزینه بهبود کم است و بهبود می‌دهی. ولی وقتی می‌بینی در بهترین حالت‌اش باز هم به آن چیزی که می‌خواهیم نمی‌رسد، آنجا باید اول اختراع کنی. چاره دیگری نداری.

 

با این تعاریفی که شما دارید، مثلا از رانندگی و برنامه‌نویسی معلوم است که آدم سختگیری هستید. بین دو تا هفته ضبط آموزش شما چه اتفاقی می‌افتد؟ تا جایی که می‌دانم مثلا در یک هفته چهار ساعت ضبط آموزش دارید. می‌رود تا هفته آینده که چهار ساعت ضبط بعدی است. در این بازه زمانی، شما برای بهتر شدن کیفیت چقدر به خودتان سخت می‌گیرید؟ به نظر می‌آید این سختگیری باید خیلی زیاد باشد.

نه اتفاقا. من به خودم خیلی سخت می‌گیرم و اصلا به خودم ارفاق نمی‌کنم. ولی سختگیری‌های من قبل از شروع آموزش بوده و نه بین دو آموزش. یعنی من آموزش چیزی را قبول می‌کنم که تجربه‌اش کردم. چیزی که با تمام وجود آن را حس کرده باشم. خیلی وقت‌ها چیزهایی را بلدم، ولی حس نمی‌کنم آنقدر تسلط دارم که بتوانم تدریس کنم.

بنابراین خیلی وقت‌ها پیشنهادهای جذابی هم شده که رد کردم. برای خیلی جاهای خوبی بوده، اما من رد کردم. چون آنطور که خودم دوست دارم روی آن مسلط نیستم. یعنی نمی‌توانم مثال‌های خاصم را برای این آموزش پیدا کنم و سر کلاس به کار ببرم. گاهی وقت‌ها بین دو آموزش یک «ریلکسیشن» خوب یا جایزه خوب به خودم می‌دهم. گاهی نه. مطلب فرّار است و ممکن است یکبار دوره کنم ولی سختگیری اصلی مربوط به قبل از اینهاست.

 

در تهیه سرفصل؟

تهیه سرفصل و قبل از آن. همانجا که دارم می‌گویم: این آموزش را قبول می‌کنم، قبلش سختی‌هایش را به خودم دادم. یعنی رفتم، کار کردم و بیچارگی‌اش را کشیدم تا به حدی رسیدم که به خودم اجازه می‌دهم تدریس کنم. من اخلاقی دارم که اگر ببینم کسی بهتر از من می‌تواند تدریس کند، آن حق را از خودم می‌گیرم. یعنی یکبار این کار را کردم. گفتم: «فلان کار را شخصی بهتر از من می‌تواند منتقل کند.

کار را بدهید به آن شخص.» البته در جای دیگری و نه در اینجا. چون از نظر من این حق دانشجو است. متاسفانه در بحث آموزش خیلی‌ها دارند حق‌الناس را می‌خورند و حواسشان به این نیست. درصورتی که شخصی که پول می‌دهد، آن را برای یادگیری یک مطلب درست پرداخت می‌کند. خوشبختانه «فرادرس» حواسش به این مسئله است.

 

با این حساب ما هر آموزشی از شما داریم، بهترین است آقای مهندس؟

سعی کردم اینطور باشد. بهترین حالت خودم است. نمی‌گویم بهترین حالت ممکن است. قطعا کسانی هستند که بهتر از من تدریس کنند، ولی آن آموزشی که از من در «فرادرس» هست، بهترین حالت خودم است. یعنی من بهتر از آن در آن دوران نمی‌شدم.

 

می‌خواهم بدانم درست برداشت کردم یا نه؟ اگر شخصی بهتر از خودتان پیدا کنید، جایگزین خودتان می‌کنید؟

در خیلی جاها این کار را کردم البته اگر پیدا شود. فقط این نیست که شخص علم بیشتری داشته باشد. کسی هست که علمش بیشتر است، اما حوصله‌اش کمتر از من است. شخصی هست که علمش بیشتر است، اما قابلیت انتقالش خوب نیست. اگر حس کنم در مجموع بهتر از من است، این کار را می‌کنم.

 

می‌توانم بگویم منحصر به فرد است. من نمونه‌اش را ندیدم. انسانی که حاضر باشد شخصی را جایگزین خودش کند.

با این کار حس بهتری به آدم دست می‌دهد. یکبار در اداره این کار را کردم .یک سیستم بود و من فرصت نداشتم آنطور که باید روی آن وقت بگذارم. گفتم: بدهید فلانی و فلانی بنویسند. اینها بچه‌های جویای نامی هستند. خیلی هم قشنگ می‌توانند این کار را بکنند. چه اصراری دارید که من این کار را بکنم؟

پرسیدند: آیا خودت آن‌ها را راه می‌اندازی و توضیح می‌دهی؟

گفتم: بله.

اوایل شاید فکر کردند من می‌خواهم کار را دست خودم نگه دارم و با آن‌ها همکاری نمی‌کنم. خودِ آن‌ها هم با این دید آمدند جلو. از سوالاتی که می‌کردند، مشخص بود. می‌خواستند همه مطالب را بدانند. می‌خواستند در یک جلسه یک ساعته اطلاعات را از من دریافت کنند. گفتم: «شما هر زمان هر مشکلی داشتید، بیایید از خودم بپرسید.

من این را به شما خواهم گفت. من اصرار ندارم سیستم را دست خودم نگه دارم. اگر شما بهتر می‌نویسید که به نظر من بهتر می‌نویسید، این کار مال شماست.» و بعد تبدیل به سیستمی شد که از آن استقبال شد و رابطه دوستانه‌ای با آن افراد برقرار کردم. آن‌ها خیلی به من اعتماد کردند. حس بهتری به آدم منتقل می‌شود.

 

بعدش چطور؟ تلاش می‌کنید که خودتان را به بهترین برسانید یا نه؟ رها می‌کنید؟

صد درصد. تا جایی که بشود تلاشم را می‌کنم. حقایق جامعه ما این است که ما در جامعه پرتلاطم و از نظر اقتصادی وحشتناک زندگی می‌کنیم. من باید به فکر اقتصاد خودم باشم و به خاطر اقتصادم است که دنبال پیشرفت خودم هستم. بنابراین اگر بدانم با چهار تا ابزار می‌توانم پول خوبی کسب کنم، لزومی نمی‌بینم که وارد ابزار پنجم بشوم.

مگر اینکه زمانی برای ابزار پنجم آنچنان پروژه‌ای بیاید که من بروم واردش شوم. یکبار این کار را کردم. زمانی بود که یک زبان را فقط مطالعه می‌کردم. اصلا قضیه PHP کار شدن من این بود. داشتم خیلی تفننی مطالعه می‌کردم. یک سال بعد از فراغت از تحصیل بود. یکی از دوستان، من را دید و گفت: چه کار می‌کنی؟ گفتم: PHP است. شاید در کار به درد خورد. گفت: خوب است. خوب است.

فردای آن روز به من زنگ زد: «که یک پروژه PHP قبول کردم که باید انجام بدهی. امروز چهارشنبه ظهر است. باید شنبه صبح تحویل بدهیم.»

گفتم: من بلد نیستم و تازه دارم می‌خوانم. گفت: به من ربطی ندارد. من پولش را هم گرفته‌ام. شماره کارتت را به من بده. خب کسی هم که از پول بدش نمی‌آید. گفتم: اگر در آن بمانیم چه؟ گفت: تو نمی‌مانی. انجام بده آقا!

شاید من در کمتر از 72 ساعت فرصتی که داشتم، جمعا چهار ساعت خوابیدم و یک گردن‌درد وحشتناک گرفتم. ولی PHP کار شدم. یعنی من آنجا حس کردم PHP را یاد گرفتم. درحالیکه شش ماه داشتم کتاب تفننی می‌خواندم. ولی حس می‌کردم بلد نیستم. ولی در دل پروژه واقعا یاد گرفتم. بنابراین اگر صرفه داشته باشد، حتما دنبال پیشرفت‌های جدید می‌روم. ولی اگر بتوان پروژه را با دانش قدیمی انجام داد، اصراری هم برای آن وجود ندارد.

 

خیلی ممنون از توضیحات شما. به خصوص توضیحات اخیرتان بسیار جالب بود. سوالات من از شما تمام شده و می‌خواهم خواهش کنم اگر موضوعی هست که فکر می‌کنید بهتر بود در سوالات باشد و من فراموش کردم بپرسم، بفرمایید تا بشنویم.

خواهش می‌کنم. البته من زیاد صحبت می‌کنم و فکر کنم ویدئو خیلی طولانی شد. ولی مواردی که دوست دارم یادآوری شود، فرهنگ غالب بر جامعه برنامه‌نویس ما فرهنگ پُر از اشکالی است. ما باید این را اصلاح کنیم. متاسفانه بینش سطحی، مثل خیلی از کارهای ما در برنامه‌نویسی ما هم وارد شده. چرا انقدر سعی داریم زود مسایل را دوقطبی کنیم و سریع تصمیم‌گیری و اجرا کنیم؟ هر زبانی به جای خودش و در کاربرد خود خوب است. من هر دو را کار می‌کنم و یک جا می‌گویم PHP به درد این کار نمی‌خورد، NET. استفاده می‌کنم.

یک جا می‌گویم نه این کار با NET. اذیت‌کننده است. این سلیقه من است. شاید اگر کسی بیاید، نظرش چیز دیگری باشد. برای من جذاب‌تر است که مثلا کاری را با PHP انجام بدهم. یک عده هم از سختی کار فرار می‌کنند. یعنی می‌گویند: برنامه‌نویسی سخت است. خب کدام کار سخت نیست؟ ولی هر سختی یک آسانی هم به دنبال خود دارد. آسانی برنامه‌نویسی این است که وقتی برنامه می‌نویسی، برایت جذاب می‌شود. قشنگ است. می‌روی از آن استفاده می‌کنی و لذت می‌بری. چرا بچه‌های ما نمی‌آیند این راه را انتخاب کنند و قدری سختی بکشند؟

یا گاهی می‌آیند پرس و جو می‌کنند. من آدم رُکی هستم در اینجور مواقع رک حرفم را می‌زنم و نمی‌گذارم کسی برداشت مبهم از حرف‌های من ببرد. می‌پرسد: من فلان کار را نجام بدهم؟ من می‌گویم: نه این به درد تو نمی‌خورد و آن به درد تو می‌خورد. یا فلان چیز را یاد بگیرم فلان چیز را یاد نگیرم. یا می‌پرسند: شش ماهه می‌توانم برنامه‌نویس بشوم؟ می‌گویم: نمی‌شوی. من بعد از 14 سال اسم خودم را نمی‌گذارم برنامه‌نویس. ممکن است حرف حق تلخ باشد. شهید بهشتی می‌گوید: من حرف تلخ صادقانه را به شیرینی حرف‌های منافقانه ترجیح می‌دهم. کسی که دارد حرفی صادقانه به تو می‌زند، هرچند تلخ باشد از او بپذیر. شاید خیر و صلاح تو را بخواهد.

شاید حقیقت این است. بچه‌های ما هم باید دقیق انتخاب کنند. اسیر تبلیغات نشوند و گول حرف‌ را نخورند. یک کم سختی را به جان بخرند. تا می‌آیند می‌گویند: برنامه‌نویسی سخت است، من اهل آن نیستم. هر کاری سختی خاص خودش را دارد. بنابراین سختی را بپذیریم و از آن استقبال کنیم و تلاش کنیم. با تلاش است که به جایی می‌رسیم. «و ان لیس للانسان ما سعی». یعنی جز تلاش تو چیزی برای تو نمی‌ماند. هر چیزی داری، مرهون تلاش توست. انشالله که همه با هم تلاش کنیم.

خود من هم باید بیشتر تلاش کنم که از این چیزی که هستم، بیشتر شوم. ببخشید زیاد صحبت کردم. در پایان «به نزد آن که جانش در تجلی است/ همه عالم کتاب حق تعالی‌ است» اگر خودتان سعی کنید و آدم درستی باشید از هر نکته‌ای می‌توانید برداشت خوب و علمی کنید و استفاده ببرید. در زندگی ارزشمند باشید و برای سایرین هم ارزش خلق کنید.

 

آقای مهندس عبدالهی از حضور و صحبت‌های شما تشکر می‌کنم. امیدوارم برای مخاطبان هم مفید بوده باشد. من اینجا هم از شما و هم از مخاطبانی که صدای ما را می‌شنوند خداحافظی می‌کنم.

سلامت باشید. خدا نگهدار.

 

بر اساس رای ۱۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
۳ دیدگاه برای «آیا برنامه نویسی سخت است؟ پاسخ در گفتگو با محمد عبدالهی، کارشناس ارشد مهندسی فناوری اطلاعات و مدرس فرادرس»

سلام استاد عبداللهي شما به معناي واقعي معلم هستيد من تعدادي از آموزشهتي شما رو از سايت فرادرس تهيه كردم و آموزش ديدم
همواره موفق و سلامت باشيد

خیلی لذت بخش بود آقای مهندس عبدالهی واقعا شخصیت و دید جالبی دارن .

ممنونم جواد جان. نظر لطف شماست.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *