خمس ممارسات بسيطة لتطوير البرمجيات في شركتك الناشئة
في غضون بضع سنوات، اكتسبت حركة تطوير البرمجيات اللينة (أي اختبار البرمجيات ثم تعديلها) انتشاراً واسعاً من خلال الترويج لمنهجية فعالة وبسيطة في آنٍ معاً. يتعدى نجاح نهج التطوير البسيط المفاهيم عالية التقنية ويعتمد إلى حدّ بعيد على أدوات وممارسات برمجية أساسية تؤثّر في العمليات اليومية لفريق البرمجيات التابع لشركتك.
سأتكلم في هذا الدليل بشكل موجز عن كلّ من هذه الأدوات والممارسات. وقد ترغب بعد قراءته في تحديد موعد للاجتماع بالمسؤول عن البرمجة في شركتك للتأكد من أنّ استراتيجية البرمجيات في شركتك الناشئة فعّالة إلى أقصى حدّ.
التحكم في الإصدار Version control
سواء كان لديك مطوّر واحد أو فريق يتألف من عشرين مطوراً، يعدّ استخدام نظام للتحكم بالإصدار أمراً بالغ الأهمية لتعزيز التعاون بين أفراد فريقك. يقوم نظام التحكم بالإصدار بـ:
- تسهيل التعاون بين مبرمجين عدة في الفريق عينه
- الحفاظ على إصدارات مختلفة من تعليمات البرمجة الخاصة بالشركة
- إتاحة العودة إلى إصدارات سابقة
- المساعدة على إدخال تغييرات تجريبية من دون إبطال إصدارات منتجك الثابتة
تتوفر خدمات كثيرة جيدة على الانترنت بأسعار معقولة للحصول على نظام تحكم في الإصدار حديث وتشغيله على غرار "جيتهاب" Github و"بيت باكت" Bitbucket.
نظام إنشاء تلقائي Automated build system
من أكبر الأخطاء التي يمكن أن يرتكبها فريق التطوير انتظار أن يطرأ تغيير كبير في البرنامج لتجهيزه للنشر. بدلاً من ذلك، يبني الفريق الذي يعمل بالنهج الليّن البرامج بانتظام ويقوم بتحديث التغييرات الصغيرة حالما تطرأ لكي يكون كلّ شيء محدّثاً عند حصول تغيير كبير. وفي هذا السياق، البناء عملية تحويل ملفات البرمجية الأساسية source code files إلى وحدة برمجية مستقلة يتمّ إطلاقها وتجهيزها لنشرها على الخادم.
يتيح وجود نظام إنشاء منتظم وتلقي لفريقك التالي:
- إنشاء إصدار كامل وخالي من الأخطاء في كل مرة ينشر فيها فريقك ميزات جديدة
- الحصول على سجل يبيّن التغيير الذي أوقف فعلاً البرنامج عند توقف هذا الأخير
- استغراق وقت أقلّ عند إطلاق المزايا الجديدة
- التمتّع بشبكة أمان تضمن عمل مكونات النظام كلها معاً بشكل صحيح قبل النشر. يتمّ الكشف عن البنى التي لا تعمل بسبب الأخطاء في أقرب وقت ممكن ولا تصل إلى مرحلة الإطلاق على الإنترنت.
حتى مع فريق صغير جداً، قد لا يتّضح أثر التغييرات المتتالية التي تطرأ قبل فترة طويلة، بدون الإصدارات المنتظمة التلقائية، ما يؤدي إلى مشاكل كبيرة مع مرور الوقت.
الدمج التلقائي المستمر Automated continuous integration
في هذه الممارسة، يدمج أعضاء فريق معيّن عملهم بشكلٍ منتظم قد يصل حتى إلى عدة مرات في اليوم الواحد. يعني ذلك وجود نظام يدمج المزايا الجديدة أو تصحيحات الأخطاء تلقائياً في المنتج. قبل أن يبلغ هذا الدمج الجمهور العام، يتمّ التحقق منه (واختباره أيضاً) عن طريق بنية تلقائية للكشف عن الأخطاء التي يتضمنها في أسرع وقت ممكن.
يشمل هذا النهج عملية الإنشاء التلقائية المذكورة أعلاه، لكنّه لا يقتصر عليها. يمتدّ الدمج التلقائي المستمرّ ليشمل إجراء الاختبارات التلقائية، وصولاً إلى إنشاء إصدار وتركيب المنتج وإجراء كامل الاختبارات عليه.
يتيح استخدام الدمج التلقائي المستمرّ لفريقك التالي:
- تخفيف مشاكل الدمج إلى حدّ كبير
- تطوير برمجيات متماسكة بسرعة أكبر
- الكشف في أقرب وقت ممكن عندما تتسبب تغييرات البرمجيات بإيقاف النظام
- التأكد من أنّ جميع جوانب عملية التطوير متوفرة لإتاحة إنشاء نسخة شغالة من منتجك كل يوم.
- الكشف عمّن تسبب بإيقاف النظام (لهذه الميزة تأثير نفسي فعال جداً يشجع المطورين في فريقك على إجراء الاختبارات اللازمة قبل إطلاق الشفرة).
لكنّ الهدف الأساسي يقضي بمساعدة المشروع بأكمله على العمل وفقاً للمبادئ البسيطة الأساسية ليتسنى لك تقديم إطلاق برامجك أبكر من المتوقع وبوتيرة أعلى. وذلك يساعدك بدوره على الاستفادة من آراء مستخدمين برامجك بشكل أكثر فعالية.
تتوفر وسائل وخدمات دمج تلقائية كثيرة اليوم لمساعدتك على اعتماد الدمج التلقائي المستمرّ، على غرار موقع "كود شيب" codeship.io أو "ترافس-سي آي" travis-ci.org.
النسخ الاحتياطية التلقائية Automated backups
يجب ألا يبخل فريقك أبداً بإجراء نسخ احتياطية كل يوم. فامتلاك نسخ احتياطية محدّثة عن ملفات منتجك وبياناته أمر بالغ الأهمية لضمان أمنها واستمراريتها. فمن المهم جداً أن تكون قادراً على استعادة نظامك في خلال أقلّ من 24 ساعة عند حصول أي عطل.
لكنّ القيام بنسخ احتياطية بشكل منتظم على العديد من خوادم الانترنت وأخذ لقطات لا نهاية لها للخادم أمرٌ ممل ومضيع لوقت فريقك.
لهذا السبب، من المهم استثمار الوقت في استخدام أدوات تساعدك على إجراء نسخ احتياطية آلية بالكامل. متى أصبح فريقك قادراً على توثيق عملية النسخ الاحتياطي اليدوي، يصبح من السهل نسبياً خرق نصوص البرمجة scripts، ليس لجدولة النسخ الاحتياطي فحسب، بل لإجراءه تلقائياً في نهاية المطاف. احرص على أن يوثق فريقك طريقة فعل ذلك وأن يجري اختبارات عليها بانتظام لأنّ البنية التحتية للبرامج تتغير باستمرار.
قد يكون إجراء نسخ احتياطية أمراً سهلاً، ولكن، بمجرد أن تبدأ القيام بالنسخ الاحتياطية، ستدرك أنّ التخزين التقليدي يكلّف ثروة. لهذا من الجيّد استخدام خدمة تخزين سحابية سعرها معقول مثل "خدمات أمازون ويب أس3" Amazon Web Services S3.
تتبّع المسألة
مع تطور منتجك وإضفاء فريقك المزايا عليه، الواحدة تلو الأخرى، سيحتاج المسؤولون عن ضمان الجودة إلى وسيلة لتتبع العيوب بفعالية وتعيين شخص من فريق التطوير لإصلاحها. قد يكون استخدام الملاحظات اللاصقة مفيداً في البداية، لكنّه لن ينفع كثيراً مع اتساع نظاق العمل.
تتمتع العديد من أنظمة التحكم بالمصدر بمزايا تتبع من دون تكلفة إضافية، بما في ذلك "غيت هاب" Github و"بيت باكت" Bitbucket.
نحاول في "ومضة" مواكبة أحدث وأفضل الممارسات في مجال التطوير البسيط وتكييفها مع منتجنا. اعتمدنا معظم الممارسات المذكورة أعلاه حتى الآن، ونعمل حالياً على استخدام الدمج المستمر في عملية التطوير. نودّ أيضاً أن نتعرف إلى حالة عملية التطوير في شركتك الناشئة، أخبرنا عنها في التعليقات!
هل أنت مبرمج؟ لديك فرصة الآن لتنضم إلى فريقنا الرائع في ومضة شرط أن تتحلى بروح المبادرة وأن تكون على استعداد للعمل بنشاط منذ البداية. سيتسنى لك العمل على مشاريع مثمرة في مجال ريادة الأعمال في المنطقة.
إن كنت مهتماً، أرسل لنا سيرتك الذاتية على joinus@wamda.com.