تفاوت برنامه نویسی در دانشگاه و دنیای واقعی

یادمه که ترم اول، اولین کلاسی که رفتم مبانی برنامه نویسی و پاسکال بود. چی درس میدادن؟ فلوچارت و پیاده سازیشون در زبان برنامه نویسی پاسکال! چه اتفاقی افتاد؟ من با 5 سال تجربه برنامه نویسی دلفی درس را افتادم با نمره 3 از 20.

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

به نظرتون چرا اینجوریه؟


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

اینم خاطره مشترک من با همه افرادی که شرکت زدن و برای اولین گزینه رفتن از دانشگاهیان تحصیل کرده نخبه نیرو آوردن تا شرکت مشکل نیرو نداشته باشن.

به نظرتون چرا اینجوریه؟


به نظر من چنتا دلیل داره:

  1. من خودم ارشد هوش مصنوعی دارم با استادی که بالاترین رتبه علمی در کشور توی موضوع هوش مصنوعی داره. ولی من توی کلاسهای ایشون یادگرفتم که مسايل 100 معادله 100 مجهول را بهیه حل کنم. توی بقیه درسهام چه کارشناسی و چه ارشد هم همین بوده. من توی دانشگاه درس پایگاه داده پاس کردم ولی فقط به صورت تئوری و ریاضی. یا ساختمان داده یا طراحی الگوریتم یا شبکه یا ..... از روزی که دارم برنامه نویسی میکنم تا حالا هیچ کدوم از این مسائل به کارم نیومده و نخواهد اومد.
  2. توی درس برنامه نویسی که مهمترین درس برای دانشجوی رشته کامپیوتر چی درس داده میشه؟ زبان برنامه نویسی سی یا پاسکال. اخیرا شنیدم که جاوا و پایتون هم درس داده میشه. خب من به عنوان آدمی که سالهای ساله که برنامه نویسی میکنم میدونم که زبان صرفا ابزار کاره و مهم نیست. مهم قسمت دوم این دروسه، مسائل و تمرین هایی که داده میشن. همه ما بارها برنامه نوشتیم که ریشه دوم یک معادله را با ورودی های a و b و c را محاسبه کرده. آیا واقعا بجز حفظ کردن ۷ ۸ خط کد کار دیگه ای هم کردیم. بهتر نبود به جای اون ها لااقل یکسری مسئله به درد بخورتر یاد داده میشد؟ لااقل مباحثی آموزش داده میشد که بعدا با ادامه دادنش بشه وارد دنیای برنامه نویسی شد. همه دانشجوها بعد از گذروندن این درسها برنامه نویسی را میبوسن میذارن کنار. این موضوع در مورد درسهای مهندسی نرم افزار و شبکه هم صادقه.
  3. داشتن تصور اشتباه از برنامه نویسی اصلی ترین دلیل میتونه باشه. برنامه نویسی شاخه های مختلف و دلایل زیادی داره. هوش مصنوعی، ریاضی، بهینه سازی، بازی، مدیریت داده و ..... همه بخش های برنامه نویسی الزاما حل مسائل پیچیده ریاضی در یک محیط خشک و مسخره سیاه و سبز نیست. واقعا یه جاهایی برنامه نویسی بسیار هم گرافیکی و زیباس و وظیفه اصلیش فکر کردن به جای انسانهاس بدون هیچ گونه محاسبه ای. مثلا نیاز مشتری ثبت اطلاعات تماس افرادیه که باهاش کار میکنن. بدون هیچ معادله ریاضی و در یک محیط زیبا و کاربردی.
  4. برنامه نویسی یک هنره و نه یک فن. چرا این حرفا میزنم؟ چون شما باید بتونید صدها چیز متفاوت در دنیای واقعی و مجازی را به بهترین شکل ممکن کنار هم بچینید و ازش خروجی مورد انتظار را دریافت کنید. برنامه در دنیای امروز مثل یک نقاشی آروم آروم از ذهن برنامه نویس خارج میشه و میاد روی کیبورد و شکل میگیره. باید زیبا باشه. باید ایراداتش دیده بشه و رفع بشه. باید استفاده کننده خودش را راضی کنه.
  5. برنامه نویسی هم مثل رانندگی ۲ بخش داره و اولیش تئوری هست و بعدش عملیه. برای مهارت در برنامه نویسی نیاز هست که ساعتها و روزها و سالها تمرین کنید و مطالب تئوری که بلد هستید را دنیای واقعی استفاده کنید. و این نیاز به صبر و تلاش و ممارست و مطالعه داره.

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

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


من محمد(سروش) محمدی هستم و سالهای زیادی هست که درحال کار در حوزه برنامه نویسی هستم. میخوام وقتی باز کنم و برای خودم و شما از برنامه نویسی بنویسم.