 
   - بواسطة x32x01 ||
 أهم دروس اتعلمتها كمبرمج محترف
 أهم دروس اتعلمتها كمبرمج محترففي حاجات كتير اتعلمتها كمبرمج أو Software Engineer ماينفعش تكون مش عارفها.
الـ Feature الجامدة مش كفاية لو النظام نفسه مش ثابت أو آمن أو سريع.
الجودة مش رفاهية، دي أساس نجاح أي سيستم

 مقاييس جودة أي System
 مقاييس جودة أي System
قبل ما تفتخر بكودك، اسأل نفسك 
- هل السيستم متاح دايمًا؟ (Availability)
- هل بيرد بسرعة؟ (Latency)
- هل آمن ضد الاختراقات؟ (Security)
- هل المستخدم بيستمتع بالتعامل معاه؟ (Usability)

 التفكير الهندسي مش الكود بس
 التفكير الهندسي مش الكود بس
Abstraction
خبّي التفاصيل اللي مش لازمة دلوقتي، وخليك مركز على الصورة الكبيرة.Encapsulation
لمّ البيانات والسلوك في كائن واحد (Object) وطلّع Interface محترم.ده بيحافظ على conceptual integrity يعني النظام يفضل متماسك ومفهوم.
 Layers Architecture
 Layers Architecture
قسم شغلك صح بدل ما كل حاجة تبقى متلخبطة في مكان واحد:- Presentation Layer: مسؤولة عن الـ UI و الـ UX.
- Business Layer: فيها القواعد والمنطق (Rules & Logic).
- Data Layer: مسؤولة عن التخزين وجلب البيانات.
 الميزة؟ لو غيّرت حاجة في الـ UI مش هتلمس الـ Database.
 الميزة؟ لو غيّرت حاجة في الـ UI مش هتلمس الـ Database. Component Diagram ببساطة
 Component Diagram ببساطة
تخيل النظام زي خريطة محافظات:كل Component ليه حدود ومسؤولية واضحة.
بيتعامل مع باقي الـ Components من خلال Interfaces (Ball/Sockets).
وده بيقلل Coupling ويخلي التطوير أسهل وأوضح.
 قبل ما ترفع البروجيكت
 قبل ما ترفع البروجيكت
لازم تفهم:- هيشتغل فين؟
- وازاي؟
على سبيل المثال:
- Node: Runtime بيشغّل Component (Server, Mobile, Docker).
- Deployment Target: المكان اللي بتحط عليه الـ Artifact (زي ملفات exe, jar, config...).
 الفرق بين Synchronous و Asynchronous
 الفرق بين Synchronous و Asynchronous
- Synchronous: استنى الرد قبل ما تكمل (زي موظف في طابور).
- Asynchronous: ابعت وكمّل، الرد ييجي لما ييجي (زي إشعار Notification).
 في الجافاسكريبت مثلاً،
 في الجافاسكريبت مثلاً، async/await و callbacks بيطبقوا الفكرة دي. Feedback Loop
 Feedback Loop
راقب - قرّر - صحّح.زي Thermostat:
لو الحرارة زادت → يقلل.
لو قلت → يرفع.
نفس المبدأ في الأنظمة الذكية، لازم يبقى فيه رد فعل وتحسين مستمر.
 Interoperability
 Interoperability
يعني النظام بتاعك يعرف يتكلم مع أنظمة تانية.بدونها هتبقى جزيرة معزولة، وده ضد فكرة Enterprise Systems.
 Script vs Subroutine
 Script vs Subroutine
- Script: سيناريو بينفّذ خطوات متسلسلة (Automation).
- Subroutine: كود صغير Reusable يتكرر في كذا مكان.
 .
. Security مش Hash بس
 Security مش Hash بس
الأمان مش مجرد تشفير كلمة مرور، لكنه نظام متكامل بيشمل:- Authentication: التحقق من الهوية.
- Authorization: تحديد الصلاحيات.
- Encryption: حماية البيانات.
- Auditing: تتبع النشاط والتغييرات.

 Artifact vs Manifestation
 Artifact vs Manifestation
- Artifact: الناتج النهائي للتطوير (exe, jar, html, config...).
- Manifestation: العلاقة اللي بتقول إن الـ Artifact ده بيمثّل Component معين.
 Buffer Overflow
 Buffer Overflow
يعني الكود بيكتب أكتر من مساحة الذاكرة المخصصة له.ودي كانت كابوس في لغات زي C/C++ لأنها ممكن تؤدي لاختراق كامل

 Process View
 Process View
يهتم بالحاجات دي 
- Concurrency: بيتعامل مع كام عملية في وقت واحد؟
- Availability: السيستم بينام إمتى؟
- Throughput: بينفذ كام عملية في الثانية؟
 Reference Architecture
 Reference Architecture
يعني تصميم جاهز (Blueprint) لعائلة منتجات.يوفر وقت، يحقق Consistency، ويخليك تبني على أساس ثابت.
 الخلاصة
 الخلاصة
كل المصطلحات دي مش مجرد حشو نظري - دي اللي بتفرّق بين مبرمج Features ومهندس Architect حقيقي.لما تفهمهم:
 هتبني أنظمة تعيش سنين.
 هتبني أنظمة تعيش سنين. وهتشتغل أسرع.
 وهتشتغل أسرع. وهتبقى بتفكر زي مهندس فعلاً مش مجرد كاتب كود.
 وهتبقى بتفكر زي مهندس فعلاً مش مجرد كاتب كود. 
