بعد ثلاث سنوات من الانقطاع، عدت لتدريس مادة "هندسة البرمجيات المتقدمة" في مرحلة الماجستير. تزامنت عودتي بالصدفة مع صدور النسخة 2.0 beta - قبل أسبوع - من أفضل كتاب تم تأليفه في هندسة البرمجيات بلا منازع وهو "هندسة البرمجيات كخدمات سحابية" saasbook.info. لماذا أفضل كتاب؟
هذا الكتاب - وهو من تأليف دكتورين عظيمين من جامعة بيركلي العريقة - يبتعد كثيرا عن التنظير الممل في هندسة البرمجيات وينزل إلى الواقع الحقيقي على الأرض في توازن رائع بين الجوانب الإدارية (agile, user stories, ... etc) والجوانب الفنية (SaaS, TDD, BDD, Microservices & SOA, ... etc)
يستعرض المؤلفين أحدث المنهجيات الرشيقة agile لتطوير البرمجيات كخدمات سحابية والتي خرجت من رحم عمالقة صناعة البرمجيات وخصوصا في وادي السيلكون دون أن ينسوا أهمية المنهجيات التقليدية في العديد من القطاعات خصوصا الطبية والعسكرية.
بالمقابل يغوص المؤلفين تقنيا وبعمق في لغتي البرمجة Ruby & Javascript وأطر العمل Rails & jQuery شارحين مختلف الخصائص التقنية لهما وتأثيرها على عملية تطوير المنتج البرمجي وذلك لإعطاء القارئ/الطالب المنهجية المناسبة التي يجب عليه استخدامها لاختيار اللغة وإطار العمل المناسبين لمشروعه
تحدث المؤلفان في مقدمة الكتاب بكل وضوح عن التسارع الرهيب في تقنيات تطوير البرمجيات وصعوبة اختيار اللغة المناسبة (python vs. ruby vs. javascript vs. java vs. ...) واطار العمل المناسب للكتاب وأنهما تغلبا على المشكلة بشرح كيفية ومنهجية الاختيار بطريقة عملية وترك الفرصة بعدها للطالب
حتى عندما تحدث المؤلفان عن المنهجيات الرشيقة لادارة البرمجيات، كان ذلك بطريقة عملية مستخدمين مشروعا متكاملا (يمتد من أول الكتاب إلى نهايته) مع كافة الأدوات سواء لادارة متطلبات البرمجة user stories/requirements أو تصميم الواجهات وغيرها
يغطي الكتاب كافة المواضيع الحديثة التي تتردد على مسامعنا يوميا عند الحديث عن تطوير البرمجيات مثل TDD, DevOps, Micro Services, Cloud Computing, Mobile development, UI/UX, Refactoring مع أمثلة عملية واضحة وربط جميل بين هذه المواضيع جميعها ضمن منهجية متكاملة لتطوير وهندسة البرمجيات
أخيرا، هناك مادة دراسية (course) متكاملة بجزئين ومسجلة من قبل مؤلفي الكتاب وموجودة في موقع edx courses.edx.org تغطيان كامل الكتاب ولكن احذر فالكتاب (والمادة) دسم جدا جدا جدا ومليء بالمعلومات في مجالات متعددة وسيتطلب منك جهد عملي كبير 😅 وبالتأكيد تحتاج خلفية برمجية جيدة
جاري تحميل الاقتراحات...