Keep it simple stupid هو مبدأ يقوم على إعتبار البساطة روح أى عمل , هذا المبدأ يتواجد فى مختلف التخصصات المعرفية و بالتالى فى مجال الويب و يعتبر بالنسبة للأخير مبدأ هام من مبادىء تصميم البرامج “software design ” و قد نادى بهذا المبدأ عدد من الشخصيات المعروفة مثل :
“occam s’ razzor . و يعد أقدم من نادوا بهذا المبدأ :
. entities should not be multiplied beyond necessity
” البرت اينشتين”
. everything should be made as simple as possible, but no simpler
Antony de Saint Exupery
. Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away
و من بين كل من نادوا بة أرى فى وصف “Antony de Saint Exupery ” لهذا المبدأ أقرب ما يكون لمضمونة و هو يقول بأن ” أعلى درجة للكمال فى تصميم البرنامج تتحقق ليس عندما لا يوجد شىء يضاف و لكن عندما لا يوجد شىء يمكن استبعادة ” و هو بذلك يحدد ان ان الضروريات فقط هى التى يجب ان تضاف للعمل .
و إذا تناولنا هذا المبدأ فيما يخص الويب لوجدنا انة يوجد جانبان متضادان يسرى عليهما أو إن صح التعبير بيئتان متقابلتان يتعاملان مع مفهوم البساطة برؤية مختلفة و هما جانب المستخدم النهائى الذى يصلة التطبيق بشكلة الأخير و الجانب الاّخر هو القائم بالعمل سواء كان مصمم أو مبرمج أو ما غير ذلك , فالبنسبة للمستخدم النهائى من الهام ان يشعر بالسهولة فى تعاملة مع الموقع ..السهولة و البساطة التى تجعل محتوىالموقع يصل الية بدون عناء , و بالنسبة للجانب الاّخر وهم القائمين ببناء الموقع فمبدأ البساطة هنا يهدف لجعل بناء الموقع يتميز بعدد من الخصائص مثل أن يسهل التحكم فية و قرائتة و تطويرة من قبل أى مطور اّخر بخلاف المطور الأصلى , اى ان يكون مفردات العمل واضحة و ذات معنى للجميع مما يشكل سهولة فى تعديل و تطوير أو تصحيح الأخطاء فى البرنامج فيما بعد …
مفردات العمل على الويب متنوعة و متعددة فلكى يخرج أى موقع للنور ستجد هناك التصميم و البرمجة أو كتابة الكود و التى يندرج تحتها عدة تفريعات أخرى مثل بناء قاعدة البيانات و التحكم فى علاقة الموقع بمحركات البحث…و غير ذلك , و لكنى أحببت أن القى الضوء على بعض النقاط فيما يتعلق بالتصميم و البرمجة .
التصميم :
ما معنى ان يكون التصميم بسيط ؟
هناك أساسيات لبساطة التصميم يجمع عليها عدد كبير من الخبراء و المهتمين بالتصميم مثل :
- - أن يساعد تصميم الموقع على إظهار محتواة وهدفة بحيث يكون محتوى الموقع هو العنصر الطاغى الذى يفرض نفسة بقوة و يلفت إنتباة الزائر لة .
- -الا يتوقف المستخدم فى الموقع و لا يعرف الى اين يذهب أو كيف يتوجة لصفحة ما , يجب ان تكون خريطة الموقع واضحة و سهلة الإستخدام.
- -ان كل عنصر و كل صورة فى التصميم يكون لها وظيفة و معنى , لا تتواجد ابدا عناصر زائدة تزحم الموقع ( و لعلك تصادف فى الكثير من المواقع ازدحاماُ هائلاُ بعناصر ان تم ازالتها لفقد الموقع نصف حجمة ..و لا أدرى حتى هذة اللحظة ما سبب وضع البعض لساعة على سبيل المثال بموقعهم !! …و قس على ذلك عناصر كثيرة تقع تحت هذا البند)
لعل المشكلة فى التصميم البسيط هى ان الكثير يربط ما بين التصميم البسيط و التصميم الباهت و يفترض ان البساطة معناها ان يكون الموقع عبارة عن محتوى فقط و تصميم غير جذاب قليل الإمكانيات او غير مؤثر..و هو تصور خاطىء فكل الذى تتطلبة البساطة ان يكون التصميم سهل الإستخدام و لا يوجد بة عناصر زائدة و لكن ذلك من الممكن ان يتحقق مع وجود تصميم جذاب مبهر فى الفكرة و العرض..الحديث عن كيفية تطبيق البساطة فى التصميم حديث مطول و هو علم لة دراساتة و ما ذكرتة يعد نبذة عن أساسياتة فقط.
البرمجة :
لنأتى أولا بالصورة النهائية التى أرغب فى الوصول اليها كهدف وهو برنامج أو موقع مكتوب صممت برمجتة بطريقة بسيطة , أى من الممكن على أى مطور ان يتوصل لكيفية عمل البرنامج , تركيب البرنامج واضح و مفهوم و سهل تعديل أى جزء بدون إجراء تعديلات واسعة النطاق فى أجزاء أخرى لا علاقة لها بالنقطة المراد تعديلها….
اتباع لطرق المباشرة الواضحة فى تنفيذ الوظائف , عدم تكرار الكود و محاولة تطبيق إعادة الإستخدام , التخطيط الجيد للبرنامج , فصل كود المنطق عن التصميم ..إستخدام غرضية التوجية “OOP” بكل مميزاتها , عمل تخطيط و ملخص للعمل “api”..تبدو الطرق المتاحة لتنفيذ هذة الصورة البسيطة النقية.
أود ان القى الضوء على جانب مهم للغاية و هو الإستخدام الخاطىء لبعض النظريات و المفاهيم التى وضعت بالأساس لتطبيق مبدأ البساطة فى كتابة البرنامج , هذة النظريات و ضعت لتساعد و ضعت لتستخدم بكيفية معينة فى اطار محدد.. منها مثلا استخدام غرضية التوجية أو “OOP” لو نظرنا لمثال للغات النصية “scripting language” و هى لغة “php” لوجدنا انة من الممكن كتابة البرنامج بطريقتين إما بطريقة اجرائية “procedural way” و هى التى تعتمد على عمل الكود فى شكل وظائف ليست محكومة فى قالب واحد مغلق , أو بالطريقة الغرضية التوجية و هى التى تتميز بكيفية اعادة الاستخدام و العديد من المميزات الأخرى …و بالطبع فالطريقة الأخيرة كان لها نصيب الأسد من الإهتمام فى النسخة الأخيرة من لغة “php” لما تحققة من مميزات هائلة و لكن ما يتم التغافل عنة هو انة ليس معنى ذلك ان الطريقة الإجرائية القديمة ليس لها نطاق معين تستخدم من خلالة و تحقق فائدة ..ففى بعض الحالات التى يكون بها حجم البرنامج صغير من الممكن ان يكتب البرنامج بالطريقة الإجرائية لإنة لن يكون هناك توسع يستدعى إعادة استخدام الكود من الأساس فالأسرع و الأبسط للتناول هنا هو ذلك الإختيار و ليسالإختيار الاخر الذى يقع فى دائرة الضوء الاّن وهو غرضية التوجية
أيضا نقطة أخرى و هو اختيار هيكل العمل للبرنامج أو “framework”…تبرز للأمام بعض الهياكل المشهورة القوية التى تتميز بضخامة البناء نوعا ما لتقليل الجهد المبذول من الطور فى كتابة الكود فيتولى الهيكل الجزء الأكبر من البرمجة و يترك للمطور استخدام طرق مختصرة بواسطة الهيكل لتنفيذ الخطوات..هذة النوعية من الهياكل تقدم التبسيط فى كتابة الكود بتقليل عمل المطور نفسة و بلا شك فهى ذات نفع كبير لطبيعة البرامج التى تتميز بكبر الحجم و تنوع الوظائف فمن خلال هذة الهياكل من الممكن تنفيذ مثل هذة البرامج فى وقت قليل نسبيا و بجهد قليل و لكن…..كما توفر هذة الهياكل الوقت بتقديم الوظائف الجاهزة فعلى الناحية الأخرى لن يكون الأمر كذلك اذا ما أحببت الخروج بشكل أو بأّخر عن نمط عمل الهيكل أو تناولة لعمل الوظائف , ففى هذة الحالة ستضطر للدخول فى بناء الهيكل لتعديلة وفقا لمتطلباتك و هو ما سيأخذ منك الوقت و الجهد لفهم تفاصيل عمل الهيكل ثم تعديلة بعد ذلك و هو مايثبت انة حتى تلك الهياكل المصممة لتقليل جهد المطور لن تستطيع ان توفر عليك بشكل كامل فلن يقوم بتطوير الموقع الا انت…كل ذلك مقبول ان كان حجم البرنامج يستدعى هيكل كبير..فما بالك فيمن يستخدم تلك الهياكل فى برامج صغيرة ! فلكى تعدل وظيفة ما ستبذل مجهود ووقت اكبر بكتير جدا مما كان البرنامج البسيط يستدعى ..و لعل ذلك يجعلنا نقول ان لكل مناخ و متطلبات عمل اختيار يعتمد على دراسة لتبسيط العمل على المطور.
إن صناعة البساطة فى التصميم او كتابة البرنامج ليست سهلة بل هى معقدة , بل لعل السهل هو أن يكون البرنامج او التصميم معقدا و متشابك التركيب لانة لن يصاحبة الجهد المبذول فى تخطيط العمل و وضع تصور لكيفية تطبيق البساطة علية …البساطة مبدأ و منهجية عمل تحتاج للتخطيط و الدراسة الجيدة قبل البدء.