تفاوت یک برنامه نویس جونیو و سینیور
برنامه نویس جونیو و برنامه نویس سینیور، تفاوت ها و وجه تمییز ها
۲۳ تیر ۱۴۰۴
زمان مطالعه:
دقیقه

در دنیای مهندسی نرم افزار معمولا برنامه نویسان را به سه دسته کلی از لحاظ ارشدیت تقسیم بندی می کنند، برنامه نویس مبتدی (Junior Developer)، برنامه نویس میان رده (Middle Developer) و برنامه نویس ارشد (Senior Developer)، اما سوالی که همیشه برای اکثر افراد مظرح است چه معیاری برای تعیین سطح افراد و چه شایستگی هایی برای هر یک از این رده بندی ها وجود دارد و چگونه میتوان سطح یک برنامه نویس را مشخص کرد ؟ آیا هر برنامه نویسی که ابزارهای بیشتر را مسلط است ارشدیت بیشتر دارد ؟ یا میزان سابقه کاری به سال و یا تعدد پروژه های انجام داده میتواند معیاری برای ارشدیت یک برنامه نویس باشد ؟

 

پاسخ به این سوالات خیلی حوزه وسیعی را برای مطالعه و بررسی می طلبد اما در این یادداشت قصد دارم با تجربه و یافته های چندین ساله خودم به مواردی اشاره کنم، در انتهای این مطلب وبسایت منبعی که برای این یادداشت استفاده کرده ام را آورده ام و در آخر نظر خودم را هم مطرح کرده ام.

 

مدل کسب مهارت دریفوس یکی از مدل های علمی برای ارزیابی میزان مهارت آموزی افراد در حوزه های مختلف است، این مدل پنج مرحله را برای کسب یک مهارت و متخصص شدن در آن تعریف میکند، آقای اندی هانت در کتاب خودش این مدل برای توسعه نرم افزار بکار گرفته است و خلاصه ارزیابی مدل دریفوس در توسعه نرم افزار چیزی شبیه تصویر زیر است :

Dreyfus model of skill acquisition Dreyfus model of skill acquisition

 

ماتریکس شایستگی برنامه نویس

مدل دیگری که بر پایه مدل دریفوس (دقت کنید مدل دریفوس یک مدل کلی هست و نه صرفا در دنیای مهندسی نرم افزار کاربرد دارد) طراحی شده است ماتریکس شایستگی برنامه نویس است که توسط آقای میلر پیج جونز (Sijin Joseph) طراحی شده است و سطوح تخصص را به هفت مرحله تقسیم بندی می کند:

 

همه این نمودار ها و جداول نیازمند شرح هستند، برای این منظور بطور خلاصه از جدول بالا شروع میکنیم که به هفت سطح برای یک برنامه نویس تقسیم بندی میشود، اولین مرحله کارآموز (Trainee) است، شخصی که بیشتر بیننده کارهاست و آشنائی کلی با زبان های برنامه نویسی و بانک های اطلاعاتی دارد و شاید اغلب امور تکراری که برای یک برنامه نویس جونیور یا سینیور وقت گیر باشد به یک کارآموز سپرده شود، معمولا کارآموزان فارغ التحصیلان صفر کیلومتر دانشگاهی هستند که سابقه کاری هم ندارند، مرحله بعدی برنامه نویس مبتدی (Junior Developer) است، معمولا برنامه نویسان جونیور کمتر درگیر کسب و کار و حوزه دامنه یک پروژه میشوند و بیشتر با ابزارهای نرم افزارهای مانند IDE ها، Framework ها و کتابخانه ها سر و کار دارند، یک برنامه نویس جونیور بین یک الی سه سال معمولا تجربه کاری دارد و پس از آن برنامه نویس میانه یا متوسط میشود (Middle Developer) که فردی است که برنامه نویسان مبتدی را راهنمای و مربیگری میکند و معمولا بین سه الی پنج سال سابقه کاری دارند و بیشتر با برنامه نویسان ارشد در ارتباط هستند.

 

اما در مرحله آخر میرسیم به برنامه نویس ارشد یا (Senior Developer)، یک برنامه نویس ارشد نه تنها مهارت بالایی در کد نویسی دارد بلکه بیشتر یک حل کننده مشکلات است و راهکارهای اساسی برای مسائل کسب و کار و حوزه دامنه (Bussineess Domain) پروژه ارائه میدهد. در واقع اگر خیلی خلاصه بخواهیم معیاری را برای دسته بندی سطح ارشدیت یک پروژه داشته باشیم هرچه یک برنامه نویس به حوزه کسب و کار و دامنه پروژه نزدیکتر باشد سطح ارشدیت بالاتری دارد و هر چه به سطوح پایین تر مانند رابط کاربری و کدنویسی ابزارهای رابط کاربری نزدیکتر باشد از طرح ارشدیت پایین تری برخوردار است.

 

بطور خلاصه برنامه نویس ارشد کسیست که با تحلیلگران سیستم (System Analysts) و متخصصین دامنه (Domain Experts) در ارتباط و تعامل است و بیشتر با بهروش ها (Best Practices) و الگوهای نرم افزاری (Software Patterns) و چهارچوب های کاربردی (Application Frameworks) سروکار دارد.

 

 

خیلی افراد و بخصوص فارغ التحصیلان دانشگاهی فکر میکنند هر چقدر ابزارهای بیشتر بدانند و یا سرعت تایپ بالاتری داشته باشند برنامه نویس حرفه ای تری هستند، اما واقعیت این است که هیچکدام ازین موارد معیاری برای ارشدیت نیست، یادگیری ابزارها برای هیچ فردی از یک کارآموز گرفته تا معمار سیستم کار سختی نیست و با یک آموزش ساده میتوان هر ابزار نرم افزاری را فرا گرفت، اما مساله اینجاست که یک برنامه نویس ارشد کسی است که از بهروش ها (Best Practice) های بیشتری استفاده کند، حداقل تعداد کد را در برنامه استفاده کند، از الگوهای نرم افزاری استاندارد (Software Pattern) استفاده کند و بتواند مسائل کسب و کار را با تحلیلگران و معماران سیستم حل کند.

 

برای این یادداشت از مقاله سایت التکس سافت کمک گرفتم. امیدوارم این مطلب مفید واقع شود و مورد توجه دوستان قرار بگیرد.