عن تأثير العمارة المنسي على تطوير وتصميم البرمجيات
كيف أثر شخص واحد على أسس تطوير البرمجيات المعاصرة
👋🏼 مرحباً بكم في نشرة جديدة من بريد.
نتفاعل كل يوم مع عشرات أو ربما مئات التطبيقات. هواتف محمولة وكمبيوترات، مواقع وأجهزة ألعاب. تطبيقات بنكية وتطبيقات تسلية. تطبيقات يعتمد عليها عملنا وتطبيقات تعتمد عليها تسليتنا وتطبيقات تكشف حاجة لم نكن نعرف عنها.
لابد لنا أمام كل هذا الكم من التطبيقات والواجهات أن نتسائل: ما الذي يجعل التصميم عظيماً؟ هل هو توازن الألوان والأشكال؟ كيف تنجح بعض التطبيقات في إدخال البهجة لحياتنا وتنجح أخرى برفع ضغط دمنا إلى أعلى مستوياته؟
مر تصميم التطبيقات والبرمجيات بكثير من المراحل التي حاولت الإجابة على هذه الأسئلة وتداخلت مع بعضها في مجال العمل. من أسلوب Agile للتطوير إلى الأسلوب الرشيق Lean للتصميم والتطوير إلى Jobs to be done التي تحدثت عنها سابقاً وغير ذلك الكثير من الأساليب التي لانزال نراها لليوم. هل المصمم و المطور إنسان واحد؟ ما الفرق بين الفرق الصغيرة و الكبيرة؟ كيف تؤثر أساليب العمل على الناتج النهائي؟ كلها تحاول إيجاد أسلوب عمل يوازن بين مهارات البشر المختلفة من تخطيط وتصميم وتطوير واحتياجات الناس واحتياجات العمل والكثير من العوامل الأخرى.
قبل كل ذلك، وقبل مجال تصميم تجربة المستخدم و تصميم التفاعل وحتى تصميم الأنظمة كما نعرفه اليوم، كان لمجال (أو شخص محدد من هذا المجال) أثر كبير على عالم البرمجة والتصميم وكيف يفكر أغلب العاملين في هذا المجال اليوم.
إنه “العمارة Architecture”، وشخصنا هو “كريستوفر أليكساندر Christopher Alexander”
كان كريستوفر ألكسندر (1936-2022) شخصية غزيرة الإنتاج و مؤثرة في مجالات التخطيط الحضري والعمارة وعلوم الكمبيوتر. ولد في المملكة المتحدة ودرس الرياضيات و العمارة.
في الستينيات ، نشر كريستوفر ورقة (تحولت لكتاب لاحقاً) بعنوان "المدينة ليست شجرة A City is Not a Tree"، والذي كان نقداً لبعض ممارسات تخطيط المدن التي اعتمدت على التصميم الشمولي. جادل أليكساندر بأن هذه الأساليب كانت جامدة وفشلت في مراعاة تعقيد وتنوع المجتمعات البشرية. واقترح بدلاً من ذلك نهجًا أكثر عضوية، ينطلق من التركيز على احتياجات الأفراد والمجتمعات.
جوهر أفكار كريستوفر أليكساندر في العمارة هي تركيزه على احتياجات الناس وجعلهم مصدر إلهام العمارة. هذه الفكرة - مع بديهيتها - كانت ثورية في عالم العمارة. من المهم الإشارة هنا أن عمل كريستوفر لم يكن قائماً على الآراء الشخصية، بل اعتمد منجهاً تجريبياً يستعير من الكثير من المجالات كالرياضيات وعلوم الكمبيوتر.
مهتم/ـة باستشارة تقنية مجانية؟ لنتحدث :)
وصلت هذه الأفكار لقمتها عندما نشر كريستوفر عام 1977 كتاباً بعنوان A Pattern Language أو لغة الأنماط بالتعاون مع كل من موراي سيلفرسين Murray Silversein و سارة إيشيكاوا Sara Ishikawa. فصّل كريستوفر في هذا الكتاب الضخم نهجه، و هو الكتاب الذي أعطى كريستوفر مكانته الاستثنائية في عالم البرمجة والتصميم و جعل رياديي وادي السيليكون في الولايات المتحدة مستعدين لدفع أي مبلغ من المال مقابل عشاء معه. وسّع أليكساندر طرحه لفكرة الأنماط فلسفياً تحت كتاب لاحق بعنوان The Timeless Way of Building.
الكتاب سهل ممتنع. يمكن قراءة هذا الكتاب بأي شكل نريده. ومع أنه من الكتب السهلة القراءة نسبياً إلا أنه أتى من دراسة عميقة جداً لكل أنماط الحياة الحضرية وفصّل في كل فقرة هذه الأنماط، 253 نمطاً، دليلها العلمي وكيفية استخدامها مع الأمثلة و الصور.
الفكرة الرئيسة هنا هي اقتراحه أنه بدلاً من وجود خطة واحدة متجانسة لهيكل معين، يجب أن نختار بدلاً من ذلك "لغة مفتوحة" يمكن تكييفها بسهولة مع السياقات المختلفة. يمكن فهم “لغة” هنا على أنها دليل.
ما معنى هذا؟ باختصار، يعني أنه بدلاً من التوصل إلى حل موحّد أو "مقاس يناسب الجميع"، يجب علينا مراعاة احتياجات الأفراد و تصميم وحدات معيارية منفصلة يمكن استخدامها لإنشاء حل كامل . يعني القيام بذلك خلق "لغة" من نوع ما، لغة تسمح ببناء تصاميم (معمارية في حالة كريستوفر) دون الحاجة لإعادة اختراع العجلة كل مرة وبأسلوب مدروس مثبت.
تصف هذه الأنماط أموراً مثل النوافذ، ما العدد الأمثل لطوابق بناء ما وماهو حجم المساحة الخضراء المثالي أمامه؟ نحتاج عدداً من الأنماط لأي مشروع، ويمكننا تعريف روح المشروع إن صح التعبير عبر مجموعة من الأنماط التي يمكن استخدامها لهذا المشروع أو غيره.
التأثير على هندسة البرمجيات
بعيد ذلك ، أثرت الفكرة على كل من إريك غاما Erich Gamma و جون فليسيديس John Vlissides و رالف جونسون Ralph Johnson و ريتشارد هيلم Richard Helm عند نشرهم عام 1994 لكتاب Design Patterns: Elements of Reusable Object-Oriented Software. استخدمت فكرة الأنماط (مستوحاة أيضاً من كريستوفر) مسبقاً من قبل مطورين مثل كينت بيك Kent Beck و وارد كننيغهام Ward Cunningham عام 1987 لكن الأنماط لم تلق الانتشار الشعبي إلا بعد نشر الكتاب.
استعار الكتاب فكرة الأنماط و طبقها على البرمجة الشيئية التوجه Object Oriented Programming. قدم الكتاب 23 نمطاً لحل مشاكل مختلفة في تطوير البرمجيات الشيئية. تحول الكتاب بسرعة لمصدر رئيسي لكثير من المبرمجين وحقق الكثير من المبيعات.
واحد من هذه الأنماط على سبيل المثال هو نمط المراقب Observer Pattern، لنتخيل اشتراكنا بمجلة أو جريدة. فكرة الاشتراك تعني أننا لسنا بحاجة لزيارة المتجر و السؤال عن العدد الجديد. بدلاً من ذلك يمكن للناشر أن يرسل لنا عدداً جديداً عند نشره مباشرة. يحتفظ الناشر بنسخة من المشتركين ويعرف المجلات التي يريدوا الاشتراك بها. يمكن للمشتركين إلغاء اشتراكهم للتوقف. كتابة النص البرمجي وفق Observer Pattern يتيح تحقيق هذا السيناريو ومايشابهه عندما يتطلب المشروع علاقة واحد- لعدة one-to-many.
تطور هذا أكثر عندما عكس بيان البرمجة أجايل Agile Manifesto عام 2001 (والذي أصبح عصب تطوير البرمجيات المعاصر) أفكار كريستوفر. ينطلق البيان من مجموعة من المبادئ لتطوير البرمجيات التي تروج للتعاون بين الفرق والتأقلم السريع و المرونة. لم يغب عن البيان التأكيد على أهمية تحديد الأنماط المتكررة في العمليات البرمجية وتحويلها لوحدات يمكن استعمالها باستمرار ويمكن تغييرها بسرعة حسب الحاجة. مبادئ مستوحاة بالكامل من أفكار كريستوفر.
لمن يحب التوسع، أعطى كريستوفر محاضرة عام 1996 لمجموعة من المطورين والتنفيذيين في وادي السيليكون يطرح فيها أفكار وملاحظاته على جوهر عملية البرمجة كما رآها في ذلك الوقت.
التأثير على تصميم تجربة المستخدم
تأثر كثير من المصممين بعمل كريستوفر كما تأثر المطورون. كان هذا تتابعاً لفكرة الأنماط و أسلوب الرشاقة Agile في العمل. لكن مؤخراً، عادت أعمال كريستوفر للظهور عبر كتاب Notes on the Synthesis of Form، وهو كتاب أقدم له يعود لـ 1964. يقدم الكتاب إطاراً نظرياً للتصميم، مدعوماً بكثير من الرياضيات، و ينطلق من أهمية الاعتماد على احتياجات الإنسان. كانت هنا أحد البذور الأولى لكتابه اللاحق الذي ذكرته سابقاً. يعود هذا الكتاب اليوم وبقوة بين المصممين وخصوصاً مصممي تجربة المستخدم.
وفقاً لكريستوفر، أي تصميم يحاول إيجاد “المناسبة Fit” بين “الشكل Form” و “السياق Context”. أغلب الأمثلة المذكورة في الكتاب لأغراض أشهرها “إبريق الشاي”، والذي سأتحدث عنه بتبسيط شديد.
نهدف عبر تصميم “شكل Form” الإبريق أن نصل لنتيجة يمكن عبرها تسخين الماء عبره وصبّه “السياق Context”. الطريقة الوحيدة لمعرفة أن تصميمنا ناجح هو أن نصل لنتيجة يتحقق فيها التناسب بين الشكل و السيّاق.
يلعب السياق الدور الأكبر في أي تصميم، وهو الأعقد. مكان الإبريق هل هو المطبخ؟ ماذا لو استخدم خارج المطبخ؟ هل سيؤثر ذلك على وظيفته؟ كيف؟
لا يمكننا التفكير بنجاح تصميمنا إلا عندما تتحقق المناسبة Fit بين السياق Contex و الشكل Form. يختلف هذا وفقاً لتعقيد المشكلة التصميمية التي نتعامل معها.
الكتاب معقد نوعاً ما، وهو يحاول الإجابة على الكثير من الأسئلة النظرية للتعامل مع الأنظمة المعقدة Complex System سواء أكانت ستطبق في عالم البناء أو غيره. للمصمم راين سنجر Ryan Singer (من Basecamp سابقاً) فيديو مميز يقدم فيه أفكار الكتاب بسلاسة بالإضافة لأسلوبه الخاص في تطوير البرمجيات اعتماداً على أفكار الكتاب.
يعود أسلوب التفكير هذا كما ذكرت سابقاً بقوة إلى عالم التصميم الرقمي اليوم بشكل يتجاوز أساليب العمل. لعل السبب الرئيسي وراء هذا هو تعقيد المنتجات التي يتعامل معها المصممون و المطورون والتي قد تتجاوز العالم الرقمي نفسه. تحديات كثيرة مثل تصميم تطبيقات النماذج اللغوية الضخمة LLMs في الذكاء الصنعي وتعلّم الآلة أو إنترنت الأشياء، قد نجد لها حلولاً في أفكار كريستوفر. أو قد يكون الزمن قد حان لتفكير مختلف كلياً لتصميم وتطوير البرمجيات.
كان هذا عريضاً سريعاً جداً لأفكار كريستوفر أليكساندر وتأثيرها الجوهري في تطوير وتصميم البرمجيات والتكنولوجيا عموماً. أفكار أليكساندر كثيرة و التوسع بها يتطلب الكثير و الكثير من الكتابة التي قد أقوم بها لاحقاً. أتمنى أن تكون مفيدة لكم خصوصاً لمن يريد التوسع بها لاحقاً.
شكراً 😊
الفكرة رائعة، لكن تصميم وبناء منتج أو تطبيق، والاستمرار بتطويره وتحديثه لفترة طويلة، قد تبدو شيء طويل وممل، كما أن الأوضاع الحالية تتغير ولا تستمر بشكلها الحالي.
مثل الشبكات الاجتماعية، كانت البداية مع hi5 و myspace وغيرهم، وصولاً للقمة مع فيسبوك وتويتر، ثم مع مشاركة الفيديوهات القصيرة جداً من سنابشات وفيديوهات الريلز عند فيسبوك وإنستغرام، ثم مجيء التيك توك.