#019 — UI/UX Design | تصميم واجهة وتجربة المستخدم
قد يكون النظام قويًا من ناحية البرمجة، سريعًا، وآمنًا…
لكن إذا لم يعرف المستخدم أين يضغط؟ ماذا يفعل؟ وما الخطوة التالية؟ فالتجربة ما زالت سيئة.
وهنا يأتي دور:
UI/UX Design — تصميم واجهة وتجربة المستخدم
الفرق بينهما بسيط:
UX — User Experience
يركز على كيف تعمل التجربة.
هل الخطوات منطقية؟
هل يصل المستخدم إلى هدفه بسهولة؟
هل توجد خطوات زائدة؟
هل رسائل الخطأ واضحة؟
هل يعرف ماذا يفعل بعد ذلك؟
أما:
UI — User Interface
فيركز على كيف تبدو الواجهة.
الألوان، الخطوط، الأزرار، الأيقونات، المسافات، ترتيب العناصر، والحالات البصرية.
بمعنى مختصر:
UX = How it works
UI = How it looks
لكن التصميم الجيد لا يبدأ بالألوان.
يبدأ بسؤال:
من هو المستخدم؟ وماذا يريد أن ينجز؟
فالمستخدم الذي يدخل تطبيقًا لحجز رحلة لا يريد مشاهدة أجمل Animation…
هدفه غالبًا:
Search → Choose → Book → Pay → Confirm
ولهذا نرسم أولًا:
User Flow
أي المسار الذي سيمر به المستخدم للوصول إلى هدفه.
وكل خطوة إضافية يجب أن نسأل عنها:
هل هي ضرورية فعلًا؟
بعد فهم الرحلة ننتقل إلى:
Sketch → Wireframe → Prototype → Visual UI → Development
وهنا قاعدة مهمة جدًا:
Structure First → Style Later
لأن Wireframe سيئًا بألوان جميلة…
يبقى تجربة سيئة.
ثم يأتي دور Visual Hierarchy.
فنستخدم:
Size للحجم.
Contrast للتباين.
Spacing للمسافات.
Alignment للمحاذاة.
Typography للخطوط.
Color لتوجيه الانتباه.
الهدف ليس أن نجعل كل عنصر بارزًا.
بل أن نجعل المستخدم يعرف:
ما المهم الآن؟ وما الذي يجب أن أفعله بعده؟
ثم نحتاج إلى Design System حتى لا تصبح كل شاشة عالمًا مختلفًا.
نحدد نظامًا موحدًا لـ:
Colors — Typography — Buttons — Inputs — Cards — Icons — Spacing — States
لأن:
Consistency reduces confusion.
لكن هناك نقطة غالبًا ما تُنسى:
لا تصمم Happy Path فقط.
صمّم أيضًا للحالات الإستثنائية:
Loading
Empty State
Validation
Error
Success
Disabled
فالمستخدم لا يحكم على النظام فقط عندما يعمل كل شيء بشكل مثالي…
بل أيضًا عندما تحدث مشكلة.
بدل:
Error 504
الأفضل أن تقول للمستخدم:
تعذر إتمام العملية حاليًا.
لم يتم خصم المبلغ. حاول مرة أخرى.
لأن:
A good UX explains what happened and what to do next.
ويمكن تلخيص رحلة UI/UX هكذا:
Understand Users
↓
Define Goals
↓
Map User Flow
↓
Create Wireframes
↓
Build Prototype
↓
Design Visual UI
↓
Handle All States
↓
Test with Users
↓
Improve
والمعادلة الأهم:
User Needs + Clear Flow + Consistent UI = Better Experience
وفي النهاية، المستخدم لا يهتم بعدد الساعات التي قضيتها في التصميم…
هو يهتم بسؤال واحد:
هل استطعت إنجاز ما أريد بسهولة؟
سؤال للنقاش:
لو كان لديك تطبيق حجز يحتاج 9 خطوات لإتمام الحجز، هل تبدأ أولًا بتغيير الألوان؟
أم تبدأ بتحليل الخطوات نفسها وتقليلها؟
سؤال للبحث (:
(Wireframes & Prototypes)
ما الفرق بين Sketch وWireframe وMockup وPrototype؟ ومتى نستخدم كل واحد؟
م. طارق العمري
Software Engineer | Backend Developer
#UIUX #UIDesign #UXDesign #UserExperience #UserInterface #UserFlow #Wireframe #Prototype #DesignSystem #VisualHierarchy #ProductDesign #Usability #SoftwareEngineering #SoftwareDesign #FrontendDevelopment #SoftwareEngineer #هندسة_البرمجيات #تصميم_واجهات #تجربة_المستخدم #تصميم_البرمجيات
قد يكون النظام قويًا من ناحية البرمجة، سريعًا، وآمنًا…
لكن إذا لم يعرف المستخدم أين يضغط؟ ماذا يفعل؟ وما الخطوة التالية؟ فالتجربة ما زالت سيئة.
وهنا يأتي دور:
UI/UX Design — تصميم واجهة وتجربة المستخدم
الفرق بينهما بسيط:
UX — User Experience
يركز على كيف تعمل التجربة.
هل الخطوات منطقية؟
هل يصل المستخدم إلى هدفه بسهولة؟
هل توجد خطوات زائدة؟
هل رسائل الخطأ واضحة؟
هل يعرف ماذا يفعل بعد ذلك؟
أما:
UI — User Interface
فيركز على كيف تبدو الواجهة.
الألوان، الخطوط، الأزرار، الأيقونات، المسافات، ترتيب العناصر، والحالات البصرية.
بمعنى مختصر:
UX = How it works
UI = How it looks
لكن التصميم الجيد لا يبدأ بالألوان.
يبدأ بسؤال:
من هو المستخدم؟ وماذا يريد أن ينجز؟
فالمستخدم الذي يدخل تطبيقًا لحجز رحلة لا يريد مشاهدة أجمل Animation…
هدفه غالبًا:
Search → Choose → Book → Pay → Confirm
ولهذا نرسم أولًا:
User Flow
أي المسار الذي سيمر به المستخدم للوصول إلى هدفه.
وكل خطوة إضافية يجب أن نسأل عنها:
هل هي ضرورية فعلًا؟
بعد فهم الرحلة ننتقل إلى:
Sketch → Wireframe → Prototype → Visual UI → Development
وهنا قاعدة مهمة جدًا:
Structure First → Style Later
لأن Wireframe سيئًا بألوان جميلة…
يبقى تجربة سيئة.
ثم يأتي دور Visual Hierarchy.
فنستخدم:
Size للحجم.
Contrast للتباين.
Spacing للمسافات.
Alignment للمحاذاة.
Typography للخطوط.
Color لتوجيه الانتباه.
الهدف ليس أن نجعل كل عنصر بارزًا.
بل أن نجعل المستخدم يعرف:
ما المهم الآن؟ وما الذي يجب أن أفعله بعده؟
ثم نحتاج إلى Design System حتى لا تصبح كل شاشة عالمًا مختلفًا.
نحدد نظامًا موحدًا لـ:
Colors — Typography — Buttons — Inputs — Cards — Icons — Spacing — States
لأن:
Consistency reduces confusion.
لكن هناك نقطة غالبًا ما تُنسى:
لا تصمم Happy Path فقط.
صمّم أيضًا للحالات الإستثنائية:
Loading
Empty State
Validation
Error
Success
Disabled
فالمستخدم لا يحكم على النظام فقط عندما يعمل كل شيء بشكل مثالي…
بل أيضًا عندما تحدث مشكلة.
بدل:
Error 504
الأفضل أن تقول للمستخدم:
تعذر إتمام العملية حاليًا.
لم يتم خصم المبلغ. حاول مرة أخرى.
لأن:
A good UX explains what happened and what to do next.
ويمكن تلخيص رحلة UI/UX هكذا:
Understand Users
↓
Define Goals
↓
Map User Flow
↓
Create Wireframes
↓
Build Prototype
↓
Design Visual UI
↓
Handle All States
↓
Test with Users
↓
Improve
والمعادلة الأهم:
User Needs + Clear Flow + Consistent UI = Better Experience
وفي النهاية، المستخدم لا يهتم بعدد الساعات التي قضيتها في التصميم…
هو يهتم بسؤال واحد:
هل استطعت إنجاز ما أريد بسهولة؟
سؤال للنقاش:
لو كان لديك تطبيق حجز يحتاج 9 خطوات لإتمام الحجز، هل تبدأ أولًا بتغيير الألوان؟
أم تبدأ بتحليل الخطوات نفسها وتقليلها؟
سؤال للبحث (:
(Wireframes & Prototypes)
ما الفرق بين Sketch وWireframe وMockup وPrototype؟ ومتى نستخدم كل واحد؟
م. طارق العمري
Software Engineer | Backend Developer
#UIUX #UIDesign #UXDesign #UserExperience #UserInterface #UserFlow #Wireframe #Prototype #DesignSystem #VisualHierarchy #ProductDesign #Usability #SoftwareEngineering #SoftwareDesign #FrontendDevelopment #SoftwareEngineer #هندسة_البرمجيات #تصميم_واجهات #تجربة_المستخدم #تصميم_البرمجيات
#020 — Architectural Patterns | الأنماط المعمارية
عندما يبدأ المشروع يكبر، تظهر أسئلة مهمة:
كيف نقسم النظام؟
كيف نفصل المسؤوليات؟
كيف نجعل التغيير أسهل؟
وكيف نقلل الترابط بين الأجزاء؟
هنا تأتي Architectural Patterns — الأنماط المعمارية.
الـPattern ليس كودًا جاهزًا، بل هو طريقة مجربة لتنظيم النظام وحل مشاكل معمارية متكررة.
ومن أشهر الأنماط:
Layered Architecture
تقسم النظام إلى طبقات واضحة مثل:
Presentation → Application → Business → Data Access → Database
مناسبة للتطبيقات التقليدية عندما نريد بنية واضحة وسهلة الفهم.
MVC — Model View Controller
يفصل بين:
Model
View
Controller
والهدف هو عدم خلط واجهة المستخدم مع منطق النظام.
Clean Architecture
تضع Business Logic في المركز، وتجعل الاعتمادات تتجه للداخل.
الفكرة المهمة:
> منطق الأعمال يجب ألا يعتمد على Framework أو Database معينة.
Hexagonal Architecture — Ports & Adapters
تعزل النظام عن التقنيات الخارجية من خلال Interfaces واضحة.
مثلًا:
PaymentPort
يمكن تنفيذه لاحقًا بواسطة:
Stripe
PayPal
بوابة دفع محلية
دون تغيير Business Logic.
Event-Driven Architecture
بدل أن تستدعي الخدمات بعضها مباشرة، تتفاعل عبر Events.
مثال:
Order Created
ثم تستجيب:
Payment Service
Notification Service
Inventory Service
Analytics Service
وهذا يقلل الترابط ويساعد على التوسع، لكنه يزيد تحديات مثل Debugging وMonitoring وConsistency.
والسؤال الذي يتكرر دائمًا:
ما أفضل Architectural Pattern؟
الإجابة الصحيحة ليست اسم Pattern معين.
لأن:
لا يوجد Pattern مناسب لكل مشروع.
قد يكون Layered هو الأنسب لمشروع بسيط، بينما مشروع آخر يحتاج Clean Architecture، وآخر يعتمد على Event-Driven، وأحيانًا نستخدم أكثر من Pattern داخل نفس النظام.
لذلك لا تختَر بناءً على الشهرة.
اختَر بناءً على:
Problem + Constraints + Context
ثم:
Right Pattern
القاعدة الأهم:
> Choose based on context, not popularity.
المعمارية الجيدة لا تجعل النظام يعمل اليوم فقط، بل تساعده أن يكون أسهل في الصيانة، الاختبار، التوسع، والتغيير مستقبلًا.
Understand → Compare → Choose → Adapt → Build
سؤال للنقاش:
لديك نظام حجز يعتمد على Payment Gateway وSMS Provider وخدمة خرائط خارجية.
أي Architectural Pattern ستستخدم حتى تستطيع تغيير هذه الخدمات مستقبلًا بأقل تأثير على Business Logic؟
المنشور القادم:
#021 — Clean Architecture
كيف نحمي Business Logic من تغيّر Frameworks وقواعد البيانات والخدمات الخارجية؟
م. طارق العمري
Software Engineer | Backend Developer
#SoftwareEngineering #ArchitecturalPatterns #SoftwareArchitecture #SystemDesign #LayeredArchitecture #MVC #CleanArchitecture #HexagonalArchitecture #EventDrivenArchitecture #BackendDevelopment #SoftwareDesign #Scalability #Maintainability #SoftwareEngineer #هندسة_البرمجيات #الأنماط_المعمارية #معمارية_البرمجيات #تصميم_الأنظمة #تطوير_البرمجيات
عندما يبدأ المشروع يكبر، تظهر أسئلة مهمة:
كيف نقسم النظام؟
كيف نفصل المسؤوليات؟
كيف نجعل التغيير أسهل؟
وكيف نقلل الترابط بين الأجزاء؟
هنا تأتي Architectural Patterns — الأنماط المعمارية.
الـPattern ليس كودًا جاهزًا، بل هو طريقة مجربة لتنظيم النظام وحل مشاكل معمارية متكررة.
ومن أشهر الأنماط:
Layered Architecture
تقسم النظام إلى طبقات واضحة مثل:
Presentation → Application → Business → Data Access → Database
مناسبة للتطبيقات التقليدية عندما نريد بنية واضحة وسهلة الفهم.
MVC — Model View Controller
يفصل بين:
Model
View
Controller
والهدف هو عدم خلط واجهة المستخدم مع منطق النظام.
Clean Architecture
تضع Business Logic في المركز، وتجعل الاعتمادات تتجه للداخل.
الفكرة المهمة:
> منطق الأعمال يجب ألا يعتمد على Framework أو Database معينة.
Hexagonal Architecture — Ports & Adapters
تعزل النظام عن التقنيات الخارجية من خلال Interfaces واضحة.
مثلًا:
PaymentPort
يمكن تنفيذه لاحقًا بواسطة:
Stripe
PayPal
بوابة دفع محلية
دون تغيير Business Logic.
Event-Driven Architecture
بدل أن تستدعي الخدمات بعضها مباشرة، تتفاعل عبر Events.
مثال:
Order Created
ثم تستجيب:
Payment Service
Notification Service
Inventory Service
Analytics Service
وهذا يقلل الترابط ويساعد على التوسع، لكنه يزيد تحديات مثل Debugging وMonitoring وConsistency.
والسؤال الذي يتكرر دائمًا:
ما أفضل Architectural Pattern؟
الإجابة الصحيحة ليست اسم Pattern معين.
لأن:
لا يوجد Pattern مناسب لكل مشروع.
قد يكون Layered هو الأنسب لمشروع بسيط، بينما مشروع آخر يحتاج Clean Architecture، وآخر يعتمد على Event-Driven، وأحيانًا نستخدم أكثر من Pattern داخل نفس النظام.
لذلك لا تختَر بناءً على الشهرة.
اختَر بناءً على:
Problem + Constraints + Context
ثم:
Right Pattern
القاعدة الأهم:
> Choose based on context, not popularity.
المعمارية الجيدة لا تجعل النظام يعمل اليوم فقط، بل تساعده أن يكون أسهل في الصيانة، الاختبار، التوسع، والتغيير مستقبلًا.
Understand → Compare → Choose → Adapt → Build
سؤال للنقاش:
لديك نظام حجز يعتمد على Payment Gateway وSMS Provider وخدمة خرائط خارجية.
أي Architectural Pattern ستستخدم حتى تستطيع تغيير هذه الخدمات مستقبلًا بأقل تأثير على Business Logic؟
المنشور القادم:
#021 — Clean Architecture
كيف نحمي Business Logic من تغيّر Frameworks وقواعد البيانات والخدمات الخارجية؟
م. طارق العمري
Software Engineer | Backend Developer
#SoftwareEngineering #ArchitecturalPatterns #SoftwareArchitecture #SystemDesign #LayeredArchitecture #MVC #CleanArchitecture #HexagonalArchitecture #EventDrivenArchitecture #BackendDevelopment #SoftwareDesign #Scalability #Maintainability #SoftwareEngineer #هندسة_البرمجيات #الأنماط_المعمارية #معمارية_البرمجيات #تصميم_الأنظمة #تطوير_البرمجيات