السلام عليكم ورحمة الله
بفضل الله هذا هو العام السادس للإجابة على سؤال ماهو التطور الطبيعي للمبرمج والذي طرحته عام 2011.
عام 2016 كان مثل سابقه فيه توجه أكثر للإدارة مع اﻹستمرار في تطوير البرامج والإشراف على بعضها، مع زيادة التركيز على تسويق بعض منتجاتنا.
كان في هذا العام تحديات إدارية من حيث التوفيق بين تقليل أو المحافظة على تكلفة تطوير البرامج ودعمها للزبائن وبين زيادة دخل الموظفين أو على اﻷقل المحافظة عليها وعلى باقي المنصرفات المهمة والتي تصب في مصلحة العمل واﻹنتاج. فكلما زادت المنصرفات على إنتاج البرامج كلما زاد اﻹنتاج وتحسنت نوعيته. والعمل على تطويرالبرامج يحتاج لاستثمار كبير: فإبتداءً من مرتبات المبرمجين الكبيرة – والتي هي اﻷعلى مقارنة بباقي الوظائف والتخصصات – وإنتهاءً بشراء أجهزة حاسوب ذات مواصفات جيدة، ومروراً بالتدريب والذي يحتاج إليه كل من يعمل في مجال تقنية المعلومات بصورة دائمة.
من التحديات في عام 2016 أيضاً هو زيادة فرصة ترك المبرمجية للعمل معنا والتوجه إلى شركات أكبر سواءً داخل البلد أو خارجه، وذلك بعد اكتساب خبرة كبيرة، ففي حال لم نستطع الوفاء بدخل يكفي خبرتهم هذه فبالتأكيد سوف يبحوثون عن وظائف ذات دخل أعلى خصوصاً عندما يتقدمون في العمر وتصبح لديهم مهام اجتماعية أعلى من السابق. المرتب ليس هو الشيء الوحيد الذي يجعل المبرمج يرضى عن الوظيفة، فإستمرار التعلم والخبرة هي مهمة أيضاً، كذلك بيئة العمل وطريقة تعامل باقي أفراد الفريق، وتعامل اﻹدارة. لكن من الصعب جداً المحافظة على العمل في أشياء جديدة ومثيرة، حيث أن المشروعات القديمة تستمر لفترة طويلة فيمل منها المبرمج وتصبح حياته العملية رتيبة وتقل معها نسبة زيادة تعلم الجديد. وقد مررت شخصياً بهذه المشاكل بعد مرور خمس أعوام مثلاً في العمل في نفس المؤسسة، وكُنت أتوق دائماً للتغيير والتحديات المثيرة. لذلك لا ألوم من يفكر في ترك الوظيفة معنا بسبب الرتابة والبحث عن الجديد. كذلك لا أنسى أنني ممن لا اشجع الناس على العمل في الوظيفة لفترة طويلة، لكن طبعاً تختلف تطلعات البشر وكل شخص يرى العالم بمنظار مختلف تماماً عن اﻵخر.
ذهبت إلى الجامعة في هذا العام بعد إنقطاع طويل زاد عن العشرة أعوام، حيث كُنت أتابع مشروعات التخرج في السابق، لكن هذه المرة ذهبت للبحث عن خريجين جدد أقوم بتدريبهم واختبارهم للعمل معنا – حيث لا بد أن يوجد في أي مؤسسة تقنية أن تكون لديهم اشخاص جديد ودماء حارة تستفيد من التدريب وتكون بديلاً حاضراً في حال ترك أحد الموظفون العمل-. وقد وجدت أن تدريب شخص جديد على التقنيات التي نستخدمها هي أفضل بمراحل من البحث عن مبرمج قديم ثم إقناعه باستخدام التقنيات والمدرسة التي ننتهجها في تطوير البرامج. حيث أن الخريج الجديد أولاً ليس لديه ما يخسره وله مدخل ممتاز وهو مدخل التدريب، فليس هُناك أي إلتزام لنا من ناحية تعيينه وهو لا يترك وظيفة كان يعمل فيها، كذلك فهو لا يتوقع مرتب عالي، لذلك ههذه أنسب طريقة للتوظيف : وهي تعيين مبرمجين جدد في شركة برمجية ناشئة.
بعد ذهابي للجامعة في بداية عام جديد لم أجد أحد من الخريجين الجدد، لكن اقترح علي بعض اﻷساتذة أن أقوم بطرح مشروعات تخرج واﻹشراف عليها، وبهذه الطريقة أكون اكثر قرباً للخريجين لفترة تمتد قرابة العام، فقمت بذلك واقترحت مشروع متعلق بمنصة اﻹتصالات Asterisk وقمت فعلاً بالإشراف على هذا المشروع وقد قمت بإرشاد الطلاب لكيفية البداية وطريقة عمل ذلك المشروع، والجدير بالذكر أن اﻹشراف لم يأخذ مني وقت طويل، فقد كانوا -بفضل الله- من الطلبة المجتهدين والمعتمدين على أنفسهم في التعلم، وكانت لديهم خبرة برمجية معقولة قبل بدايتهم لهذا المشروع، وقد استفدت منهم بعد أن اسخدموا تقنيات جديدة لم أكن استخدمها في Asterisk. لذلك كانت اﻹستفادة للطرفين، كذلك قررت اﻹستمرار في طرح مشروعات تخرج ومتابعتها لإفادة الطلبة والجامعة ولكي أستفيد أنا أيضاً من الطلبة ومن الجامعة. كذلك فقد تابعت بعض المشروعات اﻷخرى التي لم أكن اشرف عليها فقامت الجامعة بتعيني قارئاً لأبحاث مشروعات أخرى، فكان هذا العام به نوع جديد من المهام الأكاديمية، وقد كانت مهمة شيقة وقد حدثت تغييرات كثيرة في طريقة كتابة البحث، وطريقة تقديم المشروع مما اعتد عليه قبل عشرات الأعوام. وأرى أن يكون هناك تمازج بين المجتمع العملي واﻷكاديمي حيث أن كل واحد منهما يكمل اﻵخر، كذلك فهي طريقة لأداء ضريبة التعليم لكل شخص تخرج من جامعة أن يعود إليها بعد اكتساب الخبرة، يمكنه أن يعود للتدريس أو للإشراف ومساعدة الطلاب في مشروعاتهم المختلفة. أو حتى لو عاد إليها لدراسة الماجستير او الدكتوراه فهذه يمكن أن تُعتبر إسهام في مشروع التعليم في الجامعة. ومن الجدير بالذكر أن هُناك نقص ليس بهين في هذه المهام الإشرافية بسبب قلة اﻷساتذة أو لإنشغالهم بمهام كثيرة أو لقلة خبرتهم العملية، فتقوم الجامعات بالتعويض ن هذا النقص بزيادة أعباء اﻷستاذ الواحد بتكليفه بعدد كبير من المشروعات، وهذا بالتأكيد يقلل من نوعية المشروعات.
هذا العام ركزت فيه أكثر على جانب مهم وهو التصميم الداخلي للبرامج والطرق المثلى لكتابة الكود ضمن مظلة هندسة البرمجيات، فبعد أن تصبح المشروعات كبيرة تتعقد، وفي حال لم يكن التصميم الداخلي لها جيد ومكتوب بطريقة علمية وعملية مثلى، يُصبح وحشاً يصعب ترويضه ويصعب التخلص منه، فنكون قد أضفنا للزبون مشكلة جديدة بدلاً من أن نساهم في حل مشاكل لديه. كتبت عدة أوراق اصبحت كلوائح لكتابة البرامج لدينا في الشركة، وقد كتبت مقالات أيضاً في المدونة العام الماضي عن هذا الموضوع أولها هو مقال طريقة البرمجة الصحيحة. في الحقيقة أصبحت الطريقة الصحيحة للبرمجة هي شغلي الشاغل في العام الماضي وسوف تكون كذلك العام الحالي بإذن الله، فإما أن نكتب برامج بطريقة صحيحة أولا نكتب برامج على اﻷطلاق.
بالنسبة لتطوير البرامج فمازلت اعمل على بضع مشروعات متنوعة التقنيات: حيث تتضمن خدمات ويب وبرامج ويب وبرنامج سطح مكتب وهو نظام الحسابات المالية. اﻹستمرار في تطوير البرامج يدفع إلى تعلم تقنيات جديدة واستخدام طرق أفضل، لذلك كان أحد النواتج هو كتابة ونشر اﻹصدار الثاني من كتاب رحلة استكشافية للغة البرمجة جافا، حيث قُمت بالتركيز هذه المرة على الملفات وسلاسل البيانات streams وطرق التعامل المختلف معها بعد أن صارت أوضح بالنسبة لي بعدما استخدمتها مؤخراً بصورة مكثفة في البرامج المختلفة. كذلك كتابة البرامج هي أداة ممتازة لكتابة أوراق جديدة ومقالات عن التصميم وهندسة البرمجيات، حيث لا أريد أن أكتب مقالات عن شيء لم أجربه ولم ينجح عميلاً، لذلك كما قلت سابقاً لابد من المزج بين المجال العملي واﻷكاديمي أو العلمي.
في الآونة اﻷخيرة أصبح لدي شغف حول الشبكات بدأت بمشكلة في أحد برامج الويب التي طورناها حيث حدث اختناق في الشبكة، فقمت بشراء كتاب عن الشبكات اسمه the art of computer networking وهو كتاب رائع تكلمت عنه في تدوينة سابقة. لكن هذا العام طلب مني المبرمجون أن أقوم بتدريسهم الشبكات بشكل عملي حيث لايرغبون في حضور كورس أكاديمي مطول وهم لديهم خبرة جيدة في الشبكات لكنهم يريدون تطويرها، فقمت بعقد ورشة ليوم واحد تجمع بين العملي واﻷكاديمي، حيث قمنا بتغطية مفهوم الشبكات وطبقات الـTCP والفرق بين البروتوكولات المختلفة، و وظيفة كل طبقة، ثم قمنا بعمل تجارب عملية إبتداءً بتوصيل جهازين بكيبل، ثم استخدام switch للربط بين اﻹجهزة ثم استخدام router وربط أكثر من شبكة وعمل NAT و port forwarding، ثم انتهت عن الكلام عن الـ socket وعمل تجارب محادثة بين جهازين.
بالنسبة لباقي الفريق الذي يعمل معنا فقد زادت خبرتهم البرمجية والتحليلية، كذلك اصبح لديهم بعض الخبرة اﻹدارية والتي تظهر في اﻹجتماعات مع الزبائن وفي طريقة كتابتهم للمراسلات المختلفة وكتابة التوثيق للبرامج المختلفة. لكن يختلف مستوى التطور بين شخص وآخر حتى إذا كانت نفس البيئة ونفس المشروعات، والتحدي اﻹداري هو كيفية اﻹستفادة من كل شخص لديه ميول وطبيعة مختلفة. اﻹستمرار في كتابة البرامج والعمل الفني ضمن الفريق بالنسبة للإداري مفيدة جداً في تقييم الموظفين ومعرفة إمكاناتهم لاستخدامها بأفضل وجه، كذلك لتطويرها والعيش معهم في المشاكل التقنية التي تواجههم.
ختاماً لم يحن الوقت بعد بأن أترك شغف البرمجة وتطوير البرامج حتى مع زيادة المهام اﻹدارية. فالبرمجة بدأت كهواية والهواية ليست لها عمر معين حتى يزول شغفها، وأريد أن أكون مثالاً عملياً لباقي المبرمجين لمن يفكر أو يخطط ويسأل نفسه: هل من اﻷفضل أن أتوقف عن البرمجة وأصبح إداري، ومتى وكيف أتوقف.