إدارة مشاريع البيانات الضخمة- عوامل النجاح وأساسيات العمل BigData project management success factors

كثير ما نسمع عن تطبيقات ومشاريع الـ BigData وأصبح كل من تعرفه او لا تعرفه يتكلم بمصطلحات البيانات الضخمة. سأحاول في هذا المقال البسيط إعطاء لمحة عن بعض العوامل المؤثرة في نجاح هذه المشاريع بناء على خبرتي الشخصية في مشروع انتهت مدته مؤخرا

مشاريع البيانات الضخمة ليست بسيطة، وتحتاج الى الكثير من التركيز على التفاصيل في كل مهمة يعملها المطورون- وهذا هو العامل الأهم في كل المشاريع أصلا- لكن مشكلة مشاريع البيانات الضخمة انها تعتمد على مبدأ: Distributed systems وهو بحد ذاته موضوع شبه معقّد (او غير بسيط). النقاط التالية اعتقد من الضروري الالتفات اليها وبحثها عند الشروع بأي مشروع للبيانات الضخمة:

  1. عدم تضخيم الأمور: البعض يعمد الى تضخيم حجم العمل وصعوبته وطول المدة المطلوبة للعمل- انتبه لأولئك لأن الحافز الأساسي لهم هو اما فرض كلفة أكبر للمشروع او مدة أطول واهم حافز أنهم لا تتوفر لديهم الخبرة المطلوبة لأداء العمل- وبالتالي يحاول المطوّر ان يطلب وقت أطول لإنجاز المهمة المطلوبة. يجب تعيين الكفاءات الصحيحة للمشروع والتفاوض بشدّة مع الخبراء منهم (عادة الخبراء في هذا المجال يتقاضون مبالغ عالية لتنفيذ ما هو مطلوب)
  2. الدراية والعلم بالشيء: يجب (5 خطوط تحت كلمة يجب) ان يكون مدير المشروع على دراية كاملة بالأدوات والتطبيقات المستخدمة في المشروع. الدراية التي أتكلم عنها لا تقتصر على قراءة بعض الـ blogs او صفحات من ويكيبيديا… بل تتعدى ذلك لفحص البرامج وتتبع سطور الـ source code إذا اقتضى الامر وحتى كتابة بعض البرامج للتأكد من فعالية التطبيقات والخدمات الملموسة من المشروع. بما أنى تطرقت لموضوع الأدوات والتطبيقات التي تص البيانات الضخمة، الكلمات المفتاحية التالية تجدها في غالب مشاريع البيانات الضخمة والتي يجب ان تبحث في تفاصيلها وأساليب استخدامها وفائدتها وحتى ترقّب التحديثات التي تصدرها الشركات لهذه التطبيقات:

Graph databases, data models, schema and schema-less data structures, polyglot persistence, lambda architecture, batch processing, speed processing, in-memory processing, Apache projects: Spark, Hadoop, Flink, NiFi, Avro.

Functional programming, Data frames, elasticsearch, kibana, Zeppelin, key/value database

  1. استخدام الأدوات المناسبة لادارة المشروع: ويتضمن ذلك إدارة مهام الفريق وحتى الـ source code وحفظه باستخدام أدوات مثل GiT مع الاخذ بعين الاعتبار الصلاحية المسموحة لكل من أعضاء الفريق فيما يخص الـ source code. بما ان مشاريع البيانات الضخمة تكون جديدة على الفريق يُفضّل ان تعتمد منهجية مرنة لادارة المشروع: Agile project management لأن القرارات الإدارية والتقنية قد تتغير مع مرور الوقت وبالتالي يجب كسر القواعد الرتيبة في إدارة المشروع. أيضا يجب استخدام أدوات مناسبة لمساعدة المبرمجين ومدير النظام لتحديث المخرجات بسهولة واصدار نسخة من المخرجات في فترات مجدولة مثل nightly builds فيما يلي بعض الكلمات المفتاحية لادوات إدارة المشاريع وتشغيل المخرجات DevOps

Scrum, Agile, standup meeting, ticketing system, JIRA, Git, Docker, LDAP, Jenkins, SSH, DONE DONE, refactoring, burn down, gitolite, redmine, build script.

  1. اجراء المقارنات ومقارنة القراءات Benchmarking: من الأفضل عمل الـ benchmarking بين التطبيقات المراد استخدامها قبل الشروع بالتطوير وخاصة فيما يتعلق بالـ I/O performance واستخدام الذاكرة والمعالج memory and CPU consumption والـ benchmarking يستعمل بالطبع نفس المعطيات (المدخلات) ومقارنة النتائج بين التطبيقات المستهدفة
  2. تعيين خبراء في المجال المطلوب: لا تتوقع ان يستطيع أي مبرمج ان يعمل في مشاريع البيانات الضخمة بدون خبرة في مشاريع سابقة، الخبرة في مشروع او أكثر ضروري لنجاح المشروع- الا إذا كان الهدف من المشروع هو التعلم وليس لإتمام مشروع للعملاء او أحد منتجات الشركة

حياة المبرمج (الجزء الثالث)

أخونا (او اختنا حتى لا يزعل احدهم) وصل الان بعد سبع الى ثمان سنوات من العمل الى مرحلة ممتازة من الوعي التكنولوجي و حتى الاداري، على الاقل في إدارة المهام التقنية و العلاقة مع مدير المشروع او بعض الاحيان العميل نفسه. و بعد هذه السنوات من الخبرة كان المبرمج يحرص على:

  1. محاولة عدم تكرار الاخطاء التي وقع بها في مشاريع سابقة
  2. نقل ما لديه من خبرة لزملاءه أو حتى أصدقاءه
  3. تحسين طريقة العمل، سواء طريقة كتابة الكود أو لغة البرمجة
  4. عدم تكرار العمل بنفس الطريقة و الاسلوب قدر الامكان
  5. ترك بصمة خاصة له في كل المشاريع، مثل حل مشاكل معقدة
  6. توسيع العلاقات و الشبكة الاجتماعية المحيطة به، يأتي هذا من خلال المشاركة بالندوات، المؤتمرات، الدوراتالخ

ينتقل المبرمج الان الى المرحلة الثالثة، مرحلة العلامة التجارية، بالعربي الفصيح: خلق السمعة الطيبة و تسويقها. و هذه المرحلة حساسة جداً، فالمبرمج بعد تمكنه مما يعمل بيديه تأتي سمعته الطيبة ضمنياً و لكن لا بد من تسويقها بطريقة بعيدة عن المغالاة و العرطو هناك مقولة ل Warren Buffet بما معناه انك تبني سمعتك بعشرين سنة و قد تهدمها بخمس دقائق. فالصدق في العمل و المخرجات (deliverables) الواقعية هي مفاتيح التسويق الوحيدة للمبرمج.

قد تسأل لماذا عى المبرمج أن يقوم بتسويق خبرته و أعماله، فيما يلي بعض الاسباب (افيدوني بتعليقاتكم اذا سمحتم):

  1. عرض خدمات المبرمج لأشخاص او شركات بحاجة ماسة لخبرة المبرمج و التي قد تساهم بالنهوض بهذه الشركة و بأعمالها
  2. إكتشاف مجالات اوسع من المجال الذي يعمل به
  3. إكتشاف أفكار جديدة (business ideas) و التي قد تفتح المجال للمبرمج بتطويرها على طريقته الخاصة
  4. مساعدة من يريد تكنولوجيا و رد المعروفالذي اعطته سنوات الخبرة فالمرحلة الثالثة اذا لاحظتم لا تأتي بعد حد فاصل عن المرحلة السابقة، و إنما تعتبر ممهدة للانتقال الى المراحل المستقبلية. فبعد أن اصبح اخونا senior developer سيتحتم عليه أخذ قرارات جريئةلحياته المهنية و قد تتضمن هذه القرارات تغيير على حياته المهنية كأن ينتقل الى المبيعات أو إدارة المشاريع، أو بالمقابل البقاء كشخص تكنولوجي بصبغة إدارية.