بهزاد مرادی

قانون مورفی چیست و در برنامه‌نویسی چگونه نمود عینی پیدا می‌کند؟

بهزاد مرادی مدرس، کپی‌رایتر و دولوپر

این محتوا بدون نظارت تیم سکان آکادمی تولید شده و صرفاً نظرات شخصی بهزاد مرادی می‌باشد.

Murphy's Law (قانون مورفی) توسط Edward Murphy که یک مهندس هوا و فضای آمریکایی بود ابداع شد که ایدهٔ جالبی دارد بدین صورت که:

اگر راه‌های متفاوتی برای انجام کاری باشه و این امکان وجود داشته باشد که یکی از آن‌ها به خرابی یا فاجعه بینجامد، حتماً یک نفر کار را به همان صورت انجام خواهد داد!

که برای آشنایی بیشتر با این قانون، می‌تونید به لینک https://goo.gl/f3K1qD مراجعه نمایید. به طور کلی، برخی از جالب‌ترین و در عین حال اعصاب‌خردکن‌ترین مصداق‌های این قانون عبارتند از:

- فرض کنیم که مثلاً در یکی از شعب بانک پاسارگاد دو ATM قرار دارد و ما در یکی از صف‌ها ایستاده‌ایم. نفر مقابل ما یک پیرمرد است که خیلی سر حوصله کارش را می‌کند و این در حالی است که می‌بینیم در ATM کناری مشتریان دونه‌دونه می‌آیند و سریع می‌روند. تصمیم می‌گیریم که به صف کناری بریم اما در کمال ناباوری می‌بینیم که پیرمرد کارش رو تمام می‌کنه و صف قبلی راه‌ می‌افتد و صف جدید که داخل آن ایستاده‌ایم گیر می‌کند!

- فرض کنیم در کانتکت لیست خود یک شماره‌ای است که سال‌ها پیش آن را ذخیره کرده و هیچ‌گاه هم نشده که به آن نیازی پیدا کنیم و تصمیم می‌گیریم آن را حذف کنیم. به محض حذف شدن کانتکت، ظرف یکی دو روز یا نهایتاً‌ یک هفته به کمک آن فرد نیاز مبرم پیدا می‌کنیم در حالی که هیچ شماره‌‌ای از وی نداریم!

- وقتی که سر کلاس درس هستیم و ناگهان پاک‌کن از دستمان می‌افتد، در کمال ناباوری پاک‌کن به دورترین نقطهٔ ممکن پرت می‌شود!

- فرض کنیم در یک شهر کوچک زندگی می‌کنیم و وقتی که با کسی بیرون می‌رویم که دوست نداریم دیگران ما را با وی ببینند،‌ با نهایت شانس این اتفاق هم می‌افتد و هرگز کسی ما دو نفر را با همدیگر نمی‌بینید. حال فرض کنیم که می‌رویم تهران و با این فرض که در یک شهر پانزده میلیونی احتمال اینکه فرد آشنایی شما دو نفر را با یکدیگر ببیند خیلی کم است اما در کمال ناباوری یک آشنایی مقابل شما سبز شده و دردسرساز می‌شود!

- نسبت خارش هر نقطه از بدن با Accessibility (دسترسی‌پذیری) آن رابطهٔ عکس دارد!

- فرض کنیم کارمان به شکلی است که دائم در سفر هوایی هستیم و این در حالی است که همواره هواپیما با یک تأخیر نیم ساعته تا یک ساعته می‌پرد. یک روز خواب می‌مانید و با این فرض که مشکلی پیش نمی‌آید راهی فرودگاه می‌شوید اما در کمال ناباوری می‌بینید که دقیقاً همان روز هواپیما On-time پرواز کرده است!

- قرار است از میان حدوداً یکصد CD موردی را پیدا کنید و برای این کار دونه‌دونه آن‌ها را چک می‌کنید اما این در حالی است که CD مد نظر جزو همان ده‌ تا CD انتهایی است!

- به محض خرید یک جنس از دیجیکالا، فردا می‌بینیم که پیشنهاد شگفت‌انگیز شده!

- سر سفره نشسته‌اید و مشغول خوردن غذا هستید و مابین شما و سفره حدوداً دو سانتی‌متر فاصله‌ هست که قالی مشخص است. از قاشق ماست می‌ریزد اما در کمال ناباوری ماست دقیقاً در جایی فرود می‌آید که قالی قرار دارد (نه روی شلوار و نه توی سفره بلکه روی قالی دست‌باف!)

- در پمپ بنزین، جایگاهی که انتخاب می‌کنیم از همه دیرتر راه می‌افتد!

- در عوارضی تهران-قم، جایگاهی که انتخاب می‌کنیم از همه دیرتر راه می‌افتد!

به نظر می‌رسد که تجربیات ملموسی تا اینجای بحث مطرح شده باشد و حال نوبت آن می‌رسد که ببینیم این قانون جالب در صنعت توسعهٔ نرم‌افزار به چه شکل نمود عینی پیدا می‌کند.

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

- نرم‌افزاری که نوشته‌ایم به اصطلاح Stable است و ماه‌ها بدون هیچ باگی کار می‌کند. مورد پیش می‌آید که تصمیم به مسافرت می‌گیریم و از آنجا که نرم‌افزار از دید ما باثبات است، هیچ سیستمی با خود به همراه نمی‌بریم تا کمی از فضای کار دور بوده و بتوانیم بیشتر لذت ببریم. صرفاً یکی دو روز از مسافرت نگذشته که تلفن پشت تلفن که سیستم از کار افتاده است! جالب است بدانیم که هرچه مقصد مسافرت  از محل سکونت ما دورتر باشد، احتمال وجود باگ‌های شدیدتر هم بیشتر خواهد شد!

- کلیهٔ فیلدهای ورودی را Escape می‌کنیم اما یک فرمی هست که تحت هیچ عنوان احتمال ندارد کسی از وجود آن آگاه باشد و از قضا بی‌خیال Validate کردن دیتای ورودی از آن طریق می‌شویم اما در کمال ناباوری از همان نقطه اَتَک می‌خوریم!

- یک لایببری و فریمورک را انتخاب می‌کنیم و در مستندات می‌خوانیم که قرار است نسخهٔ بعدی آن ریلیس شود که به مراتب Stable تر و باگ‌فیری‌تر هم خواهد بود اما دقیقاً مشخص نیست که زمان عرضه چه موقع هست. به هر حال مجبور می‌شویم که روی نسخهٔ قدیمی‌تر شروع به کدنویسی کنیم. به محض اینکه به مراحل پایانی پروژه می‌رسیم و فقط ۱۰٪ تا پایان آن مانده، یک خبرنامه دریافت می‌کنیم که خبر از انتشار نسخهٔ ابزار جدید می‌دهد که از قضیا بک‌وارد کامپتیبل هم نیست!

- فرض کنیم نرم‌افزاری داریم که حاوی حدوداً ۱۲ ماژول مختلف است. کلیهٔ I/O ها در اکثر تمامی ماژول‌ها را لاگ‌گیری می‌کنیم به جز یک مورد و آن هم به این دلیل است که آن ماژول اصلاً‌ چیز مهمی نیست که نیاز به لاگ‌هایش داشته باشیم. سیستم به مشکل می‌خورد اما لاگ‌ها چیزی را نشان نمی‌دهند که مشکل از کجاست و پس از چند هفته سروکله زدن با نرم‌افزار می‌بینیم همان ماژولی که لاگ‌گیری نکردیمش مشکل‌زا بوده است!

- یک پروژهٔ شخصی داریم و باید آن را هر طور که شده تکمیل کنیم؛‌ لذا از محل کار اصلی خود مرخصی می‌گیریم تا منزل بمانیم و کد بزنیم اما در کمال ناباوری همان روزی که مرخصی هستیم برق به مدت ۶ ساعت می‌رود!

- مشکلی داریم که خود از حلش ناتوانیم لذا شروع به پرسیدن سؤال در استک اورفلو و همچنین ارسال سؤال برای چند نفر از دوستان باتجربه‌تر از خود می‌کنیم. به محض اینکه تمامی پیام‌ها سابمیت شد، راه‌حل به ذهنم خودمان می‌رسد!

- وقتی که توی فایل‌زیلا دکمهٔ آپلود رو می‌زنی تا کدهای آپدیت‌شده دیپلوی بشن روی سرور، اینترنت قطع می‌شه!

می‌بینیم که این دست اتفاقات چقدر ملموس هستند. آیا شما هم تجربه‌ای از قانون مورفی در کدنویسی دارید که جالب باشد؟ با من و دیگران به اشتراک بگذارید.

ایدهٔ خود را در سکان‌پلاس بنویسید!

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
arshazm
arshazm برنامه نویس وب - علاقمند تدریس و استارتآپ
۱۳۹۷/۰۶/۰۷
با سلام و احترام به نظر جناب مرادی عزیز
با توجه به مطالعاتی که در زمینه های مرتبط با انرژی و جذب و موفقیت داشتم:
1.هرچیزی انتظارش رو بکشی همون برات پیش میاد.
2.شما آهنربای زنده ای هستید که مدام مردم ، موقعیت ها و شرایطی را که با افکار اصلی تان همخوانی دارند به سوی خود جذب میکنید.
3.آنچه را می بینیم ، باور نمیکنیم آنچه را باور داریم ، میبینیم.
4.انرژی + ، + را و انرژی - ، - را جذب میکند.
و...
پس از نظر بنده بهتره که همچین چیز هایی زیاد اهمیت ندیم.
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۳/۲۲
اینترنت قطع بودمیخواستم برای پنجشنبه که خونم زنگ بزنم کارشناس بیاد اما دقیقا پنجشنبه وصل شد و اخر روز هم دوباره قطع شد! هفته بعدش مریض شدم شدید و هفته بعدشم کلاسهام شروع شد! کلا تا دوماه این مشکل ادامه داشت
حسین قربانی
حسین قربانی
۱۳۹۷/۰۳/۲۲
آقای مرادی عزیز
سلام
1- اجازه بدهید قانون مورفی را با کمی توضیح که در ادامه خواهد آمد، قبول نکنیم. البته که از مطالعه نظارت شما لذت بردم و در برخی موارد تجدید خاطره شد😅.
2- این قانون مبنای علمی ندارد، بعید هم می‌دانم معتقدین به چنین قانونی هم اعتقاد داشته باشند که این قانون علمی است، در توضیح ویکی پدیای قانون مورفی هم از کلمه adage استفاده شده که تاکیدی بر همین موضوع است.
3- علت اینکه این موارد زیاد اتفاق می‌افتد این است که ما این موارد را زیاد می‌بینیم وگرنه احتمال وقوع رسیدن به عدد 6 در یک تاس و شرایط ایدئال همان یک ششم است، کمتر و بیشتر نمی‌شود، حالا چه روی به دست آمدن عدد شش حساس باشیم، چه نباشیم، این احتمال فرقی نمی‌کند و اگر به خواست مورد نظر نرسیم، مثل لکه ای سیاه در پارچه ای سفید مشخص خواهد شد و دیده می‌شود. به بیان ساده وقتی جایی در دسترس از بدنمان خارش پیدا کند، بدون اینکه متوجه باشیم، آنرا می‌خاریم و خلاص. کی چنین خارشی یادش می‌مونه و اصلاً بهش توجه می‌کنه؟ اما اگر در غیرقابل دسترس ترین مکان باشد، هر چند احتمالش با جاهای دم دست برابر است، اما جانمان را برای یک خارش ساده در می‌آورد و توی چشم است.😜
جان کلام اینکه این قانون همان قدر معتبر است که عبارتی مثل "باد آورده را باد می‌برد" و البته هزاران ضرب المثل تولید داخل دیگر.
موفق باشید
محمدامین عطائی
محمدامین عطائیبرنامه نویس جاوااسکریپت
۱۳۹۷/۰۳/۲۲
کل سالو منتظریم پادکست سکان بیاد بیرون دقیقا روز امتحان پایان ترم معادلات دیفرانسیل پادکست ریلیز میشه 😩
بهزاد مرادی
بهزاد مرادی مدرس، کپی‌رایتر و دولوپر
۱۳۹۷/۰۳/۲۱
داشتم از تهران می‌رفتم اراک که باک بنزین هم تقریباً آخرهاش بود. به یک جایگاه رسیدم ولی با خودم گفتم ولش کن بگذار برم جایگاه بعدی که باک خالی‌تر بشه که بیشتر بنزین بشه زد. رفتم جایگاه بعدی دیدم که اصلاً بنزین نداشت و منتظر تانکر بود که براش بنزین بیاره. هیچی سوار شدم راه افتادم دیدم که این طرف جاده اصلا جایگاه نیست و دارم باک کاملاً خالی می‌شه مجبور شدم دوباره بیوفتم توی مسیر قم (یعنی برگشتن به مبدأ) تا به یک جایگاه رسیدم. تا رسیدم مسئول جایگاه گفت آقا نازل رو بر ندار گفتم چرا گفت تغییر شیفت‌کاری هست. به همون نام و نشون ۲۰ دقیقه صبر کردیم تا دونه‌دونه پمپ‌ها رو چک کردن و شیفت تغییر کرد
اصل قانون مورفی به این می‌گن البته می‌تونیست بدتر هم بشه مثلا جایگاه منفجر بشه 😂😂😂