التطور الطبيعي للمبرمج: العام الثالث

السلام عليكم ورحمة الله

programming

قبل بضعة سنوات طرحت سؤال عن التطور الطبيعي للمبرمج، وتعودت أن أجيب عن هذا السؤال في كل عام بتلخيص اﻹجابة بناءً على أحداث العام الذي انقضى، سواءً من التجربة الشخصية في تلك الفترة أو من التجارب التي شهدتها من زملائنا في العمل.

عام ٢٠١٣ كان بالنسبة لي هو تحول أكثر للإدارة، وذلك بعد أكثر من ١٦ عاماً كمبرمج وكمطور برمجيات. اﻹدارة تتطلب تعلم مهارات والتعلم من تجارب الغير في إدارة شركات البرمجة، وكيفية التعامل مع نوع خاص من الموظفين، وهم المبرمجين، حيث فشل عدد من المدراء في التعامل مع المبرمج في اعتباره مجرد موظف عليه أن يحضر يومياً للعمل في وقت محدد ويذهب في وقت محدد في بيئة ربما لا تُناسبه، ربما تُناسب غيره من الوظائف، لكن المبرمج يتطلب بيئة معينة حتى يُبدع ويستطيع إنجاز المهام البرمجية المعقدة.

النجاح في مهمة اﻹدارة تتطلب المعرفة بمفاهيم ومهارات اﻹدارة العامة وتعلمها مع الوقت، لكن مع خصوصيتها لمهنة تطوير البرامج، فإدارة عُمّال في مصنع تختلف عن إدارة أساتذة في مدرسة وتختلف عن إدارة فريق لإنجاز مشروعات برمجية. لذلك كان لابد من الاستمرار في مهنة المبرمج والمطور والتعمق في مهنة هندسة البرمجيات، ويكون ذلك بدراسة ماهو الجديد وفهم التقنيات التي يستخدمها المبرمجون حول العالم وفي المؤسسة الحالية حتى لا يكون هُناك مسافة فاصلة بين المدير والمبرمج. والمعلومات يجب أن لاتكون نظرية فقط، فلابد للمدير أن يُشارك ولو قليلاً من ناحية فنية، خصوصاً إذا كان الفريق صغير. وأنسب وظيفة لهذا المدير التقني هو أن يكون مهندس برمجيات، يضع اللوائح البرمجية، وطريقة استخدام اﻷدوات، وحتى أنظمة التشغيل المُناسبة وقواعد البيانات، وقواعد السرية،  كذلك فهو يهتم بالجانب القانوني والحقوق في المشروعات المختلفة ويقوم بكتابة العقود. وكل هذه اﻷشياء متداخلة مع بعضها، أي مهارات إدارية، ومهارات إتصال، ومهارات كتابة باﻹضافة إلى المهارات الفنية البرمجية حتى تجعل من المدير شخص ناجح في عمله.

كانت لدي أيضاً فرصة لمتابعة التطور لعدد من المبرمجين الجدد خلال عام، فبعد أن تخرجوا من الجامعات مباشرة شهدت عملهم في مشروعات مختلفة وراقبت تطورهم عن كثب، بل وساهمت في ذلك التطور وقدمت لهم النصائح حتى يكون التطور سريع وفي الإتجاه الصحيح. في البداية يكون الموظف الجديد مبرمج فقط، ينتظر المهمة البرمجية الموكلة له بكافة تفاصيلها ويحتاج إلى مساعدة في إنجازها، وبعد فترة قصيرة يستطيع مساعدة نفسه والاعتماد على اﻹنترنت في حل المشاكل التقنية التي يواجهها، وبعد كثير من التجارب الناجحة والفاشلة يستطيع أن يتغلب على كثير من المشاكل دون الرجوع إلى من هو أقدم منه في الفريق.

من اﻷشياء المهمة التي لاحظتها في الخريجين الجدد والتي هم بحاجة إلى مزيد من التطوير فيها، هي مهارة اﻹتصال، حيث أن اﻹتصالات بمختلف أنواعها خصوصاً عن طريق البريد – والتي تُعتبر طريقة رسمية في المخاطبة – تحتاج إلى كثير من المهارات إبتداءً من اللغة – خصوصاً إذا كان باللغة اﻹنجليزية- ومروراً بالتعبير الصحيح، وفنيّات المراسلات،  وإنتهاءً باﻹلمام التام بفنيّات العمل. وفنيّات المراسلات تتضمن: من هم الأشخاص المخول لي مراسلتهم مباشرة، ومن هم اﻷشخاص الذين يجب تضمينهم في هذه المراسلة أو التقرير المطلوب مني كتابته وإرساله كموظف.

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

تختلف سرعة استجابة الموظف للتطور، فمنهم من تلحظ عليه تسارع كبير في تطوره باكتساب المهارات المختلفة، ومنهم من تلحظ عليه اكتساب بطيء للتطور واكتساب الخبرات، وهذا يرجع للوقت الذي يقضيه هذا الموظف في اكتساب تلك المهارات والطرق الصحيحة التي يستخدمها لتنمية تلك المهارات والخبرات، حيث أن الموظف الجديد يكون أكثر عرضة لتفويت أوقات مهمة، حيث يمكن أن ينقضى الوقت وهو لا يعرف ماذا يفعل وماذا يدرس، وللإدارة أيضاً دور كبيرلإستغلال ذلك الوقت بالطريقة الصحيحة لكل موظف. لذلك فإن الموظف الجديد عليه اختيار الجهة المناسبة والتي تجعله مبرمج ومطور ناجح في فترة وجيزة ويحاول اﻹبتعاد عن العمل لدى الجهات التي يُمكن أن تقضي على تطور مهنيته كمبرمج  ومطور برمجيات حتى لوضحى بالعائد المادي.

ملحوظة:

هذا الموضوع هو مشاركة في مسابقة التدوين الثانية

الكاتب: أبو إياس

مهندس برمجيات

6 رأي حول “التطور الطبيعي للمبرمج: العام الثالث”

  1. لدي استفسار لك استاذ معتز , بما انك لديك نظرة تحليلية للخريج الجامعي ’ الاحظ مشكلة صغيرة وشخصيا تواجهني هي مشكلة عدم وضوح الاهداف حتي العام الثالث للطالب لا يدري الي مسار سيتجه هل الشبكات , البرمجة , الحماية, ام ماذا ! , مما يخلق عقدة للطالب وهنا يطر الي الاستفسار والبحث عم ماذا يختار .
    اتمني ان تفرد مقالة توجهها للطلاب امثالي عن الطريقة الصحيحة للاختيار حسب اهتمام الطالب بما يريد التخصص فيه
    فعامل الزمن شيء حاسم حتي يكسب الطالب زمنه فيما يفيد ويساعده علي التطور بشكل جيد .

  2. في الحقيقة يجب أن تكون فترة الجامعة أكثر إنفتاحاً على عدد من المجالات، التخصص يمكن أن يكون فقط في العام اﻷخير، أو يمكن أن يكون خارج الجامعة في البيئة العملية. والمجالات متداخلة، مثلاً المبرمج يحتاج لتصميم برامج لها مناعة ضد اﻹختراق مما يفرض عليهم دراسة ما يتعلق بالسرية، كذلك فإن الشبكات جزء لا يتجزأ من أي برنامج حديث

  3. نعم اجد ذلك فتدريس المناهج يتم بصورة موسعة من اجل الالمام بكافة الاشياءالتي هي في الاصل مرتبة مع بعضها ,
    عن نفسي اريد تعلم البرمجة بلغة بايثون حاليا بدأت في تعلم الاساسيات وصلت مرحلة متوسطة فيها لكن للاسف وجدت اني اضيع الزمن بعدم كتابة اي برنامج مما جعلني ابحث عن السبب لماذا اريد تعلم هذه اللغة , في النهاية اكتشفت طريقة
    جيدة للمحافظة علي الزمن وفي نفس الوقت كتابة برامج لها اثر ملموس , ساطرح عليك تجربتي التالية :

    قبل فترة احتجت الي اسطوانة ويندوز تحتوي علي نواتين [x86-x64] لكن مع فرق بسيط من النسخ الموجودة علي الانترنت التي توفر هذه الخصائص , احتجت الي اسطوانة تأتي مضاف اليها اسطوانة تعاريف حتي اتمكن من تنصيب النظام مع التعاريف بشكل جاهز ولتقليل الزمن الخاص باعداد النظام وتعريفاته , قمت بالبحث ولم اجد نتيجة , فالنهاية
    بداتفي تنفيذ فكرتي حملت اسطوانتي تعريفات كل واحدة تدعم نواة بعينها , وضعتهم سويا وكتبت سكريبت بالدوس من
    اجل اتمام العملية هنا اضطررت لتعلم اوامر الدوس من اجل ان اتم العملية وصلت الي انني احتاج لسكريبت يفحص النسخة المنصبة هل هي نواة [64-86] ومنثم يقوم بتشغيل اسطوانة التعاريف حسب نواة النظام التي تم تنصيبها , وبالفعل نجحت العملية بشكل ممتاز , وحاليا اخطط لكتابة سكريبت اخر لمعالجة وتطوير السكريبت القديم بسبب بعض الاخطاء فيه .
    ارجو التعقيب علي التجربة ككل من حيث الفكرة ومسار العملية ومدي صحة الاسلوب المتبع .

  4. في الحقيقة كلامك صحيح، يجب أن تعمل برنامج حقيقي حتى يكون لديك دافع، تعلم البرمجة لأجل التعلم ليس بطريقة ناجحة، الدافع هو البرنامج وليس اللغة، اللغة هي وسيلة أو أداة، لكن البرنامج هو الهدف، لا يهم البرنامج مكتوب بأي لغة، لكن المهم أن يعمل في النهاية بطريقة صحيحة.
    يمكن عمل عدد من اﻷدوات المساعدة لحل مشكلة معينة، مثل مشكلة التعريف التي ذكرت، ويمكن أيضاً عمل برامج عامة يستفيد منها أي شخص في بيئة العمل الخاصة به، مثلاً برنامج لعمل نسخ احتياطي، أو لعمل أرشفة للأقراص، وإلى ما ذلك، كل هذا يُساهم في تعلم البرمجة بطريقة سريعة وبطريقة عملية باﻹضافة إلى أنه يضيف مفاهيم تطوير البرامج وهي شيء آخر وعلم في حد ذاته غير تعلم لغة البرمجة.

  5. لك الشكر استاذي علي التحفيز ، ساواصل الدروس ومن ثم ساخبركب بنتيجة العمل .

أضف تعليق