إن تدريب مطور برمجيات مبتدئ ضمن بيئة عمل تقنية، سيمثل فرصة ذهبية له قُبيل دخوله سوق العمل الحقيقي، ليصقل مهاراته التقنية والإدارية والمهنية..
لكنّ القيمة المضافة الحقيقية ستكون في اكتسابه وتبنيه لأساليب عملٍ منهجيةٍ ورشيقة في آنٍ معاً.. ومما يعزّز فُرَصَهُ في ذلك، أن تكون المؤسسة التي يخضع للتدريب فيها تنتهج ذلك النهج؛ أي نهج الإدارة الرشيقة!.
تدريب مطور برمجيات مبتدئ : سيل من المعلومات! كيف سأركّز؟
إذا أصبت بصدمة من كثرة المعلومات والتوجيهات والقواعد التي تملى عليك خلال فترة التدريب، فاطمئن لست وحدك!
كلّ مطور برمجيات لا بد قد مرّ بهذه التجربة المدهشة والمربكة، والحقيقة أنّ هذا هو الوضع الطبيعي تماماً في مجالنا التقني شديد التسارع والتمحور، الحل الأمثل أن تعتاد الأمر، ثم عليك أن تهضم كل جزء بهدوء وكثير من التطبيق والتمرين.
أما التشتّت فلك أن تتعامل معه عبر التركيز على جانبين اثنين:
1- تدريب مطور البرمجيات على الجوانب التقنية
هذا هو الطرف الأسهل نسبياً، والأوضح من المعادلة؛ أنتَ الآن تتواصل مع مديرك أو مدربك، وتأخذ منه بعض المعلومات التقنيّة..
ثمّ يطلب منك إجراء بحث معيّن، فتدرسه، وتتدرّب عليه، وتتلقّى الدعم المناسب من المدرّب عند اللزوم، كما يجيبك عن أسئلتك واستفساراتك… وهكذا..
2- تدريب مطور البرمجيات على آليات العمل الملائمة
كمطور، هذا جانب مهم جداً بالنسبة إليك، سيكسبك تميزاً حقيقياً إذا أحسنت اكتسابه..
- فكيف ستفهم آلية العمل المناسبة لمنظمتك؟
- كيف سيجري تدريبك عليها تدريجياً؟
هذا ما ينبغي لكل مطور برمجيات مبتدئ أن يحصل عليه خلال فترة التمرين في المؤسسات التقنية. وفي حال أغفلت الشركة تدريبك على هذا الجانب، واكتفت بالجانب التقني الأول، فاعلم أنك قد تكون في المكان الخاطئ، ولن تحصل على تدريب كافٍ!
يفترض أن يجري التدريب على آليات العمل الملائمة من خلال اجتماعات تُشارك بها ضمن المشاريع المختلفة، سواء أكانت لصالح تطوير منتجات الشركة أو منتجات أحد عملائها.
بالإضافة إلى بلورة رؤيتك المستقلّة لمناقشات الموظفين، والاجتماعات التي يعقدونها، مثل:
- الاجتماع الصباحي.
- اجتماع عرض المنتج (Demo).
إذ يُتوقع منك استنباط الفائدة من كل اجتماع، وتحديد الفروقات بين محاور الاجتماعين، ومعرفة السياق والإطار العام لكل اجتماع..
وبدايةً، فإنَّ تحديد الهدف من كل اجتماع، هو العنصر الأكثر أهمية لقيادة دفة الحوار فيه.
ما هي أفضل آليات العمل المتبعة في الشركات التقنية ؟
تعرف آلية العمل النموذجية في الشركات البرمجية باسم (أجايل)، وسنصطلح على تسميتها في اللغة العربية بمسمى: الإدارة الرشيقة.
ما هي أجايل ؟
إن المعايير القياسية وطرق العمل المتبعة في جميع الشركات الرائدة التي تعمل ضمن قطاعات تطوير البرمجيات، مستمدّة من أجايل (Agile) ومبادئها الناظمة.
والتي تقوم على إنشاء وتطوير البرمجيات، من خلال جهود التعاون داخل فريق عمل متعدد الوظائف (Cross-functional)، ذاتيّ التنظيم (Self-organized).
ما مستويات أجايل أو الإدارة الرشيقة ؟
لدينا عدّة مستويات يجب التركيز عليها في عملية تدريب المطورين ضمن اجايل، ألا وهي:
- الإطار الفكري Mindset
- المهارات المطلوبة Skills
- الأدوات المتاحة Tools
أولاً- الإطار الفكري لأجايل (Agile Mindset)
ويمثل هذا المستوى الأوّل طريقة التفكير. على سبيل المثال فإن أحد مبادئ أجايل ينصّ على:
” الترحيب بتغيير المتطلبات ولو في مراحل متقدمة من التطوير. فمناهج الأجايل تُسخر التّغيير لصالح الميزة التنافسية للعميل”.
المبادىء في إعلان أجايل 2001
إذن فلا بد من الترحيب بالتغييرات التي من الممكن أن تطرأ على المتطلبات، خلال أي مرحلة من مراحل العمل، حتّى وإن أتى هذا التغيير في مرحلة متقدّمة من المشروع أو التطوير البرمجي..
أي إنك إن كنت تعمل على خاصية معيّنة مثلاً، ووصلت لمرحلة متقدّمة في برمجتها وتطويرها، ثمّ قمتَ بإجراء اجتماع عرض المنتج (Demo) مع الزبون، فطلب منك إجراء تغيير معيّن، عندها يتوجب علينا كفريق الترحيب بهذا الطلب ابتداءً..
لن نشعر أنه أمرٌ خاطئ، أو خارج عن المألوف، لن ننتهج نهجاً استعلائياً مثلما نسمع من كثيرين أنّ الثقافة لديهم في الشركة تكون بقناعتهم أنّ الزبون لا يعلم ما يريده!
الزبون لا يعرف مصلحته!
من الممكن حقّاً أن ينتج طلب التغيير بسبب عدم معرفة الزبون الدقيقة لمتطلباته، لكنّ هذا أمر طبيعي جدّاً وموجود، ومن الممكن أنّ التغيير المفاجئ الذي طلبه، خطر له نتيجة عرض المنتج (الديمو) الذي اقترحتَهُ عليه.
فتبدأ الفكرة تلقائيّاً بالتبلور لديه، وبالتّالي تُغيّر أفكاره، فيطلب منك إجراء بعض التغييرات.
الزبون يعرف مايريده!!
من جهة أخرى يمكن أن يعرف الزبون تماماً ما يريده، لذلك فقد طلب منك هذا التغيير المعيّن، لأنّ عميله الذي سيستخدم هذه البرمجيّة تغيّرت متطلباته على أرض الواقع، أو تغيّرت السوق التي يستهدفها..
وهذا وارد جداً لاسيما أننا نعيش اليوم في ظلّ ظروف تجارية واقتصادية تسودها حالة من عدم اليقين، وهي ظروف شديدة الصعوبة، بالغة التعقيد، سريعة التغيُّر، بل مفاجئة!
هذه واحدة من أهم أساسيات أجايل، وأنت بصفتك مطور برمجيات مبتدئ أو تقني متدرب، ننصحك بتقبّلها وممارستها.
أما إذا لم تنجح في تبني مثل هذه الأفكار بشكل صحيح، لأنها برأيك لن تفيدك في الجانب التقني، فسيتشكل لديك رفض وربما مقاومة غير مفيدة لهذه التغيّرات..
في هذه الحالة، ستكتب الشيفرة البرمجية (الكود) بطريقة غير موفقة غالباً، وكثير من المطورين الأذكياء يصلون لمراحل متقدّمة تقنيّاً، لكنّهم لا يمتلكون الفهم الكافي للمتطلّبات من العملاء، ولطبيعة العمل بتطوير البرمجيات..
إذن تذكر:
“الجانب التقني غير كاف وحده لتشكيل مسار مطوِّرٍ ناجح!
ثانياً – المهارات المطلوبة لأجايل (Agile Skills)
هذا المستوى يحتاج للممارسة الحثيثة. على افتراض أنّني أريد عقد اجتماع لعرض المنتج على الزبون (اجتماع ديمو)، فسأجد واحداً من مبادئ أجايل الهامة يقول:
” تسليم برمجيات صالحة للاستعمال على فترات منتظمة، من أسبوعين إلى شهرين، مع استحسان المدة الزمنية الأقصر”.
إعلان أجايل 2001
أي أنك ستقدّم عرض المنتج (ديمو) للزبون، لتحصل على التغذية الراجعة منه (فيد باك) بشكل متكرّر ومنتظم.
إذا فكرت جيداً بهذا المبدأ، ستفهم الغرض الحقيقي من دورة العمل الواحدة (السبرنت) في اجايل..
فبنهاية كل دورة عمل (سبرنت)، يفترض أن يكون لديك:
- تطبيق برمجي حقيقي (سوفت وير).
- يعمل جيّداً.
- لتعرضه على الزبون.
- وتتلقى رأيه به (فيد باك).
- ثمّ ترحّب بالتغييرات المطلوبة.
لكن..
كيف سأكتب الشيفرة البرمجية (الكود) بشكل مرحلي ؟
بحيث:
- أُنهي جُزئيّة برمجية بالكامل كعضوٍ في فريق أجايل.
- وأرفعها على السيرفر.
- ثم أختبرها قبل نهاية دورة العمل البرمجي (السبرنت)، بالتعاون مع الفريق.
- لكي أستطيع تسليم الزبون جزءاً مكتملاً من المتطلبات في كل مرة، وليس تسليمه المشروع كاملاً في مرة واحدة، ليتفاجأ به ويفاجئني..
كيف سيحصل هذا الأمر؟ كيف؟ قلي كيف؟؟
حسناً، سأحتاج لمهارات إدارية وتنظيمية مناسبة، مع ملاحظة التكامل بينها وبين المهارات التقنية..
سأحدد كيف أريد كتابة الشيفرة البرمجية (الكود) بطريقة متوائمة (aligned) مع المفاهيم الرشيقة:
- انطلاقاً من تحليل احتياجات العميل (Business Needs).
- ومن طبيعة البرمجيات، سأتعلّم كيفية كتابة الشيفرة البرمجية (الكود) بطريقة عملية جيدة.
- ثم أركّز على المهارات البرمجيّة التي تهمني..
مثلاً: سأتعلّم كيف أكتب جزءاً بسيطاً من الكود وأنهيه، من خلال التركيز على قصة المستخدم (User Story) لمتطلّب واحد واضح. - بعدها سأنهي هذا الجزء وأنشره (Deploy).
ثالثاً – الأدوات المتاحة في أجايل (Agile Tools)
أمّا الأدوات وطريقة التعامل معها، فهي الأكثر سهولة في التعلم والاكتساب نسبيّاً..
بداية ستتعلّم أن تسجل تحديثاً (Update) على لوحة المعلومات العامة (Dashboard)..
وبهذا يتمكن جميع أعضاء الفريق من معرفة أنك قد أنهيت هذه المهمّة، أو أنّ قصة مستخدم (User Story) تم نقلها إلى مرحلة جديدة…
وهكذا يجري توثيق غيرها من التفاصيل.
ختاماً، إذا وصلت إلى هذه النقطة من المقال، فأغلب الظنّ أنّك مطور برمجيات مبتدئ وقد شرعتَ بالتدريب بالفعل ضمن أحد برامج تدريب مطوري البرمجيات، لا تتعجّل واستمتع بكمّ المعلومات الهائل الذي تتلقاه..
وكما أسلفنا، لا تنس التركيز على جانبين، الجانب التقني، والجانب الخاص بآليات العمل ومنهجيات التفكير الصحيحة.
والهدف أن يصبح كل مطور برمجيات، ذاتيّ التنظيم (Self-organized)، ذاتي الإدارة (Self-managed)، وهنا مربط الفرس ونقطة العلاّم التي ينبغي لكل عضو في فريق أجايل أن يسعى للوصول إليها.