DevOps Engineer & Linux Sysadmin
که کد آسان نمود اوّل
بگذارید با یک داستان خیلی عادی شروع کنم؛ مثلا بعد از تمامشدن کرونا در تلگرام آگهی تخفیف یک هتل را میبینید، VPN را قطع و در یک اپلیکشن تور و بلیط پرواز را انتخاب میکنید، به صفحه پرداخت بانک هدایت میشوید تا اطلاعات کارت بانکی و رمز پویا وارد شود؛ دقایقی بعد هم اطلاعات بلیط برای شما SMS و ایمیل میشود.
روز موعود با تاکسی اینترنتی به فرودگاه میروید و از روی مانیتور کانتر را پیدا کرده، ساعتی بعد از دریافت کارت پرواز و رسید چمدان به مقصد رسیدهاید.
یک روال خیلی ساده که تابحال برای هرکسی پیش آمده است.
برنامهای بنویسید!
برنامهای بنویسید که یک عدد دو دو رقمی را گرفته و مجموع ارقام آن را نمایش دهد
این اولین سوال الگوریتمیای بود که بعنوان الگوریتم به آن برخورد کرده بودم؛ راه حل همان ثانیههای اول آمد: تقسیم بر ده، جزء صحیح و جمع با باقیمانده تقسیم، آن روز نمیدانستم تقسیم صحیح داریم.
معمولا اولینها ماندگاری بیشتری در ذهن دارند؛ اولین کد، اولین زبان برنامهنویسی، اولین پروژه، اولین محصول و … . سال هشتاد و شش، کتاب دبیرستانی مبانی رایانه سوم ریاضی، از یکی به من ارث رسیده بود و Qbasic را یاد میداد این وسطها یکی گفت Visual Basic را ببین، آنجا بود که عشقم به سر افتاد و VB6.0 دوستداشتنی را پیدا کردم مثل خیلیها که که با همین ویژوالبیسیک شروع کردهاند.
گذشت و گذشت به خودم آمدم، اسمم شده بود برنامهنویس برخلاف حالا و امروز شده است روز برنامهنویس.
یا رومی روم یا زنگی زنگ
روز برنامهنویس و ۲۵۶ امین روز سال است، 256 بصورت باینری یا دودویی یا همان مبنای 2 میشود 100000000 ، یعنی اگر تبدیل به Bit شود، میشود هشت تا صفر جلوی یکی یک. بیتها یا صفر هستند یا یک. حالت دیگری وجود ندارد، یا سیاه است یا سفید، یا رومی است یا زنگی! شاید همین مساله هم باعث میشود خیلیها برنامهنویسها را آدمهای صفر و یکی ببینند.
اما اساسا برنامهنویسها خیلی فرقی ندارند با افراد عادی جز اینکه سروکارشان با کد است، حتی بلد نیستند یک اکانت اینستاگرام یا تلگرام را هک کنند!
البته برنامهنویس یک ظرافت شخصیتی دارد که بنظرم از کارش نشات میگیرد در واقع سروکلهزدن با کد یعنی حل مساله، یعنی یک برنامهنویس از صبح تا شب (بعضی هم شب تا صبح) درگیر حل مساله هستند.
این مسالهها شاید مثل همان مجموع ارقام یک عدد جواب خیلی سرراست داشت باشد، بعضی وقتها هم مثل فلان الگوریتم جواب سرراست ندارند، یا اصلا جوابی ندارند؛ یکسری هم جواب دارند اما پیادهسازی در لایهی کد کار حضرت فیل است.
روح برنامهنویس پیوند خورده با حل مساله و بنظرم همین یکی روال عادی زندگی یک برنامهنویس را تا حد شاید زیادی متاثر میکند. حل کردن مساله یعنی پردازش مغزی، یک جایی سریع جواب پیدا میشود، جایی هم ناخودآگاه چندساعت بعد جواب را میدهد!
حداقل یکبار برای هر برنامهنویس پیش آمده که فلان مشکل یا مساله را هنگام غذاخوردن یا خواب یا دوشگرفتن حل کرده است.
این حلکردن مساله یک قسمت خیلی کوچک در فرآیند تولید نرمافزار است، کد که نوشته شد تازه کار شروع میشود. تست میخواهد، بهینهسازی لازم است تا آنچه که ۱۰ ثانیه طول میکشیده بشود ۱ ثانیه یا مثلا مصرف مموری (همان RAM) کمتر شود! تمام شد؟ حالا آنجای کد یا برنامه مشکل امنیتی دارد و دسترسی به آقای Attacker (هکر) میدهد. میگذرد و میگذرد میرسد به مرحلهی استقرار (Deploy) که برسد به دست مشتری و نگهداری سرور و برنامه با سیسادمینها.
همه خوشحال و شادند که باگ ناگاه میافتد؛ مثلا کد تخفیف ۱۰ درصدی، ۱۱۰ درصد اعمال میشود و یکچیز هم دستی به کاربر میدهد در ازای خریدش. اینجا باگ ولی افتاده است؛
باگ اگر روز ازل در دل برنامه نبود / تا ابد زیر فلک ناله مستانه نبود
آن هم حل میشود اما...اصلا نیاز نبوده این فیچر پیادهسازی شود، برویم از اول! فوقع ما وقع.
خیلی شفاف بگویم:
برنامهنویسها موتور محرک چرخهی تولید نرمافزار هستند
فرماندهان راه تکنولوژی
برنامهنویسی بازهی بسیاربسیاربسیار بزرگی را در برمیگیرد؛ عمدهی افراد دید شفافی در مورد برنامهنویسی ندارند، هرکسی بنا به محیط خود آن را درک میکند، حرجی هم نیست چون به نوعی کار تخصصی است، مثلا من از مکانیک خودرو تقریبا هیچ اطلاعی ندارم و فکر میکنم همه کاربراتور تنظیم میکنند! اینجا مثلا یکی فکر میکند برنامهنویس وبسایت درست میکند، یکی دیگر اپلیکیشن موبایل، برخی هم به دنبال هک اکانت هستند، یکسری هم همیشهی خدا دیتای موبایلشان وصل نمیشود.
هرچند در این بین برنامهنویسهای ایرانی مظلومترین هستند، برخلاف کشورهای دیگر از بیرون خیلی ابزارها را اجازهی استفاده ندارند و از داخل هم خیلیها اجازهی استفاده نمیدهند و معتقدند بیشتر میفهمند.
برگردیم به آنچه که در ابتدا آمد تا بعد از کرونا به مسافرت بروید؛ اولین تصویر را استوری میکنیم… حالا بدون ذرهای اغراق میگویم هزاران برنامهنویس بصورت مستقیم و صدها هزار (شاید حتی میلیون) برنامهنویس بصورت غیرمستقیم، هفتهها و ماهها و سالها وقت گذاشتهاند تا یک سفر تفریحی داشته باشیم. همین سفر را تعمیم دهید به یک کارتبهکارت بانکی، خرید از فروشگاه اینترنتی، عکاسی با دوربین دیجیتال و ادیت آن، ثبتنام در فلان سامانه و ... .
مثال زیاد است از آنچه برنامهنویسها انجام دادهاند؛ زمانی که سرچ میکنید، وقتی صفحه گوشی خاموش-روشن میشود، لباسشویی که لباس را خشک میکند یا مثلا رادیوی ماشین که پخش میکند، حتی دکمهی قرمز روی ریموت تلویزیون؛ بالاتر نگاه کنیم مریخنورد و موشک فضایی و رادار و ... . زمانی که یک موزیک را گوش میکنیم، وقتی عکسی را میفرستیم و تکبهتک پستهایی که لایک میکنیم، تماس تصویری با عزیزانمان، حتی همین متنی که میخوانید، همه و همه و همه را برنامهنویسها نوشتهاند و مینویسند.
پشت پرده این دنیای مدرن، برنامهنویسها نشستهاند و چیزهایی که شما از آن لذت میبرید را طراحی و خلق میکنند.
پس فرماندهان راه تکنولوژی روزتون مبارک!
مطلبی دیگر از این انتشارات
طرحهای معماری: 4+1 مدل نمایش معماری نرمافزار بخش اول
مطلبی دیگر از این انتشارات
گامهای یک مهاجرت داده، با نگاهی به پروژه مهاجرت سپه
مطلبی دیگر از این انتشارات
در بزرگترین پروژه بانکی کشور میخواستیم برنده باشیم و به چیزی جز برنده بودن فکر نمیکردیم