چند روز پیش به این مسئله فکر میکردم که چند سال طول میکشد تا بتوانم به یک توسعه دهنده سنیور (یا هر حوزه دیگری) تبدیل شوم و این موضوع واقعا مغزم را مشغول کرده بود. از چندین نفر از دوستانم سوال پرسیدم که با جوابهای مختلفی روبرو شدم.
برخی از جوابهایشان تقریبا بی ربط بودند و برخی از جوابها قانع کننده که قصد دارم با استفاده از جوابها و نظرات مختلفی که در اینترنت با آنها روبرو شدم به یک نتیجه گیری اساسی برسم.
بنابراین هدفی که در این مطلب از وبسایت راکت دنبال میکنم این است که بدانیم چقدر زمان نیاز است تا به یک توسعه دهنده سنیور تبدیل شویم و این عبارت را در رزومه خود درج کنیم.
سال! آیا این معیار مناسبی است؟
مهمترین پرسشی که در ابتدا میتواند برای یک فرد خلاق و باهوش ایجاد شود این است که آیا پرسش «چند سال طول میکشد تا سنیور شویم؟» اساسا پرسش درستیست یا نه. دلیل این موضوع نیز در معیار قرار دادن سال به عنوان یک المان مهم برای تبدیل شدن به توسعه دهنده سنیور است.
مطمئنا شما نیز در تیمهای مختلف یا شبکههای اجتماعی افرادی را دیدهاید که برای سالهای سال مشغول کدنویسی بودهاند و هنوز هم وقتی از بیرون به این افراد، جایگاه شغلیشان یا حقوقی که دریافت میکنند نگاه میکنیم متوجه میشویم که این افراد را نمیتوانیم سنیور بنامیم.
پس مشکل از کجاست؟ از این موضوع یک نتیجه را میتوانیم دریافت کنیم و آن این است که معیار قرار دادن چند سال لازم است تا به سنیور تبدیل شویم یک معیار مناسب و درست نیست.
یک راه دیگر برای اثبات این حرف افرادی هستند که تنها برای مثال دو سال است که وارد حوزه توسعه نرم افزار شدهاند و حال تمام مشخصات یک فرد سنیور را دارند. میتوانند در سطح بالایی کدنویسی کنند، تفکر الگوریتمی دارند، هم تیمی خوبی هستند و میتوانند یک گروه کاری را حتی رهبری بکنند و… . چگونه میتوانیم چنین کسی را با معیار سال مورد قضاوت قرار دهیم پس؟ از این جهت است که معیار قرار دادن زمان نمیتواند معیار دقیق و درستی باشد چرا که هر دو مثالی که از آنها صحبت کردیم این قضیه را رد میکنند و در نتیجه نمیتوانیم معیار سال را به عنوان یک فرضیه حتی قبول کنیم. بنابراین چه موضوعی را میتوانیم به عنوان معیار در نظر بگیریم؟
تجربه میتواند معیار درستی باشد
یکی از دقیقترین تجربیاتی که میتوانیم برای تبدیل شدن به سنیور در نظر گرفت میزان تجربیات فرد در بخشهای مختلف است. بیایید تصور کنیم که یک فرد ۵ سال اخیر را در یک شرکت روی یک وظیفه مشخص گذرانده است و یک فرد دیگر در ۲ سال اخیر در ۲ شرکت مختلف با وظایف متفاوت کار کرده است. شما کدام یک را به سنیور بودن نزدیکتر میدانید؟ کسی که هر روزهای کارهای ثابتی را انجام داده یا کسی که در مدت ۲ سال هر روز با چالشهای مختلفی در تیمهای متفاوت بین ۲ شرکت مختلف روبرو شده است؟
مسلما فردی که در ۲ سال اخیر در حداقل ۲ شرکت مختلف حضور داشته و با تیمهای مختلفی سر و کار داشته و روی بخشهای مختلف یک نرم افزار کار کرده است به سنیور بودن بیشتر نزدیک است.
برای سنیور بودن به نظر من چند موضوع بسیار مهم است که حتما باید در نظر بگیرید:
- کار کردن حداقل در شرکتها یا تیمهای توسعه نرم افزار مختلف
- کار روی یک کدبیس ثابت حداقل برای یک سال تا بدانید که دقیقا در فرایند ساخت و پیشرفت دادن یک پروژه به چه صورتی پیش رفتهاید
- داشتن تعامل با افراد مختلف گروه در گستره زیاد و توانایی کمک به دیگران برای ایجاد پیشرفت و تغییر در پروژهها
این سه مورد از جمله مهمترین موضوعاتی هستند که اگر فردی در چندین شرکت حضور داشته باشد میتواند آنها را کسب کند.
برای اینکه متوجه شوید که یک برنامه نویس سنیور دقیقا چه کارهایی انجام ميدهد و به چه نحوی در یک شرکت نقش ایفا میکند به شما پیشنهاد میدهم پادکست «برنامهنویس ارشد چه ویژگیهایی دارد؟» را گوش دهید.
شاخصههای یک Senior Developer
شاخههای مهارتهای یک سنیور دولوپر (Senior Developer) معمولاً شامل موارد زیر میشود:
- مهارتهای فنی پیشرفته: داشتن دانش عمیق در زبانهای برنامهنویسی، فریمورکها، ابزارهای توسعه، و معماریهای نرمافزار.
- تجربه در توسعه پروژهها: تجربه کار بر روی پروژههای متنوع و مهارت در مدیریت چرخه حیات توسعه نرمافزار.
- مهارتهای حل مسئله: توانایی تشخیص و حل مشکلات پیچیده نرمافزاری به شیوههای خلاقانه.
- دانش در مورد امنیت نرمافزار: آگاهی از مسائل امنیتی و توانایی پیادهسازی راهکارهای امنیتی در نرمافزارها.
- تجربه در تست و کیفیت برنامهنویسی: مهارت در نوشتن تستهای کد و اطمینان از کیفیت بالای نرمافزار.
- مهارتهای کدنویسی و طراحی: توانایی نوشتن کدهای تمیز و مؤثر و طراحی راهحلهای مؤثر برای مسائل نرمافزاری.
- دانش در مورد معماری سیستم و زیرساخت: فهمیدن چگونگی تعامل قسمتهای مختلف یک سیستم و زیرساختهای پشتیبان.
- مهارتهای ارتباطی و کار تیمی: توانایی ارتباط مؤثر با سایر اعضای تیم و همکاری برای رسیدن به اهداف مشترک.
- مدیریت پروژه و رهبری: توانایی رهبری پروژهها و مدیریت منابع و زمانبندیها.
- یادگیری مداوم و بهروزرسانی دانش: تمایل و توانایی برای یادگیری مستمر و بهروز نگه داشتن دانش فنی.
این شاخهها میتوانند بسته به حوزه تخصصی و صنعت مربوطه، متفاوت باشند. همچنین، توانایی سازگاری با تغییرات سریع در فناوری و روشهای نوین توسعه نرمافزار از ویژگیهای کلیدی یک سنیور دولوپر محسوب میشود.
تفاوت توسعه دهنده سنیور و جونیور
مقایسه بین توسعهدهندگان سنیور (Senior) و جونیور (Junior) میتواند بر اساس چندین جنبه از جمله تجربه، دانش فنی، مسئولیتها، توانایی حل مشکل، و نقش در تیم انجام شود:
تجربه و دانش فنی:
- جونیور: توسعهدهندگان جونیور معمولاً کمتر از 3 سال تجربه کاری دارند و دانش اولیهای در زبانهای برنامهنویسی، فریمورکها، و ابزارهای توسعه دارند. آنها اغلب نیاز به راهنمایی و نظارت دارند.
- سنیور: توسعهدهندگان سنیور معمولاً بیش از 5 سال تجربه دارند و دانش عمیقی در زبانهای برنامهنویسی، فریمورکها، معماریهای نرمافزار، و اصول طراحی دارند. آنها قادر به کار با کمترین نظارت و به صورت خودمختار هستند.
مسئولیتها:
- جونیور: مسئولیتها عمدتاً شامل اجرای وظایف تعریفشده، نوشتن کد برای ویژگیهای ساده و کمک به تست کد است.
- سنیور: مسئولیتها شامل طراحی سیستمها، تصمیمگیریهای معماری، رهبری فنی پروژهها، و مشاوره به اعضای جوانتر تیم میشود. آنها همچنین در برنامهریزی و استراتژی پروژهها نقش دارند.
توانایی حل مشکل:
- جونیور: به راهنمایی و کمک نیاز دارند تا بتوانند مشکلات پیچیده را حل کنند. آنها بیشتر روی یادگیری و بهبود مهارتهای خود تمرکز دارند.
- سنیور: قادر به شناسایی، تحلیل، و حل مشکلات پیچیده به صورت مستقل هستند. آنها توانایی ارائه راهحلهای خلاقانه و بهینه را دارند.
نقش در تیم:
- جونیور: عضوی یادگیرنده و اجرایی در تیم هستند که بیشتر روی تکمیل وظایف فردی تمرکز دارند.
- سنیور: رهبر فنی و مشاور در تیم هستند، نقشهایی مانند مربیگری، راهنمایی اعضای تیم، و تصمیمگیریهای استراتژیک را بر عهده دارند.
توسعه حرفهای و یادگیری:
- جونیور: در مرحله ابتدایی یادگیری قرار دارند و باید مداوم روی بهبود مهارتهای خود کار کنند.
- سنیور: به دنبال یادگیری مستمر هستند تا دانش فنی خود را بهروز نگه دارند و در عین حال، دانش خود را به اعضای تیم منتقل میکنند.
در حالی که هر دو نقش برای موفقیت تیمهای توسعه نرمافزار حیاتی هستند، نقشها، انتظارات، و مسئولیتهای آنها متفاوت است. توسعهدهندگان سنیور اغلب نقشهای رهبری را ایفا میکنند و در تصمیمگیریهای کلیدی دخیل هستند، در حالی که توسعهدهندگان جونیور بیشتر روی افزایش مهارتها و تجربه کاری خود تمرکز دارند.
نتیجه گیری
برای تبدیل شدن به یک برنامه نویس سنیور مسائل بسیار زیادی وجود دارد که باید آنها را رعایت بکنید تا بتوانید در مسیر تبدیل شدن به Senior Developer قرار بگیرید. همانطور که در این مطلب مشاهده کردید آنچه که اهمیت بسیار بالایی دارد تجربه است. بنابراین برای اینکه به یک فرد حرفهای تبدیل شوید از تجربه کردن نترسید و سعی نکنید که جا بزنید. تا جایی که امکانش را دارید در زمینههای مختلف تجربه کسب کنید و به نسبت مسائل مختلف دانش کسب کنید.
دیدگاهتان را بنویسید