فكر برمجي
480 subscribers
460 photos
4 videos
70 files
196 links
#فكر_برمجي
Think_Programmatically
قناة تقنية متخصصة في البرمجة وتطوير المهارات. نوفر شروحات مبسطة، موارد مفيدة، وأفكار ملهمة لتحويل شغفك بالتقنية إلى إبداع.
Download Telegram
#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 #هندسة_البرمجيات #تصميم_واجهات #تجربة_المستخدم #تصميم_البرمجيات
#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 #هندسة_البرمجيات #الأنماط_المعمارية #معمارية_البرمجيات #تصميم_الأنظمة #تطوير_البرمجيات