در مقالهای در وبلاگ سکان آکادمی تحت عنوان وَیلُ لِلمُطَفِفِین: نگاهی به مقولهٔ کمفروشی در حوزهٔ توسعهٔ نرمافزار دیدگاه شخصیام رو نسبت به کمفروشی در بیزینس نرمافزار بیان کردم اما همانطور که از عنوان این پست مشخص هست، در این مقاله قصد دارم ببینم:
- اخلاقیات در صنعت توسعهٔ نرمافزار به چه معناست؟
- به چه کسی دولوپر اخلاقمدار میگویند؟
- و چگونه گاهی اوقات در یک دوراهی بین کارهای اخلاقی و کارهای غیراخلاقی گیر میافتیم؟
این قضیه گستردهتر از آن چیزی هست که یک کسی که فقط چند سالی است دست به کد شده و در صنعت نرمافزار مشغول به کار هست (یعنی بنده) بتونه در موردش اظهار نظر موشکافانه کند؛ اما در ادامه سعی میکنم در حد بضاعت خودم به این بحث ورود پیدا کنم و فقط طرح مسئله کنم.
Morality یا اخلاق شاخهای از علوم انسانی است که روی درک و شناخت ارزشها (Values) و ترک کارهای غیراخلاقی متمرکز است (https://en.wikipedia.org/wiki/Morality)
خب به نظر میرسه که تا اینجای بحث کمی با هم به قول معروف تنظیم فرمان شدهایم که منظور از اخلاق چیست. حال سریعتر ورود پیدا کنیم به مقولهٔ اخلاق در کدنویسی. به عبارت دیگر، ببینیم در صنعت توسعهٔ نرمافزار چه کارهای غیراخلاقی هستند (با توجه به اینکه کارهای اخلاقی خیلی بحثی رویشان وجود ندارد و تقریباً ما آدمها روی کارهای اخلاقی و درست اتفاق نظر داریم، لذا از اینجای بحث به بعد رو فوکوس میکنیم روی کارهای غیراخلاقی در کدنویسی.)
داستان فرضی شماره ۱
فرض کنیم که در یک شرکت نرمافزاری مشغول به کار هستیم (به واژهٔ فرض خود دقت کنید.) روی یک نرمافزاری همچون CRM یا eCommerce کار میکنیم. حال مدیرعامل، مسئول مربوطه، مدیر محصول یا مدیر پروژه از ما میخواهد که با یک تغییر جزئی در الگوریتم برنامه، کاری کنیم که مثلاً پروسهٔ محاسبه به اصطلاح Round Up شود. به عبارت دیگه، رو به بالا رُند شوند (مثلا اگر حساب یک مشتری ۱/۳۴۵/۷۶۸ تومان هست، به مبلغ ۱/۳۴۵/۸۰۰ تغییر کند.)
گرچه مبلغی که در بالا میبینیم صرفاً ۳۲ تومان هست که عملاً نه کسی را بدبخت میکند و نه کسی را خوشبخت و احتمال خیلی ضعیفی هم وجود دارد که مشتری از آن مطلع شود، اما سؤال اینجاست دولوپری که در چنین منگنهای قرار گرفته چه باید بکند؟ از یک طرف این کار را برخلاف اصول و Value هایش میداند اما از طرفی یک کارمند ساده است و باید به حرف مدیرش گوش دهد که در غیر این صورت ...
داستان فرضی شماره ۲
مجدد فرض کنیم دولوپری هستیم که مشغول کار روی یک پروژهٔ Dating (دوستیابی) هستیم. این پروژه به قول معروف عاشق و معشوق رو به هم قرار هست که برسونه. یکی از فیچرهای اصلی این پروژه، این است که کاربران میتوانند با همدیگر چت کنند (چیزی شبیه به قابلیت چت شبکهٔ اجتماعی لینکداین) اما مشکل اینجا است که مدیرعامل از ما خواسته است که دسترسی به Sniff (شُنود) مکالمات برخی کاربران برایش امکانپذیر شود!
خب از طرفی شما میبینید که دارید حریم خصوصی آدمهایی که به سرویس شما اعتماد کردهاند رو زیر پا میگذارید اما از طرف دیگر اگر از چنین کاری اجتناب کنید، اخراج خواهید شد!
برسیم به مثال آخر
فرض کنیم که دولوپر یک شرکت فروش هاست و دامنه هستیم. اگر تجربهٔ کار با چنین شرکتهایی را داشته باشید، میبینید که یک فیلدی دارند که داخلش نام دامنه را سرچ کرده، تعدادی پسوند مثل ir. یا com. و غیره را تیک میزنید؛ سپس سیستم چک میکند ببیند که آیا دامنهٔ مد نظر شما باز است یا خیر. تا اینجا همه چیز خوب است اما ...
اما یک روز مدیرعامل شرکت فکر بِکری به سرش میزند و آن را با دولوپر مطرح میکند بدین شکل که از وی میخواهد اگر کاربری نام یک دامنه را در سیستم سرچ کرد و آن نام دامنه باز بود و به قول معروف آدرس خوبی هم بود که میشد به قیمت گزافی فروختش، به صورت خودکار آن دامنه به نام شرکت به صورت Real-time (آنی) ثبت شده و به کاربر بگوییم که «متأسفانه این نام قبلاً خریداری شده است!»
سخن پایانی
گفتم که این بحث خیلی گسترده است و نیاز به بحث فراوان دارد؛ لذا فقط طرح مسئله کردم تا در موردش بتونیم فکر کنیم. گرچه ممکن است سناریوهای فوق در دنیای واقعی نمود عینی پیدا نکنند، اما مسلماً میشود مثالهایی واقعی یافت که مصداق عینی کارهای غیراخلاقی هستند. ممنون که وقت گذاشتید. جای نظر، انتقاد و پیشنهاد شما در بخش کامنتینگ است.