اصن میدونستین روز جهانی برنامهنویس با چه نگاهی انتخاب شده؟
اوه، یادم رفت! سلام :))
کاری به کامپیوترای کوانتومی و جدید نداریم، اون قدیم نَدیما (که البته هنوزم همین الان کامپیوترای ما جُزوِ همون دوران حساب میشن و عملاً حکمِ ماشین بخار رو دارن در کنار موتورهای پیشرفتهتر، ولی توی کامپیوترها اغلب) همهچیز اصطلاحاً دودویی یا باینِری در نظر گرفته میشدن. یعنی چی؟ حتماً شنیدین دیگه، صفر و یک! یعنی هر داده و پردازشی تهش میرسید به رشتهای یا دنبالهای از اعداد 0 و 1.
اومدن گفتن یه سال که 365 روز بیشتر نیست. بیایم آخرین توانِ 2 رو به عنوان روز برنامه نویس در نظر بگیریم (شاید هم به احترامِ 8 بیت در نظر گرفتنِ یک بایته). یعنی چی؟ یعنی 2 به توان 8 که میشه 256، پس 256مین روزِ سال شد روز برنامهنویس.
اینجا بود که بین مریدان اختلاف افتاد. 256 اُمین روزِ کدوم سال؟ سالِ ما یا سالِ اونا یا سالِ بقیه؟
اگه بیخیال سالهای کبیسه بشیم، به میلادی، 256 اُمین روز میشه 13سپتامبر یا 22 شهریور، توی تقویم خودمون هم، 256اُمین روز، میشه 10 آذر. حالا ما باید یا یکی رو انتخاب کنیم، یا هردو رو، یا سالهای بقیه رو، یا هیچ کدوم!
من مدتِ زیادیه سعی کردم از فیلدِ تخصصیِ برنامهنویسی کمی فاصله بگیرم. دلایل مختلفی هم داشته، ولی نه این که کلن جدا شم، بابا ما خودمون هنوز دست به کیبوردیم و تدریس هم میکنم و لذتِ غرق شدن توی دنیای کُد زدن رو با چیزی نمیشه جایگزین کرد. ولی بصورت خلاصه، با اینکه کمی دور شدم، هنوز هم با اختلاف یکی از افتخارات دوران زندگیم برنامهنویس بودنه.
چه بخواین قبول کنین، چه نخواین قبول کنین، چه بخواین قبول نکنین، چه نخواین قبول نکنین، در هر صورت، دنیا رو ما برنامهنویسا پیش میبریم. ما هم میتونیم دنیا رو بسازیم هم میتونیم دنیا رو نابود کنیم.
همین الان که دارین این متن رو میخونین، تیمهای مختلف برنامهنویسی تلاش کردن تا شما این امکان رو داشته باشین که بتونین براحتی این کار رو انجام بدین. حالا نه اینکه فقط برنامهنویسا باشن، ولی نقش بشدت مهمی دارن.
از موبایلِ دستتون گرفته تا پیچیدهترین محاسبات و هدایت موشکها و سفرهای فضایی و غیره، همشون تهش با یه سوتیِ ساده میتونن نابود بشن :)
باور نمیکنین؟
اگه دوست داشتین در مورد خطاهای Y2K و Therac-25 مطالعه کنین، اولی بخاطر در نظر نگرفتن 4 رقم برای سال (و بجاش دو رقم گذاشتن، مثلاً 90 بجای 1990) بصورت تخمینی 300 میلیارد دلار هزینه برداشت (زمانی که به سال 2000 رسیدن)! دومی بخاطر اشتباه توی ساطع کردنِ اشعه X دستگاه پرتودرمانی چند نفر آدم رو به دیار باقی فرستاد! مواردِ دیگهای هم هست، از انحراف و انفجار کاوشگر Mariner1 گرفته (که میگن صرفاً یه خط تیره توی کد باعثش بوده!) تا مُرده اعلام کردنِ حدود 8500 آدمِ زنده توسط بیمارستان St. Mary’s Mercy (باز این یکی از اون Therac-25 بهتره، حدأقل واقعاً کسی رو نکشتن!).
خلاصه فَتٌ و فراوون هست اینایی که ما برنامهنویسا صرفاً توی یه کلمهی "باگ" خُلاصشون میکنیم.
دقیقاً شبیه داوَرایی که میگن اشتباهات داوری جزئی از داوَریه، ما هم میگیم باگ (همون اشتباهاتِ برنامهنویسی) هم جزئی از برنامهنویسیه!
میگن دانشگاهی که دانشگاه نباشد دانشگاه نیست، اینجا باید گفت برنامهای که برنامه نباشد برنامه نیست، باگی که باگ نباشد باگ نیست، و برنامهای که باگ نداشته باشه برنامه نیست.
مورد داشتیم طرف دیده برنامش خیلی خوب و کامله هیچ باگی نداره، گفته اِیبابا اینطوری که نمیشه، چندتا باگ بِچِپونیم توش بشه یه برنامه واقعی ?
از شوخی که بگذریم، این وسط یه نکته جالب اینه که اغلب توی فیلما، برنامهنویسا رو یسری هَکِر نشون میدن که طرف همزمان داره با دو تا دستش روی سه تا کیبورد تایپ میکنه و توی شیش تا مانیتور جلوش داره یعالمه کد بالا پایین میشه و بووووم، فلان سایت یا سازمان هک شد! اون واقعیتِ الکیایه که نشون میدن، و خیلی فانتزیه! ولی در حقیقت برنامهنویسی نه تنها کمی زُمُخت هست، تازه بشدت حوصله و اعصاب میخواد (مخصوصاً اوایلش، یا زمانهایی که یه مشکلایی ممکنه چند ساعت یا حتی چند روزتون رو مشغولِ خودش بکنه!).
عملاً وقتی بعد از جَوگیریِ حاصل از دیدن فیلم و سریال، با تمام قوا، عزمتون رو جزم میکنین که وارد دنیای برنامهنویسی بشین، من بهتون خوش آمد میگم، ولی آماده باشید که در کنار لذت فوقالعادهای که میتونه داشته باشه، احتمال تجربه کردن همچین حالاتی کم نیست:
و برای برنامهنویس شدن هم شرایط یا سِنِ خاصی وجود نداره. درسته که توی سنین پایینتر راحتتر میشه یاد گرفت ولی خب این در مورد همه کاری صدق میکنه نه فقط برنامهنویسی! دیگه وقتی یه خانمِ هشتاد ساله برنامهنویسی رو شروع میکنه بقیه چه بهانهای میتونن داشته باشن؟ ولی دیگه انصافاً بعضی وقتا، آدم کمی بهش بر میخوره، همه دارن میان برنامهنویس شن! خوبهها، ولی از قدیم گفتن حواسمون باشه از هول حلیم نیفتیم تو دیگ (یا مثلاً بیگدار به آب زدن، یا هر ضربالمثلی که مفهومو برسونه، الان من حضور ذهن ندارم:دی). این همه شغل هست، حتماً هم همه نباید برنامهنویس بشن. ولی من به عنوان یه برنامهنویس از ورود هر کسی که واقعاً بخواد اصولی کار کنه و مفاهیم رو یاد بگیره استقبال میکنم. البته نه اینکه صرفاً با یه کلاس فکر کنه دیگه برنامهنویس شده، چون دنیای برنامهنویسی بی انتهاس! گرچه رودمپهای کمککنندهای وجود داره.
مورد داشتیم طرف توی پروفایل لینکداینش سابقه کاریش روی هم دو سال نبوده بعد با افتخار نوشته فولاِستَکدِوِلوپِر! لطفاً انقدر با روح و روان بدبختایی که بعد از چندین سال تجربه و برنامهنویسی هنوز نمیتونن این ادعا رو بکنن، بازی نکنید.
این راه، استقامت و تلاش و حوصله و یادگیری و تواناییِ حل مسئله و کلی چیزای دیگه میخواد. حتی گاهی ضررهای جسمی زیادی داره، اگه شخص حواسش به خودش نباشه، ممکنه درگیر مسائلی بشه، از مشکلات چشمی و گرفته تا مواردی مثل کمردرد (این دومی رو خیلی دیدم بین اطرافیانی که چندین سال برنامهنویس یا درگیر شغلای مرتبط با حوزه فناوریاطلاعات بودن)، حتی میتونه موجب اضطراب و استرس هم بشه! (اگه فکر میکنید موارد روحی و منتالی کمی آزارتون میده یکی از روشای جدید و نسبتاً خوب روانشناسی اکت هست که در صورت علاقه با مراجعه به این لینک میتونید کمی در موردش اطلاع پیدا کنید)
خلاصه اگه برنامهنویس هستین یا میخواین بشین، حتماً رعایت سلامت و ورزش و طرز نشستن و از این دست کارای جسمی رو حتماً قطعاً عقلاً رعایت کنید.
به عنوانِ آخرین مطلب هم، خیلی خلاصه داستان برنامهنویس شدن خودم رو میگم. کنکور سال اول دانشگاه آزاد تهران مرکز عمران قبول شدم که نه تنهای همرشتهی پدرم بود تازه اساتید اونجا برخی دوستان صمیمیشون بودن و اطرافیانشون هم شرکتای زیادی بودن که به محض ورود به دانشگاه میتونستم وارد بازار کار هم بشم. ولی من لحظه آخر و درست بعد از ثبتنام توی اونجا، پشیمون شدم و گفتم یه سال دیگه میخونم میرم نرمافزار. و سال بعد توی دانشگاه علموصنعت واردِ رشته مهندسیکامپیوتر گرایش نرمافزار شدم. ولی بعد از یکی دو ترم دیدم این چیزی نیست که من رو راضی کنه، کلن ساختار دانشگاه مورد پسند من نبود. خودم شروع کردم با یادگیری.
به جایی رسیدم که با اینکه ترم اول دوم توی درس ساده و مسخرهای مثل مبانی برنامهنویسی افتاده بودم! ترم بعد نه تنها تعداد زیادی از بچهها (اگه نگیم اغلبشون) تمرینای من رو میفرستادن، پروژه پایانی رو هم خودم برای چند نفر بجز خودم زدم (البته کاملاً رایگان بخاطر علاقه، جوان بودیم و جاهل، قبول دارم اخلاقی نبوده! و بماند که یکیشون از من هم نمره بالاتری گرفت?). خلاصه، نتیجه اون دوران شد بابی برای ورود من به دنیای برنامهنویسی، و دقیقاً لحظهی اصلیش زمانی بود که توی کلاس کمکمدرس (خود استاد از پاورپوینت برنامهنویسی درس میداد! کمکمدرس هم از سالبالاییها و اسمش سینا بود فامیلیش یادم نیست) یه JOptionPane توی جاوا باز کرد که اسم رو از کاربر بگیره، اصن دریچهی خاصی به روی من گشوده شد، انگار دنیا رو بهم داده بودن، عین بچهها ذوق کرده بودم! و شاید به نوعی بشه گفت تمامی این سالها رو مدیون همون موقع هستم. و با اینکه شاید سختیِ بیشتری توی مسیر شغلی کشیدم به نسبت حالت اول (عمران)، ولی بشدت راضی هستم از انتخابی که اون زمان کردم (به قول دوستانِ کریپتوکارنسی باز، non financial advice، این یه توصیه یا پیشنهاد نیست، طبیعتاً هر کسی مسیر خودش رو داره توی زندگی).
و در نهایت، زمانِ انتشارِ این مقالهای که خوندید، دو روز مونده تا روزِ جهانی برنامهنویس (البته در سال میلادی).
من به نشانه احترام به همه برنامهنویسا، میخواستم یه آهنگ حماسی پخش کنم پاشم کلاه از سر بردارم، ولی دیدم نه کلاهی دارم الآن نه آهنگ حماسیای دمِ دستمه نه روی مودِ بلند شدن هستم ? ولی از صمیم قلب امیدوارم همه مردم مخصوصاً برنامهنویسا رو به پیشرفت و موفقیت باشن.
شاد و سلامت باشید.
منتشر شده در ویرگول توسط محمد قدسیان https://virgool.io/@mohammad.ghodsian
https://virgool.io/@mohammad.ghodsian/day-of-the-programmer-ensnaxusmlto
بقیه مقالات من توی ویرگول رو هم میتونید توی لینک پروفایلم ببینید:
لینک هایی که توی این مقاله به هر نحوی بهشون ارجاعی داده شده:
https://fa.wikipedia.org/wiki/%D8%B1%D9%88%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86