لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
تفسیر آیه ی ویل للمطففین از کتاب الهی در حوزه ی توسعه ی نرم افزار

تفسیر آیه ی ویل للمطففین از کتاب الهی در حوزه ی توسعه ی نرم افزار

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

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

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

نتیجه‌ای که محققین از این آزمایش گرفتند این بود که ما انسان‌ها در طول زمان یکسری Mindset یا بهتر بگوییم «جهان بینی» نسبت به محیط پیرامون خود پیدا می‌کنیم و همین جهان بینی باعث برخی تصمیم گیری ها در طول زندگی‌مان می شود.

در جامعه ی امروز، برداشتن گوشی موبایل یک فرد دیگر، خالی کردن حساب بانکی، زدن جیب شخص و امثالهم برچسبی معادل با «دزدی» می‌خورند اما این در حالی است که برداشتن کمی از خوراکی هم خوابگاهی از داخل یخچال، استفاده از پاک کن دوست بغلی دستی بدون کسب اجازه، برداشتن یکی دو عدد نخودچی کشمش از روی میز همکار کناری و … اصلاً دزدی محسوب نمی‌شوند اما در عین حال، تمامی این موارد -چه از دید انسانی بنگریم و چه از دید مذهبی- دزدی محسوب می‌شوند ولی از آنجا که هیچ کس به ما از دوران کودکی تا بزرگسالی گوشزد نکرده که دزدی، دزدی است چه یک عدد حبه قند باشد چه سه هزار میلیارد،‌ ما هم این‌گونه بزرگ شده‌ایم که در خوابگاه دانشگاه به راحتی از داخل یخچال خوراکی برمی‌داریم اما دست به اسکناس های روی یخچال نمی زنیم!

با این توضیح، حال نوبت به اصل مطلب که بررسی مسأله ی کم فروشی در برنامه نویسی است می‌رسیم و می‌خواهیم ببینم که آیا در توسعه ی یک نرم‌افزار هم می‌توان کم فروشی کرد یا خیر. پاسخ به این سؤال «آری» است. وقتی ما یک پروژه ی نرم‌افزاری را به مشتری تحویل می‌دهیم، خواهیم توانست به معنای واقعی کلمه کم فروشی کنیم آن هم چه‌جور اما از آنجا که Mindset ما به گونه‌ای تنظیم شده که فقط و فقط میزان نبودن دو کفه ی ترازو را معادل با کم فروشی در نظر می گیریم، خیلی اوقات ناخواسته در توسعه ی نرم‌افزار دست به کم فروشی می زنیم.

در زبان برنامه نویسی PHP، استانداردی وجود دارد تحت عنوان PSR که این استاندارد منجر شده تا تمامی برنامه نویسان زبان برنامه نویسی پی اچ پی با دستخط یکسانی کدنویسی کنند تا کدهای یکدیگر به مراتب راحت‌تر متوجه شوند. برای مثال، به قطعه کد زیر توجه کنید:

class MyClass 
{
    public $property = '';
   
    public function setMethod()
    {

    }

    public function getMethod()
    {

    }
}

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

class MyClass {
    public $p= '';
    public function setmethod(){

    }

public function get()
       {

   } }

در کد فوق می‌بینم که فاصله گذاری ها و نامگذاری ها اصلاً رعایت نشده اند. درست است که این کد به خوبی کار خواهد کرد و کسی هم از این قضیه بویی نخواهد برد اما سؤال اینجا است که آیا ما به تعهدات خود پایبند بوده‌ایم یا خیر؟ به همین سادگی می‌شود در کدنویسی کم فروشی کرد.

خیلی اوقات برای آن که مشتری را مجاب کنیم که ما تمام مسائل امنیتی را در توسعه ی نرم‌افزار مد نظر قرار می دهیم، در جلسات عقد قرارداد به مشتری می‌گوییم که اطلاعات حساس مشتریان -مثل رمزعبور- را نه تنها دو بار Hash می کنیم، بلکه از Salt هم برای امنیت بیشتر استفاده می‌کنیم اما واقعیت امر این است که صرفاً به یک بار استفاده از الگوریتم sha1 اکتفا می‌کنیم که این هم مصداق دیگری از کم فروشی است (توضیح مفاهیمی همچون Hash و Salt خارج از هدف این مقاله بوده لذا به منظور جلوگیری از طولانی شدن مطلب، از توضیحات تکمیلی پیرامون این مفاهیم خودداری می کنیم.)

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

در حوزه ی بهینه سازی سایت برای موتورهای جستجو (SEO) هم خیلی می بایست مراقب بود. فرض کنیم که یک مشتری سئو داریم و یکی از مفاد قرارداد این است که کلیه ی اصول بهینه سازی از دید گوگل مد نظر قرار داده خواهند شد. جالب است بدانیم که موتور جستجویی همچون گوگل چیزی در حدود 200 مولفه را برای رنکینگ صفحات مد نظر قرار می‌دهد حال چگونه ممکن است که یک سئو کار بتوانند کلیه ی این اصول را برای تک تک صفحات سایت مشتری مد نظر قرار دهد.

در بهینه سازی خیلی از بدهیات هم گاهی اوقات نادیده انگاشته می شوند. مثلاً به مشتری می‌گوییم که به منظور بهبود رتبه ی سایت، از Semantic HTML در طراحی رابط کاربری استفاده خواهد شد اما رد پایی از تگ های <header> یا <footer> به چشم نمی‌خورد چه رسد به تگ <section> و امثالهم!

مثال‌های بسیار زیادی می‌شود از چیزهایی زد که در ظاهر اصلاً مهم نیستند اما در اصل، مصادق عینی کم فروشی در توسعه ی نرم‌افزار می باشند. اگرچه دیدگاهی که خیلی از توسعه دهندگان نسبت به کدنویسی دارند مشابه مثال خوراکی، یخچال و اسکانس است که در بالا به آن اشاره کردیم، اما ما گاهی اوقات نیاز به Unlearn کردن برخی دیدگاه ها داریم. یعنی چشم ها را شسته و جور دیگر به زندگی نگاه کنیم.

در قدیم برای نشان دادن نهایت دقت محاسبات الهی، گفته می‌شد که حتی یک دانه گندم هم مد نظر قرار داده خواهد شد که به نظر می‌رسد برای برنامه نویسان بایستی گوش زد کرد که «حتی یک اسپیس هم مد نظر داده خواهد شد!»

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



بهزاد مرادی