البرمجيات
تطوير برمجيات مبنيّ للسنة الثانية.
تطبيقات ويب ومنصات داخلية وواجهات برمجية. إخراج الإصدار الأول نادراً ما يكون الجزء الصعب. الصعب أن يبقى النظام آمن التغيير بعد أن يمضي من بناه.
- البرمجيات المخصصة
- أنظمة المؤسسات
- منصات SaaS
- تطبيقات الويب
- الواجهات البرمجية والتكامل
- التحديث
لماذا تتآكل الأنظمة
لا شيء يفشل يوم إطلاقه.
الأنظمة تفشل ببطء. سنة من التنازلات التي تبدو معقولة، كلٌّ منها مبرَّر وحده، إلى أن يصبح الفريق متحفّظاً تجاه الشيفرة ويستغرق تغيير صغير أسبوعين. هذه أكثرها ضرراً، وما نفعله حيال كلٍّ منها.
لم يكتب أحد السبب
المنطق يعيش في محادثة، وصاحبه غادر. نحتفظ بسجلات قرارات: الخيار المُتخذ، والخيارات المرفوضة، وتكلفة كلٍّ منها، والرأي المخالف إن وُجد.
الاختبارات تغطّي المسارات السهلة فقط
نسبة التغطية لا تكاد تقول شيئاً. المهم هل الوصلات ومسارات الفشل مختبَرة، لأنها ما يكسره التغيير وما لا يفحصه أحد يدوياً.
الأنواع تتوقف عند الحدود
تحقّق عند الطرف وأنواع واضحة في كل الطريق. حمولة غير مفحوصة من طرف ثالث هي الطريقة التي يتحوّل بها خطأ صغير إلى مشكلة بيانات تكتشفها بعد ستة أسابيع.
البيئة شخص
إن كان مهندس واحد هو الوحيد القادر على النشر، فهذه ليست عملية نشر. التهيئة مكتوبة بسكربت، والبيئات قابلة لإعادة الإنشاء، والصلاحيات تُمنح عبر شيء قابل للتدقيق لا عبر الذاكرة.
لا مالك للنظام
النظام بلا مشغّل مسمّى ينجرف. الاعتماديات تخرج من الدعم، والشهادات تنتهي يوم أحد، والتنبيهات تُكتَم لأن لا أحد يعرف أيّها مهم.
النطاق
ما الذي يشمله العمل.
معظم المشاريع واحد من هذه مع جزء من غيره. وسنخبرك أيّ الأجزاء لا تحتاجها مشكلتك.
البرمجيات المخصصة
تطبيقات تُصاغ حول طريقة إنجاز العمل فعلاً لا حول ما جعله قالب جاهز مريحاً. غالباً لتحلّ محل عملية تقوم على جداول بيانات وشخص واحد صبور جداً.
أنظمة المؤسسات
الحوكمة وقابلية التدقيق والتحكم بالصلاحيات وإدارة التغيير كمدخلات تصميم. إضافتها بعد مراجعة أمنية هي الطريق المكلف إلى الوجهة نفسها.
منصات SaaS
تعدّد المستأجرين والفوترة والتهيئة ومؤشرات التشغيل التي يحتاجها المنتج قبل أن يصبح لديه عملاء يمكن أن يخسرهم. وتعدّد المستأجرين تحديداً يكاد يستحيل إضافته لاحقاً.
تطبيقات الويب
أنظمة لها مستخدمون يسجّلون الدخول وبيانات تتغيّر. هذا هو الجانب الذي تكون فيه الصحّة أهم من التركيب البصري، وحيث تكون الحالة هي ما يجب تصميمه فعلاً.
الواجهات البرمجية والتكامل
عقود وإصدارات وتوثيق مبنية ليعمل عليها الفريق التالي دون قراءة شيفرتك، وبحيث لا يكسر تغيير في طرف الطرف الآخر بصمت.
التحديث
تفكيك نظام لا يرغب أحد في لمسه، على مراحل، وهو يعمل. تفصيل ذلك أدناه.
التسليم
ما تحصل عليه إلى جانب البرمجية.
الشيفرة هي الجزء الذي يتوقعه الجميع. وهذه هي الأجزاء التي تحدّد ما إذا كان الفريق التالي يستطيع فعل شيء بها، وتُكتب أثناء العمل لا تُجمَّع في الأسبوع الأخير.
سجلات القرارات
كل قرار معماري ببدائله وتكاليفه ومخاطره والرأي المخالف. ليُعاد النظر في الخيار لاحقاً بشروطه هو بدل استنتاجه عكسياً من الشيفرة.
دليل تشغيل
كيف يُنشَر، وكيف يُتراجَع عنه، وما معنى كل تنبيه، ومن يُتصل به، وما الذي يُفعل في الثالثة فجراً حين يقع ما لم يخطّط له أحد.
مجموعة اختبارات ذات معنى
اختبارات عند الحدود ومسارات الفشل، يستطيع أي شخص لديك تشغيلها، وسريعة بما يكفي ليشغّلها الناس فعلاً.
بيئات قابلة لإعادة الإنشاء
تهيئة مكتوبة بسكربت تُشغّل مهندساً جديداً بالطريقة نفسها في كل مرة، بدل صفحة توثيق كانت دقيقة ذات مرة.
خريطة صلاحيات
ما الموجود، ومن يستطيع الوصول إليه، وعبر ماذا. مفيدة في اليوم الأول وضرورية يوم يغادر أحدهم.
الشيفرة والحقوق لك
تملك الشيفرة وتعريفات البنية التحتية منذ أول التزام. لا شيء تشتريه في النهاية ولا مكوّن تحتاج إذننا لتغييره.
التحديث
تسلّم نظام بناه شخص آخر.
إعادة كتابة تصل بعد سنتين وتُغفل السلوك الذي كان مهماً فعلاً هي أغلى طريقة لحلّ هذه المشكلة. نحن نفكّك النظام على مراحل وهو يعمل.
اقرأه قبل أن تلمسه
بما في ذلك الأجزاء التي تبدو خاطئة. الشيفرة الغريبة غالباً هي السجل الوحيد لقاعدة احتاجها أحدهم يوماً، وحذفها هو ما يُعيد متطلَّباً عمره ثلاث سنوات على هيئة عُطل.
وصِّف السلوك
اختبارات تُكتب مقابل ما يفعله النظام اليوم لا ما يدّعيه التوثيق. تصبح تلك هي العقد الذي على البديل الوفاء به، والطريقة الصادقة الوحيدة لمعرفة ما إذا كان الجديد مكافئاً.
خنقه لا استبداله
الوظائف الجديدة توضع بجانب النظام القديم خلف حدّ فاصل، وتنتقل حركة الاستخدام قطعةً قطعة. كل خطوة قابلة للتراجع وكل خطوة تُطلَق.
اترك الجزء الأخطر للنهاية
حين تصل إليه تكون قد فهمت النظام جيداً وأصبحت الأجزاء المحيطة مُثبتة. البدء بالمكوّن الأكثر إخافة هو ما يُعطّل المشاريع في الشهر الثالث.
شغّل الاثنين حتى يصبح أحدهما مملاً
يبقى المسار القديم متاحاً حتى يكون الجديد عادياً لفترة كافية ليُوثق به. الإيقاف قرار يُتخذ على دليل لا تاريخ في خطة.
التنفيذ
كيف يسير المشروع.
الشكل نفسه في كل مرة، والتفاصيل تحدّدها نتائج المرحلة الأولى.
الاستكشاف
ما هو العمل فعلاً، ومن يؤديه اليوم، وأين يتعثّر، وما الذي يجب أن يكون صحيحاً ليستحق هذا البناء.
المعمارية
الحدود ونموذج البيانات ونقاط التكامل، والقرارات مكتوبة بتكاليفها ومخاطرها قبل أن يكتب أحد شيفرة تعتمد عليها.
البناء
شرائح رأسية تصل إلى الإنتاج، لا طبقات تُدمَج في النهاية. ترى برمجية عاملة مبكراً وتصل المفاجآت وهي ما تزال رخيصة.
التقسية
الحِمل والفشل والصلاحيات والمسارات التي لا يختبرها أحد يدوياً. ومعها دليل التشغيل، يكتبه من سيكون على الطرف الآخر منه.
التشغيل
المراقبة وترقية الاعتماديات والاستجابة للأعطال والصيانة غير اللامعة التي تُبقي النظام قابلاً للتغيير. نبقى عليه.
أسئلة
الأسئلة التي تستحق أن تُطرح أولاً.
هل يمكنكم العمل مع فريقنا الحالي؟
عادةً يكون ذلك أفضل من العمل حولهم. مهندسوك يعرفون عن العمل أشياء غير مكتوبة في أي مكان، والنظام الذي يُبنى دون تلك المعرفة يميل إلى أن يكون صحيحاً وغير مفيد. عملياً يعني ذلك مراجعة مشتركة ومعايير مشتركة ونقل سياق مقصود في الاتجاهين، لا تسليماً في النهاية.
ماذا لو كانت شيفرتنا في حالة سيئة؟
معظمها كذلك، ونادراً ما يكون ذلك خطأ شخص بعينه. السؤال الأول ليس كيف نُنظّفها بل أي جزء منها يكلّفك شيئاً فعلاً، لأن كثيراً من الشيفرة القبيحة مستقرة ورخيصة التجاهل ولا تستحق مخاطرة لمسها. نحن نوصّف قبل أن نغيّر.
هل تستخدمون منظومتنا أم منظومتكم؟
منظومتكم، ما لم يوجد سبب يصمد حين يُكتب. النظام الذي لا يستطيع فريقك صيانته عبء مهما كانت التقنية جيدة. وحين نوصي بتغيير، تأتي التوصية بتكلفتها ومخاطرها وما الذي ستتنازل عنه، والقرار لك.
من يملك الشيفرة؟
أنت، منذ أول التزام. الشيفرة وتعريفات البنية التحتية والتوثيق في مستودعاتك وتحت حساباتك. لا شيء تشتريه في النهاية ولا مكوّن تحتاج إذننا لتغييره.
ماذا يحدث إن افترقت طرقنا؟
يبقى لديك نظام يستطيع غيرنا متابعته، وهذا هو الغرض من سجلات القرارات ودليل التشغيل والتهيئة القابلة لإعادة الإنشاء. نفضّل أن نبقى لأن العمل جيد لا لأن المغادرة صعبة.
سعر ثابت أم بالوقت والجهد؟
الاثنان موجودان والاثنان يفشلان بطرق متوقعة: السعر الثابت على نطاق غامض يشتري لك عملية طلبات تغيير بدل برمجية، والوقت المفتوح على هدف غير واضح يشتري لك عادة. نحدّد نطاق مرحلة أولى بدقة تكفي لتسعيرها بصدق، وتقدير ما يليها لا يساوي شيئاً إلا لأن تلك المرحلة حدثت.
أخبرنا بما تحاول بناءه.
أو بما تحاول الخروج منه. صِف النظام والقيد الذي عليه أن يعمل ضمنه، وسيكون على المكالمة مهندس.
info@eorbitt.com · نردّ خلال يوم عمل واحد.