تفاوت توسعهدهنده Mid-Level ،Junior و Senior چیست؟
تفاوت توسعهدهنده مبتدی (Junior)، میانه (Mid-Level) و ارشد (Senior) چیست؟ احتمالا شما نیز در مسیر برنامه نویسی، واژگانی مثل جونیور، میدلول و سنیور را شنیدهاید. در این مقاله به تعریف Mid-Level ،Junior و Senior میپردازیم و خواهیم دید که چه تفاوتی بین توسعهدهندههای جونیور و میدول با سنیور وجود دارد؟
آنچه در این مقاله خواهید خواند:
- تفاوت توسعهدهنده Mid-Level ،Junior و Senior چیست؟
- انواع سطوح توسعهدهندگان
- کارآموز (Internship)
- توسعهدهنده مبتدی یا جونیور (Junior Developer)
- توسعهدهنده میانه یا میدلول (Mid-Level Developer)
- توسعهدهنده ارشد یا سنیور (Senior Developer)
- توسعهدهنده جونیور با جونیور چه تفاوتی دارد؟
- چگونه از کارآموزی به سطح جونیور برسیم؟
- چگونه از سطح جونیور به سطح میدلول برسیم؟
- چگونه از سطح میدلول به سطح سنیور برسیم؟
قبل از اینکه به تفاوت بین توسعهدهنده جونیور، میدلول و سنیور بپردازیم، پیشنهاد میکنم اگر به تفاوت بین برنامه نویس و توسعهدهنده آشنا نیستید مقاله زیر را مطالعه کنید:
تفاوت توسعهدهنده Mid-Level ،Junior و Senior چیست؟
چه تفاوتی بین توسعهدهنده جونیور با میدلول وجود دارد؟، چه تفاوتی بین توسعهدهنده میدول با سنیور وجود دارد؟ یا تفاوت یک توسعهدهنده جونیور با سنیور چیست؟ اینها سوالاتی است که برای اکثر برنامه نویسان پیش آمده است.
ممکن است یک برنامه نویسی که 6 سال کار میکند، نسبت برنامه نویسی که 2 سال کار میکند، پروژههای زیادی انجام داده باشد. اما سنیور و جونیور بودن آنها لزوما به مدت زمان سالهای برنامه نویسی آنها بستگی ندارد. یعنی نمیتوان گفت برنامه نویسی که 6 سال کد نویسی میکند سنیور است و برنامه نویسی که 2 سال کد نویسی میکند جونیور است.
پس فرق یک توسعهدهنده جونیور با سنیور چیست؟ تفاوت یک توسعهدهنده جونیور با سنیور، به مهارت آنها بستگی دارد. یعنی ممکن است مهارت یک برنامه نویسی که 2 سال است کد نویسی میکند، از یک برنامه نویسی که 6 سال کد نویسی میکند بیشتر باشد. این مهارتها در قبال سختی پروژه و میزان چالشهای آن بستگی دارد. که در ادامه مقاله به این مهارتها میپردازیم.
انواع سطوح توسعهدهندگان
- کارآموز (Internship)
- توسعهدهنده مبتدی یا جونیور (Junior Developer)
- توسعهدهنده میانه یا میدلول (Mid-Level Developer)
- توسعهدهنده ارشد یا سنیور (Senior Developer)
کارآموز (Internship)
کارآموز چه کسی است؟ یک برنامه نویس کارآموز، دانش زیادی در مورد برنامه نویسی ندارد. دانش او در حد تئوری و تعاریف برنامه نویسی است. یک برنامه نویس کارآموز پروژهی برنامه نویسی ندارد و در ابتدای مسیر برنامه نویسی قرار دارد. یک کارآموز در ابتدای یادگیری سولاتی از قبیل: چه زبان برنامه نویسی بهتر است؟، چگونه برنامه نویسی را شروع کنیم؟ و یا چگونه برنامه نویسی را یاد بگیریم؟ میپرسد.
اگر شما نیز کارآموز هستید میتوانید مقالات زیر را مطالعه کنید:
توسعهدهنده مبتدی یا جونیور (Junior Developer)
توسعهدهنده مبتدی یا جونیور چه کسی است؟ یک توسعهدهنده جونیور، دانش بالاتری از یک کارآموز دارد. اما نمیتواند یک برنامه نویس کارآموز را منتور و راهنمایی کند چرا که دانش خیلی زیادی ندارد.
یک توسعهدهنده جونیور برنامهای مینویسد که صرفا کار کند اما دانش بهینهسازی کد را ندارد. یک توسعهدهنده جونیور، کدهای با کیفیتی نمینویسد و صرف اینکه کدش کار کند، برای او کافی است.
توسعهدهنده جونیور، کدهای قابل فهمی ندارد و ممکن است کدهای اضافی و پیچیدهتری بنویسد که فقط برای ماشین (کامپیوتر) قابل فهم باشد اما برای سایر برنامه نویسان قابل فهم نباشد.
نقل قولی از Martin Fowler، مهندس نرمافزار بریتانیایی وجود دارد که میگوید:
هر احمقی میتواند کدی بنویسد که کامپیوتر آن را بفهمد. برنامه نویسان خوب کدی را مینویسند که انسان بتواند آن را درک کند.
نقل قولی از Cory House:
سورسکد مثل یک جوک (لطیفه) است؛ اگه مجبور به توضیح آن شدید، بدانید که اصلاً خوب نوشته نشده است.
نقل قولی از Harold Abelson:
برنامهها باید به گونهای نوشته شوند که برای افراد خوانا باشند و صرفا قابل اجرا برای ماشینها باشند.
توسعهدهندههای جونیور اصول کد تمیز (Clean Code) را بلد نیستند و از کدهای کثیف و پیچیده آنها میتوانید متوجه شوید که آن را توسعهدهنده جونیور نوشته است. توسعهدهنده جونیور در شرکتها، وارد پروژه اصلی نمیشوند. معمولا توسعهدهندههای جونیور مشکلات خود را از توسعهدهندههای میدلول یا سنیور میپرسند.
توسعهدهنده میانه یا میدلول (Mid-Level Developer)
توسعهدهنده میدلول یا میانه چه کسی است؟ یک توسعهدهنده میدلول یا میانه (Mid-Level)، دانش بالاتری نسبت به کارآموز و جونیور دارد. و میتواند در شرکتها، چندین برنامه نویس کارآموز و جونیور را منتور یا راهنمایی کند.
توسعهدهنده میدلول همواره سعی دارد علاوه بر اینکه کدهایش کار کند، کدهای بهینهتری نیز بنویسد. توسعهدهنده میدلول وارد پروژه اصلی میشوند و روی آن کار میکنند.
برای یک توسعهدهنده میدلول، رعایت استاندارد و کد تمیز (Clean Code) اهمیت بالایی دارد. توسعهدهنده میدلول میتواند مشکلات خود را با جستجو در گوگل پیدا کنند یا در صورت نیاز از توسعهدهندههای ارشد (Senior) راهنمایی بخواهند.
توسعهدهندههای میانه، آشنایی زیادی با الگوهای طراحی (Design Pattern)، معماریهای طراحی، الگوریتمها و... ندارند.
توسعهدهنده ارشد یا سنیور (Senior Developer)
توسعهدهنده سنیور یا ارشد چه کسی است؟ یک توسعهدهنده سنیور، دانش و توانایی بالاتری نسبت به توسعهدهندههای جونیور و میدلول دارد. یک توسعهدهنده سنیور میتواند چندین توسعهدهنده جونیور و میدلول را منتور و راهنمایی کند.
توسعهدهندههای ارشد حقوق بالاتری نسبت به جونیور و میدلول دارند. توسعهدهنده سنیور، معمولا مشکلات خود را با سرچ گوگل پیدا میکنند و در بعضی موارد از سایر توسعهدهندههای سنیور سوال میکنند. بخش زیادی از پروژههای اصلی شرکت در دست توسعهدهندههای ارشد قرار دارد.
توسعهدهندههای سنیور تسلط نسبتا بالایی به مباحث کد تمیر، معماری نرمافزار، الگوهای معماری، الگوهای طراحی، امنیت، سرعت، الگوریتم و... دارند.
توسعهدهنده جونیور با جونیور چه تفاوتی دارد؟
یک توسعهدهنده جونیور با جونیور دیگر تفاوت دارد. ممکن است یک برنامه نویس جونیور، تازه از سطح کارآموزی به سطح جونیوری برسد. ولی توسعهدهنده جونیور دیگر، 2 سال است که جونیور باشد. پس لزوما یک جونیور با جونیور دیگر دانش هم سطحی ندارند.
چگونه از کارآموزی به سطح جونیور برسیم؟
برنامه نویس کارآموز میتواند به 3 حالت برنامه نویسی را یاد بگیرد و به سطح جونیور برسد:
- استخدام در شرکتهای برنامه نویسی
- شرکت در کلاسهای برنامه نویسی به صورت حضوری
- یادگیری برنامه نویسی به صورت خودآموز (غیر حضوری)
استخدام در شرکتهای برنامه نویسی
اولین شیوه یادگیری برنامه نویسی برای یک برنامه نویس کارآموز، استخدام شدن در شرکتهای برنامه نویسی است. کارآموز به کمک برنامه نویسان دیگر، میتواند برنامه نویسی را یاد بگیرد. برای استخدام شدن در شرکتهای برنامه نویسی میتوانید مقالات زیر را مطالعه کنید:
توجه: مدت زمان کارآموزی به طور معمول حداکثر 3 ماه است. پس قبل از اینکه به عنوان کارآموز وارد شرکت میشوید این را مورد را از آنها سوال کنید تا از شما به عنوان کارآموز، بیش از 3 ماه کار نکشند. بعضی از شرکتهای استخدامی بخاطر سوء استفاده، مهارتهای مورد نیاز زیادی را از برنامه نویس انتظار دارند. برای مثال به آگهی زیر از وبسایت جابینجا دقت کنید:
در تصویر بالا شرکتی به دنبال کارآموز Node.JS است. اما دانشی که از یک برنامه نویس کارآموز انتظار دارد زیاد است. به تصویر پایین دقت کنید:
همان طور که در بالا اشاره کردیم، یک برنامه نویس کارآموز در ابتدای مسیر یادگیری است و دانش زیادی ندارد. پس نباید از او انتظار این مهارتها را داشته باشیم. این آگهیها اکثرا به این دلیل است که میخواهند از برنامه نویسان Mid-Level به عنوان کارآموز استفاده کنند تا در ازای کار با کیفیت، حقوق خیلی کمتری به آنها بپردازند.
همچنین به این نکته توجه داشته باشید که ممکن است شرکت به یک کارآموز حقوق کمی بپردازد، یا اصلا حقوقی ندهد. حتی ممکن است از یک کارآموز در ازای یاد دادن برنامه نویسی درخواست هزینه کنند. سعی کنید شرکتی را انتخاب کنید که در ازای کارآموزی به شما حقوق نیز پرداخت کنند یا اپر به دنبال پیشرفت هستید و هدف نهایی شما پول نیست، میتوانید در شرکتهای بهتری بدون حقوق به کارآموزی مشغول شوید. اما سعی کنید به شرکتی که از شما در قبال یادگیری درخواست هزینه میکنند، وارد نشوید.
همچنین ممکن است شرکتها با توجه به نوع قرارداد، بعد از اتمام دوره کارآموزی، در صورت توانایی بالای شما در مسیر یادگیری، شما را استخدام کنند.
شرکت در کلاسهای برنامه نویسی به صورت حضوری
شیوه دوم یادگیری به این صورت است که برنامه نویس در کلاسهای آموزشی ثبت نام کند. این شیوه به دلیل هزینه بالای جلسات، اتلاف انرژی در مسیر رفت و آمد و عدم تمرکز در کلاس، ممکن است مناسب نباشد.
یادگیری برنامه نویسی به صورت خودآموز (غیر حضوری)
شیوه سوم یادگیری (شیوه پیشنهادی و مناسب) برای برنامه نویس کارآموز به این صورت است که بهصورت خودآموز، برنامه نویسی را یاد بگیرد. این برنامه نویسان با توجه به نوع یادگیری خود میتوانند از روی کتاب یا دورههای آموزشی غیر حضوری آن را یاد بگیرند. پیشنهاد ما دورههای آموزشی غیرحضوری به صورت ویدئویی است. چرا که کتابهای آموزشی تا به چاپ برسند پروسه طولانیتری دارند و در هنگام چاپ نیز تکنولوژیهای آنها منسوخ شده و تکنولوژیهای جدیدتری جایگزین شده است.
چگونه از سطح جونیور به سطح میدلول برسیم؟
برای رسیدن از سطح جونیور به مدلول باید برای خود پروژههای مختلفی تعیین کنید. در دل این پروژهها، شما با چالشهای مختلفی برخورد خواهید کرد. حل این چالشها باعث میشود سطح شما روز به روز بالاتر رفته و به سطح میانه یا میدلول برسید. سعی کنید هر روز حتی اگر نیم ساعت وقت آزاد دارید حتما کد نویسی کنید و این زنجیره یادگیری را متوقف نکنید.
هر کدی که میزنید، سعی کنید ماه بعد آن را سادهتر، کوتاهتر و بهینهتر کنید. اگر ماههای بعدی به کدهای قبلی خود نگاه کردید و خندیدید این یعنی پیشرفت کردهاید.
نقل قولی از Ken Thompson:
یکی از پربارترین روزهای من حذف 1000 خط کد بود.
نقل قولی از Bill Gates:
اندازهگیری میزان پیشرفت در برنامه نویسی با تعداد خطوط کد، مانند اندازهگیری میزان پیشرفت در ساخت هواپیما بر اساس وزن است.
چگونه از سطح میدلول به سطح سنیور برسیم؟
رسیدن از سطح مبتدی (Junior) به میانه (Mid-Level) آسان است ولی از سطح میانه به ارشد (Senior) سخت است. ممکن است یک توسعهدهنده میدلول، سالهای زیادی در این سطح باقی بماند و سنیور نشود. برای رسیدن به سطح سنیور باید چالشهای زیادی را حل کنید. یک توسعهدهنده سنیور، کارهایی را انجام میدهد که سایر توسعهدهندگان قادر به انجام آنها نیستند.
یک توسعهدهنده سنیور باید کدهای سایر توسعهدهندگان را بخواند و سعی کند راه حلهای بهتری نسبت به آنها ارائه کند. همچنین حل کردن مشکلات سایر توسعهدهندگام میتواند مهارتهای این توسعهدهندگان را افزایش دهد. برای سنیور شدن باید دانش خوبی نسبت به کد تمیز، معماری نرمافزار، الگوهای معماری، الگوهای طراحی، الگوریتم و... داشته باشید.
جمع بندی:
تفاوت توسعهدهنده Mid-Level ،Junior و Senior به تعداد سالهای کاری آنها بستگی ندارد. تفاوت یک توسعهدهنده سنیور با جونیور و میدلول، به میزان مهارت و دانش آنها در برنامه نویسی بستگی دارد. یک توسعهدهنده ارشد میتواند کدهای کمتر، قابل فهمترو بهینهتری بنویسد و توسعهدهندههای مبتدی و میانه را راهنمایی کند.
و در پایان، نقل قولی از Kent Beck است که میگوید:
کدی بنویسید که کار کند، درست و اصولی باشد و سریع اجرا شود.
اگر سوالی درباره تفاوت جونیور با میدلول و سنیور دارید، لطفا در قسمت نظرات با ما در میان بگذارید.