What Are Ethics?
Definitions from philosophy → computer ethics → SE ethics — خلينا نفهم الموضوع من أوله.
- Ethics = "moral principles that govern a person's behavior or the conducting of an activity".
- Or "the branch of knowledge that deals with moral principles".
- Origin: Greek ethos = habitual character, custom.
Computer Ethics
"The field of analyzing and solving dilemmas and ethical issues arising during using and developing computing systems in the light of ethical theories and professional practice."
الـ professional = حد اللي بيشتغل في مهنة محددة بـ:
- Knowledge and skills بيتعلمها من تعليم وتدريب.
- License بتسمحله يمارس المهنة.
Professionalism يعني...
- Competence · Honesty · Integrity — كفاءة وأمانة ونزاهة.
- Reliability and responsibility — موثوقية ومسؤولية.
- Communication and collaboration — تواصل وتعاون.
- Self-development — تطوير نفسك.
- Good judgment — حكم كويس.
Theories of Ethics
4 مدارس فكرية في الأخلاق — لازم تعرف كل واحدة فيها إيه.
🎯 Consequences Theory
Egoism: action good/bad based on benefit/harm to individual.
Utilitarianism: morally acceptable if it brings the greatest good for the greatest number.
⚖️ Deontology (Duty-based)
Actions are what matters — NOT consequences. Humans have duty to do what is good. Actions are good/bad in themselves.
🌍 Relativism
No universal ethical norms. Right and wrong differ between cultures, societies, generations.
🕊️ Divine Command
Humans are on Earth to serve God. Divine guidance is the source of ethics — defines what is right and wrong.
Why Do We Need SE Ethics?
الممارسات غير الأخلاقية بتسبّب فشل المشاريع، فشل الأنظمة، وحتى وفاة!
- London Ambulance System — Company took work it had no experience in. System released with known bugs.
- The Vasa (classical engineering ethics).
- Therac-25 — Company denied the system had problems.
- Royal Mail / Fujitsu (UK, 1999-2021) — Faulty accounting software accused 700+ post office workers of theft.
- هتشتغل على منتج بيتتبع بيه في خصومهم السياسيين؟
- هتطلع منتج حساس خالص من تستينغ ُكامل عشان المدير ضغط عليك؟
- هتقبل عقود مش كفء تعملها؟
- هتضحّي بممارسات الـ SE الصح عشان تخلص في الوقت؟
- طب لو المشروع متأخر والشركة كدبت على العميل؟
- طب لو العميل جه عليك مباشرة برا عن الشركة؟
SE Code of Ethics — Preamble
ACM/IEEE joint code. Authoritative reference for the profession.
"Software Engineers are those who contribute by direct participation or by teaching, to the analysis, specification, design, development, certification, maintenance, and testing of software systems."
"Because of their roles, software engineers have significant opportunities to do good or cause harm."
The Code applies to:
- Practitioners
- Educators
- Managers
- Supervisors
- Policy makers
- Trainees and students of the profession
The 8 Fundamental Principles ⭐
احفظهم بالترتيب! كل principle ليه clauses (3.01, 3.02, ...). الـ exam بيديك scenario ويسأل أي principle — لازم تبقى عارف كل clause بيعمل إيه.
لازم مهندسين السوفتوير يتصرفوا دايماً بما يخدم المصلحة العامة.
- شيل المسئولية الكاملة عن شغلك.
- وازن بين مصلحة الـ SE، الشركة، العميل، والمستخدمين بما لا يضر الصالح العام.
- متوافقش على سوفتوير إلا لو كان آمن، ومتجرب كويس، ومفهوش مشاكل.
- أعلن عن أي ضرر ممكن السوفتوير يسببه، متخبيش حاجة.
- خليك فير ومتغشش حد.
- اعمل حساب ذوي الاحتياجات الخاصة (Physical disabilities) في السوفتوير بتاعك.
اتصرف بما يحقق مصلحة العميل والشركة، بس من غير ما تضر المصلحة العامة.
- 2.01 — قدّم خدمات بس في مجال خبرتك — متقبلش شغل مش كفيله.
- 2.02 — متستخدمش سوفتوير مسروق أو متكرك.
- 2.03 — استخدم الملكية بالطريقة المرخصة من صاحبها.
- 2.04 — تأكد إن المستندات اللي بتعتمد عليها معتمدة.
- 2.05 — احترم سرية المعلومات — الـ NDA مش هزار.
- خليك صريح في حدودك · بلّغ عن أي مخالفات تشوفها · متقبلش تشتغل في حاجة بتضر الناس.
اتأكد إن الـ products والتعديلات بتاعتك مطابقة لأعلى المعايير الاحترافية.
- 3.02 — تأكد إن الأهداف مناسبة وممكن تتحقق.
- 3.04 — تأكد إنك مؤهّل لأي مشروع بتقبله.
- 3.07 — افهم الـ specifications كويس من الأول.
- 3.09 — اعمل تقديرات واقعية للتكلفة والوقت.
- 3.10 — اتأكد من وجود تستينغ ومراجعة كافيين ⭐
- اتعامل مع الداتا بأمانة، وثّق الشغل بتاعك كويس، واحمي خصوصية اليوزرز.
حافظ على نزاهتك واستقلاليتك لما تيجي تقيّم أو تاخد قرار احترافي.
- 4.03 — احتفظ بموضوعيتك في التقييم — متتأثرش بعلاقاتك.
- 4.04 — متقبلش رشاوي أو double billing أو أي ممارسة مالية غير سليمة.
- 4.05 — أعلن عن أي conflict of interest عندك — متخبيش الموضوع ده.
- 4.06 — متشتغلش في لجان فيها تضارب مصالح مخفي.
المديرين والـ leaders لازم يشجعوا ويطبقوا الأخلاقيات في الإدارة بتاعتهم.
- 5.01 — اضمن إدارة كويسة وإجراءات فعالة للجودة وتقليل المخاطر.
- 5.02 — علّم الـ engineers بالمعايير قبل ما تحاسبهم.
- 5.04 — وزّع الشغل حسب خبرة وتعليم كل واحد.
- 5.05 — اضمن تقديرات واقعية للتكلفة والوقت والجودة.
- 5.11 — متطلبش من الـ engineer يعمل حاجة تتعارض مع الـ Code ⭐
- إدي رواتب عادلة · متتحيزش ضد حد · بلّغ عن المخالفات بطريقة صح.
ارفع من نزاهة وسمعة المهنة بما يتماشى مع المصلحة العامة.
خليك فير وادعم زمايلك في الشغل.
- 7.02 — ساعد زمايلك إنهم يطوروا من نفسهم.
- شجعهم يلتزموا بالـ Code of Ethics.
- إدي credit للناس على شغلهم وماتسرقش مجهود حد.
- اعمل review بموضوعية من غير شخصنة.
خليك دايماً بتتعلم وطور من نفسك (Lifelong learning).
- 8.01 — زوّد معرفتك في الـ dev والـ maintenance والـ testing.
- 8.02 — حسّن قدرتك على عمل سوفتوير آمن ومفيد.
- 8.03 — طوّر مهاراتك في الـ documentation.
- 8.04 — افهم بيئات العمل كويس.
- 8.05 — خليك على دراية بالـ standards والقوانين.
- 8.06 — افهم الـ Code of Ethics ده نفسه كويس.
Case Studies
LAS · CONFIRM · Royal Mail/Fujitsu — بنطبّق عليها الـ principles ونشوف فين الغلطة.
🚑 London Ambulance System
نظام الإسعاف الآلي في لندن نزل وفشل فشل ذريع. التحقيقات كشفت بلاوي ومخالفات أخلاقية كتير:
- الجدول الزمني اتحط لأسباب سياسية، مش تقنية — وكان غير واقعي تماماً.
- تيم التقييم بتاع المناقصة كان معندوش خبرة ومكسل.
- شركة System Options مكنش عندها أي خبرة سابقة — ورغم كده قدموا أرخص عرض وكسبوا (دي مخالفة لـ 2.01).
- مبلغوش إدارة الـ NHS بالحالة الحقيقية للمشروع بأمانة (مخالفة لـ 4.05).
- النظام متعملوش testing صح، وكان مليان errors خطيرة (مخالفة لـ 3.10).
- قرار الـ "Go live" كان سياسي، مش مبني على تقييم الـ QA.
- الموظفين متدربوش كفاية، ومكانش فيه خطة طوارئ (backup plan).
📥📦 CONFIRM Project (ARMIS + Marriott + Hilton)
ARMIS بنت نظام حجز فنادق وسيارات — فضيحة مكملتش، بدأت 1988 واتلغت 1992. مسلموش أي حاجة شغّالة ليوم من الأيام.
- ARMIS كانت بتكدب على حالة النظام طول الوقت (violates Principle 4).
- الاستثمار من $55M طلع لـ $125M — والتسوية بـ $160M.
📮 Royal Mail / Fujitsu (1999-2021)
البريد الملكي البريطاني نزّل سوفتوير حسابات من شركة Fujitsu سنة 1999. بين 2000 و 2014 حصلت الكارثة:
- أكتر من 700 موظف بريد اتهموهم بالغلط إنهم حرامية.
- ناس كتير اتسجنت، واتدمرت مالياً، وفي منهم انتحر.
- في 2021: المحكمة حكمت إن السوفتوير كان بايظ ومضروب. ودفعوا تعويضات 58 مليون إسترليني لـ 555 موظف.
- الـ developers قالوا إن الكود كان مبيتراجعش، ومفيش coding style، ومليان bugs.
- المديرين هددوا الـ developers ("كملوا شغل أو هتتطردوا") — وده مخالف لـ 5.11.
- الـ developers خالفوا مبدأ 3.10 (اللي هو اتأكد من الـ testing).
- والمديرين خالفوا المبادئ 5.01 و 5.05 و 5.11.
Exam Bank — Lecture 15
الـ ethics scenarios بتتكرر دايماً. اقرا الـ scenario كويس، بعدين identify الـ violations — متديش وقت تفكير.
Which clauses of Principle 4 (Judgment) are violated?
4.03 — Maintain professional objectivity
4.04 — No bribery/improper financial practices
4.05 — Disclose conflicts of interest
4.06 — Refuse private/governmental bodies with conflicts
- 4.03 ❌ — قبل السوفتوير الوحش — فيه لا موضوعية.
- 4.04 ❌ — إنك توظف حد قصاد خدمة دي تعتبر رشوة.
- 4.05 ❌ — معلنشش عن تضارب المصالح.
- 4.06 — مش منطبقة هنا.
2.01 — Provide services only where competent
2.02 — Do not use illegally obtained software
2.03 — Only use property as authorized
2.04 — Documents relied on are approved
2.05 — Honor confidentiality of information
- 2.01 ❌ — مش كفيء في الـ C#/.NET وقبل الشغل — مخالفة واضحة.
- 2.02 ❌ — استخدم Visual Studio متكرك — وده سوفتوير غير قانوني.
- 2.05 ❌ — كشف تفاصيل المشروع المحمي بالـ NDA — مخالفة.
- 5.01 ❌ — مفيش إدارة كويسة لتقليل المخاطر (هينزل البرنامج وفيه ثغرة).
- 5.05 ❌ — تقديرات مش واقعية (مفيش وقت كافي يتصلح الـ bug).
- 5.11 ❌ — المانجر بيطلب من الـ SE يعمل حاجة ضد قواعد الـ Code (إنهم ينزلوا برنامج مش متأمن).
8.01 — Further knowledge of analysis/dev/maintenance/testing
8.02 — Improve ability to create safe, reliable, useful SW at reasonable cost & time
8.03 — Improve documentation
8.04 — Understand SW environments
8.05 — Knowledge of relevant standards and law
8.06 — Knowledge of this Code itself
- 8.01 ✅ — بيزود معرفته (في الـ security والـ dev).
- 8.02 ✅ — بيحسّن قدرته إنه يعمل سوفتوير آمن وموثوق.
الـ framework مش قانون ولا ستاندرد (عشان كده 8.05 مش بتنطبق مباشرة).