برنامه‌سازی پیشرفته؛ چیزی که می‌کارد، چیزی که برداشت می‌شود.

به قلم: سید سجاد کاهانی

مقدمه

دانینگ و کروگر در سال ۱۹۹۹ مقاله‌ای نوشتند که با آزمایشی ساده، نشان می‌داد افراد ناوارد ارزیابی‌ای فراتر از آن‌چه که هستند از خودشان دارند و افراد وارد ارزیابی‌شان از خودشان پایین‌تر از حدی‌ست که واقعاً هستند. این مفهوم که شاید پیش‌تر در فرهنگ عامهٔ بسیاری از نقاط جهان وجود داشته، با وجود این مقاله به شکل رسمی‌تری نشان داده شد و اکنون، این مفهوم تبدیل به یکی از پراستفاده‌ترین مفاهیم در کتاب‌ها و سایت‌های آبکی و زرد موفقیت و رهبری و فلان و بیسار شده‌است.[۱]

             عکس از خود مقالهٔ اصل داستان[۳]

عکس از خود مقالهٔ اصل داستان[۳]

 

داستان دانینگ‌کروگر و چگونگی رفع‌ورجوعش، خودش احتمالاً کلی کارشناسی می‌طلبد و اصلاً بهتر است وارد آن نشویم. اما چند نکته حائز اهمیت است، یکی این‌که این پدیده قابل بهبود است، یکی این‌که این پدیده با فرهنگ هم‌بسته‌است (پژوهشی هست که نشان می‌دهد خودبهترپنداری در آمریکای شمالی در قیاس با آسیای شرقی بسیار بیشتر است)[۲]

 

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

 

سندروم پ.ب.پ. در دنیا

حقیقت امر این است که هرچند در MITی ایران، دانشگاه صنعتی شریف، این درس از اهم دروس پایه، صنعت و فلان و بیسار است، در خود MIT این درس ارائه نمی‌شود. (این‌که چیزی نیست، این رشته نیز به طریق اولی وجود ندارد) فی‌الواقع بررسی‌ها نشان می‌دهد که درسی با این نام در هیچ‌یک از ۱۰ دانشگاه برتر علوم کامپیوتر و انفورماتیک (به زعم [۴]) وجود ندارد. اما قطعاً صحبت تنها بر سر نام یک درس نیست، بررسی ریز مواد درسی در درس‌های مشابه نیز نشان از عمق تفاوت‌ها دارد که از حال و حوصلهٔ نویسنده خارج است.

 

شرح سندروم پ.ب.پ.

در طی درس برنامه‌سازی پیشرفته، انسان با یک زبان شی‌گرا آشنا می‌شود و تا جدیدترین فیچرهای زبان، نظیر استریم را مشاهده می‌کند. از طرفی با ساختارهایی نظیر MVP و MVVC و کذا و کذا آشنا می‌شود و کدهای هزاران‌خطی آن‌چنانی می‌زند و خیلی قشنگ است همهٔ این‌ها.

اما مشکل دقیقاً همین است، آدم‌ها پس از دیدن چیزهایی که کار می‌کند، از یک زبان ظاهراً مدرن، خیال می‌کنند برنامه‌نویسی را تمام کرده‌اند. با دیدن MVVC هم که معماری تمام شده و من، یک فرد آمادهٔ بازار کارم. بعد از این هم یک داستان تکراری‌ست، جونیوری که خیال می‌کند همه‌چیز را دیده می‌نشیند بغل سینیور سی‌واندی ساله و هی می‌گوید «چرا سی++؟ مگه پایتون چشه؟»، «ببین من یه کد زدم از کدت سریع‌تره» و «کدت چقد شته».

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

به طور خلاصه، چیزی باید در یک درس پایه‌ای آموخته‌شود، که واقعاً پایه‌ای‌ست، همیشه و همه‌جا به درد می‌خورد و دوای هر دردی‌ست. نه این‌که ابزارهای خاصی با کاربردهایی خاص آموخته‌شود و بقیهٔ ابزارها هم می‌ماند برای درس اختیاری ترم ۸ام. 

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

و البته که در این میان، ساده‌ترین و بهترین راه الگوبرداری‌ست. استفادهٔ مفت‌ومجانی از فکرهای دیگران، راه‌حل‌هایی تست‌شده و مطمئن، ولی ما عادتاً باید همه‌چیز را خودمان از نو بسازیم. (برای شروع این‌دوتا را ببینید [۵ و ۶])


 

منابع، معادن، مآخذ، مخارج

۱. روح‌الله علیزاده آقبلاق

۲. DeAngelis, T. (2003, February). Why we overestimate our competence. Monitor on Psychology, 34(2). http://www.apa.org/monitor/feb03/overestimate, visited 12 Feb 2020

۳. Kruger J, & Dunning D (1999). Unskilled and unaware of it: how difficulties in recognizing one’s own incompetence lead to inflated self-assessments. Journal of personality and social psychology, 77 (6), 1121-34 PMID: 10626367

۴. QS World University Rankings for Computer Science and Information Systems 2019, visited 12 Feb 2020

۵. Electrical Engineering and Computer Science (Course 6), visited 12 Feb 2020

۶. Bachelor's Program – Department of Computer Science, visited 12 Feb 2020