این نوشته در آستانه روز جهانی برنامهنویسی به دعوت داتین نوشته شده. تقریبا همه آدمهایی که به نوعی با کامپیوتر (از هر نوعش، از رومیزی تا جیبی) سر و کار دارند حدس نزدیک به واقعیتی در مورد تعریف برنامهنویسی دارند، حتی اگه هیچوقت خودشون دست به کد نشده باشند. اکثر این آدمها میدونند که کار برنامهنویسها ساختن اپلیکیشنها و وبسایتها و کلا چیزهاییه که موقع کار با کامپیوتر میبینند اما اون طرف معادله اینقدر واضح و سرراست نیست. اینکه «برنامهنویسی چی نیست؟» و چه افسانههای اشتباهی در مورد برنامهنویسی وجود داره که ممکنه اعتقاد بهشون باعث کجروی برنامهنویسان تازهکار بشه. من میخوام در مورد تعدادی از این افسانهها حرف بزنم
وقتی به یه برنامهنویس فکر میکنیم معمولا اولین تصویری که توی ذهنمون میاد یه آدمه که پشت یه میز نشسته و سرش توی مانیتوره و هر چند دقیقه یه قُلپ قهوه میخوره! چنین تصویری ممکنه این فرض رو در ذهن ما ایجاد کنه که برنامهنویسی شغل کم دردسر و آسونیه (مثلا در مقایسه با کارگری یا کشاورزی) من قصد ندارم اینجا دعوای «شغل کی از همه سختتره؟» رو راه بندازم اما میخوام بگم برنامهنویسی اصلا اون کار آسون و بخور و بخوابی که ممکنه در نگاه اول به نظر بیاد نیست. شاید از نظر فیزیکی آسون باشه اما از نظر ذهنی خیلی خیلی سخت و چالشبرانگیزه. شما دائم در حال حل مسائل نسبتا سختی هستید که گاهی اوقات بسیار کلافهکننده و دشوار میشن. پس اگه فکر میکنید آسونه لطفاً این افسانه رو زودتر از ذهنتون پاک کنید.
معلومه که تعداد معدودی برنامهنویس مشهور و پولدار وجود دارند. اما ۹۹ درصد برنامهنویسهای دنیا زندگی متوسطی (و حتی شاید پایینتر) دارند. نگاه کردن به اون یه درصد برای نتیجهگیری در مورد پولسازی این شغل، درست مثل اینه که با نگاه کردن به مسی و رونالدو بخواهید نتیجه بگیرید فوتبال بازی کردن شغل پولسازیه! بله ممکنه با برنامهنویسی پولدار بشید اما یادتون باشه که با احتمال کمتر از ۱ درصد! اگه صرفاً دنبال پول و ثروت زیاد هستید شاید بهتره دنبال تجارت یا راه انداختن یه کسب و کار باشید. اما اگه دوست دارید یه زندگی متوسط با استاندارد قابل قبول داشته باشید برنامهنویسی یکی از بهترین شغلهاییه که میتونید بهش فکر کنید.
البته حوزههای خیلی خاص و محدودی توی برنامهنویسی وجود داره که نیاز به دانش ریاضیات پیچیده داره اما بیشتر از ۹۵ درصد دنیای برنامهنویسی نیازی به سواد ریاضی بیشتر از ریاضیات پایه دبستان نداره. اون چیزی که در برنامهنویسی مهمه توانایی تفسیر مسئله و پیدا کردن راه حله نه بلد بودن انتگرال پیشرفته یا هندسه ۴ بعدی!
من از منتقدین سرسخت نظام آموزشی مخصوصاً در حوزه مهندسی نرمافزار هستم اما الان نمیخوام زیرآب دانشگاه رو بزنم و بگم که دانشگاه رفتن کار بیهوده و بیارزشیه. قطعاً انتخاب رشته و دانشگاه اگه آگاهانه و اصولی باشه مزیتهای خودشو داره اما دانشگاه رفتن برای برنامهنویسی نه شرط لازمه و نه کافی. اگه در آستانه ورود به دانشگاه هستید و دارید به رشته مهندسی نرمافزار یا رشتههای مشابه فکر میکنید، من اصلا قصد ندارم تصمیمتون رو عوض کنم یا بگم که بهتره بیخیال بشید اما میخوام به اونایی که سنشون از دانشگاه رفتن گذشته یا در دانشگاه رشته غیر مرتبط دیگهای خوندن، بگم که به هیچوجه فکر نکنید که از شما گذشته. (خود من هم توی دانشگاه کامپیوتر نخوندم!) دانشگاه صرفا یک مسیر از چند مسیر ممکنه و زیادند برنامهنویسان بزرگی که پاشون هم به دانشگاه نرسیده.
وقتی وارد دنیای برنامهنویسی بشید کلی دعوا و کلکل در مورد زبانهای برنامهنویسی میبینید. (نه فقط در مورد زبانها که در مورد سیستمعاملها، ادیتورها، فریمورکها و ...) این کلکلها برای شوخی و خنده بد نیستند اما اگه جدیشون بگیرید دارید قدم توی راه اشتباهی میذارید. هیچ زبانی به طور مطلق از زبانهای دیگه بهتر نیست. همه زبانها ابزارهایی هستند که استفاده ازشون در موقعیتهایی مناسب و در جاهایی نامناسبه. درست مثل ابزارهای توی جعبه ابزار. چکش نه از پیچگوشتی بهتره نه بدتر. انتخاب بین چکش و پیچگوشتی فقط بستگی به این داره که بخواهید چه کاری انجام بدید.
تجربه نشون داده که بیشتر برنامهنویسها از سنخ روانی «درونگرا» هستند. اما درونگرا بودن به هیچ وجه به معنای منزوی بودن یا غیر اجتماعی بودن نیست. هیچ اشکالی نداره اگه آدم کمحرف و آرومی باشید اما اگه آدمی هستید که در مواقع مورد نیاز از قرار گرفتن توی جمع وحشت دارید یا نمیتونید ارتباط درستی با آدمهای اطرافتون برقرار کنید باید به فکر مراجعه به مشاور یا روانشناس باشید. چنین خصلتهایی نه برای برنامهنویسان و نه برای هیچ گروهی شغلی دیگهای نرمال محسوب نمیشن.
خیلیها فکر میکنند که برنامهنویسی رو تا ۳۰ یا حداکثر ۴۰ سالگی میشه ادامه داد و بعدش دیگه توانایی ذهنی برنامهنویسان تضعیف میشه. نه تنها هیچ دلیل علمی و تحقیقاتی که چنین چیزی رو نشون بده وجود نداره بلکه به عکس کلی مثال نقض هست از آدمهایی که در سنین بالای ۵۰ سال و ۶۰ سال هنوز دارن توی این شغل کار میکنند (و حتی آدمهایی که در سنین بالا تازه شروع به کار کردن). البته یه بخشی از کمتر شدن تعداد برنامهنویسان در سنین بالاتر به این دلیله که برنامهنویسان با بالا رفتن سن و تجربه معمولا ارتقا شغلی میگیرن و ممکنه به سمت پستهای مدیریتی و نظارتی برن. اما این به این معنا نیست که اگه بخوان خودشون دست به کد بشن تواناییاش رو ندارن.
برنامهنویسی دنیای جذاب و شیرینیه به شرطی که سه شرط علاقه، استعداد و پشتکار در شما وجود داشته باشه. همه برنامهنویسان لحظات خستهکننده و اعصاب خرد کن زیادی توی کارشون دارند اما اگه اهل دل باشید میدونید که شادی اون لحظهای که یه باگ سخت رو حل میکنید و برنامهتون به درستی کار میکنه به همه این سختیها میارزه. :)