شركات التوظيف والموارد البشرية في الشركات لديها معايير محددة لتوظيف المبرمجين حيث يقومون بتوظيفهم بناء على تصنيفات او مستويات حيث يقسمونهم الى (Junior -Mid-level -Senior )مع الاهتمام بسنوات الخبرة في العمل ومستوى الخبرة ومجال العمل والمسؤولية التي ستسند اليه ، سأشرح كل مستوى والفرق بينها في هذا المقالة على شكل نقاط.
Junior Developer
هذا المستوى غالبا تبدأ سنوات خبرته عملية من 0 الى عامين خبرة
مفاهيم بسيطة ونظرة عامة حول علوم الحاسب متعلقة بالsoftware و hardware
علم ببعض المفاهيم الاساسية المتعلقة بلغات البرمجة وادواتها
لديه علم على الاقل في لغة برمجية واحدة مع القابلية لكتابة كود بسيط بها
لديه القابلية لصيانة الاخطاء البرمجية البسيطة في برنامج مع امكانية العمل بأدواته و مميزاته ولو بشكل بسيط
في بعض الحالات قد يكون المبرمج في هذا المستوى عديم الخبرة وفي بعض الحالات هو متخرج جديد من جامعة او كلية و بدأ العمل على مشاريع حقيقة لأول مره
في اغلب الحالات مبرمج junior يحتاج دوما مساعدة واخذ بعض الوقت من المبرمجين الاخرين لأنه غالبا لايستطيع اتمام عمل معقد بنفسه دون الاعتماد على احد.
مستوى junoir مقارب لمفهوم مبرمج هدفه فقط بناء منتج يشتغل “making it work.”
دوما يحتاج مساعدة ويسأل باستمرار
Mid-level Developer
هذا المستوى غالبا تبدأ سنوات خبرته عملية من 2 الى 4 سنوات ويكون قد اشتغل بالفعل في تطوير بعض مشاريع ولديه بعض الخبرة في اكتشاف الاخطاء وتتبعها وتصحيحها.
لديه بعض الخبرة في بعض مراحل دورة تطوير البرمجيات SDLC* (التحليل - التصميم - التطوير - وتجريب testing )
يستطيع وصف وشرح طريقة وايجاد حل لمشكلة قائمة واقتراح حلول فعالة لها.
يستطيع تثبيت وتجهيز بيئة تطوير لوحده ولديه ايضا القابلية لتسيير مبرمجي مستوى junior
لديه القابلية لاداء مهام عدة مشاريع في نفس الوقت.
لديه امكانية مراجعة الكود البرمجي وجعله اكثر كفاءة وقابلية اكتشاف الاخطاء
يمكنه انشاء وبناء وحدات الاختبار بسيطة unit tests
المبرمج في هذا المستوى يحرص على كتابة كود له قابلية للقراءة و تعديل من مبرمجين اخرين ايضا يجب ان يتعلم افضل الممارسات لتطوير الكود
تكون له قابلية لتعلم بعض المعماريات الاساسية وحول تحسين الاداء performance والحماية وسد الثغرات
Senior Developer
هذا المستوى غالبا تبدأ سنوات خبرته عملية من 5 الى 8 سنوات تتضمن خبرة اضافية في حل المشكلات باختلاف تعقيدها
القابلية للقيام بمختلف الاختبارات والتجارب على الحلول المتوفرة مع امكانية التحقق من الفرضيات وايضا يمكنه ربط الافكار مع بعضها لايجاد حل جديد.
امكانية القيام بمعالجة الكود البرمجي لتطوير بنيته وتحسين جودته وكفاءته.
يمكنه التواصل مع العملاء للنقاش حول تفاصيل المشروع و business processes ويمكنه تحويل business processes الى كود برمجي
يمكنه ادارة مبرمجي junior - mid-level وتوزيع المهام للفريق بطريقة متوازنة وفعالة
يمكنه فهم المشروع بسهولة واعطاء افضل المقترحات والطرق لتطوير وتنفيذ وصيانة المشروع
يكون مسؤول عن تدريب ومساعدة مبرمجي junior في تنفيذ مهام معقدة نوعا ما
لديه امكانية القيام بمراجعة الاكواد المكتوبة من المبرمجين الاقل خبرة مهنة وابداء رأيه حولها لتحسين الكود وجعله اكثر كفاءة
يمكنه كتابة وبناء وحدات اختبار معقدة
الانتقال من مستوى Mid-level الى senior صعب نوعا ما وبعض المبرمجين يبقون في مستوى mid في طول حياتهم المهنية.
مبرمجي senior يعرفون الجوانب التي يمكن قصها وتعديلها وتطويرها وماهي الجوانب التي لايجب ان تمس ابدا وهذا نتاج خبرة من دروس مستفادة عن طريق ارتكاب العديد من الاخطاء في الماضي.
اذا كنت تريد الانتقال الى مستوى senior فعليك ان تكون مستعدا ان تواجه مشاكل لايستطيع احد حلها الا انت فيجب عليك ان تعلم اكثر مما ان تعلم كيف تنتهي فقط من عمل ما.
ضع في اعتبارك انك عندما تكون مبرمج senior انك ستساعد المبرمجي الاقل خبرة منك لذا فانت تعتبر كحبل نجاة لأولاءك الذين لايعرفون كيف يعملون أمر ما.
لا يفاجئك ان يتقن senior مجموعة من stacks ومهارات ولغات البرمجة لانه يوجد امور اكثر اهمية منها ولذلك على senior معرفة وتعلم جميع الادوات والتطبيقات المستخدمة في الشركة التي يعمل فيها فهو العمود الذي يلجأ اليه المبرمجين الاقل خبرة لتعلم كل ماهو متعلق بما هو مستخدم في شركة ومنهجية بناءها للمشاريع.
مايختلف senior عن مستويات الاخرى ليست فقط الخبرة البرمجية بل طريقة ايجاد افضل الحلول للمشاكل في مختلف مستويات المشروع وتحسين الحلول السابقة وربطها ببعضها لتحسين المشروع وجعله اكثر كفاءة.