دولوپر ها کی هستن؟ کِی سنیور میشم؟

Image from freepikچندماه پیش که داشتم آگهی های استخدام رو زیر و رو میکردم تا چهارتا تکنولوژی و مهارت جدید به گوشم بخوره، کنجکاو شدم که بدونم من تو چه سطحی بین دولوپر ها هستم. خیلی جاها سابقه کار رو معیار قرار میدن ولی سابقه کار همه چیزو مشخص نمیکنه. درکنارش باید به مهارت ها، تنوع پروژه ها و میزان پیشرفت تو این سال ها هم توجه بشه. نوشته ای که در ادامه میخونید فارسی شده این مقاله هست.مهندس نرم افزار یا توسعه دهنده؛ چیکار میکنه؟با این حال، قبل از این که شروع کنیم پله های مختلف این نردبان شغلی تو صنعت IT رو شرح بدیم، جا داره چند کلمه هم در مورد شغلِ مهندسی نرم افزار بگیم. مهندسین نرم افزار یا توسعه دهنده ها، مسئولِ تحلیل، طراحی، پیاده سازی، تست و توسعه‌ی آخرین نسل از ابزارها و نرم افزارها برای سیستم های ارتباطی هستند.وظایف مهندس نرم افزار شامل این موارد میشه (ولی این همه‌ش نیست):کد بزنهساختار پایگاه داده رو طراحی کنهتوسعه نرم افزار برای طراحی داخلی شرکتاز کیفیت کد ها مطمئن بشهراه حل های خودشو طراحی و پیاده سازی بکنهمشکلات مربوط به سیستم اطلاعاتی رو مدیریت و حل بکنهدر کنارش بهتره که این موارد رو هم بلد باشه:مهارت برنامه نویسی داشته باشهانگلیسیش خوب باشهمهارت های فردی خوبی داشته باشهمشکلات رو آسون کنهنیازهای کاربر رو پیش بینی کنه همه چیز در مورد مهارت و دانش است!خب، حالا که میدونید مهندس نرم افزار کیه و چیکار میکنه، روی موضوعِ مهمی تاکید میکنیم که از کم به زیاد حرکت میکنه. درسته، سال های فعالیت خیلی مهمه، ولی کلید موفقیت توی صنعت IT مهارت و دانشه. به همین خاطر، شما اغلب با توسعه‌دهنده های تازه کار که پیرتر و جوان تر از خودتونن ملاقات میکنید؛ همینطور ممکنه با توسعه‌دهنده های حرفه ای از گروه سنی مختلف هم ملاقات کنید. چیزی که تو صنعت IT مهمه اینه که چیکار میتونید بکنید، نه اینکه چندسال توی بازار بودید.سطح ۰ - یادگیرنده (کارآموز)اگه تازه مدرسه رو تموم کردید یا در یک دوره شرکت می‌کنید، شاید دانش نظری شما (منصفانه) خیلی کم باشه. شما میتونید با IDE یه کارایی بکنید ولی زیاد با framework ها آشنایی ندارید و چهارتا چیز در مورد دیتابیس ها بدونید. ولی این قابل درکه، شروع سخته و هنوز راه زیادی رو باید برید. پس یاد بگیرید! مدام یاد بگیرید و بعد ۳ ماه کار کردن برای یه شرکت یا بودن توی یه پروژه ای به همراه با تجربه ها، ممکنه توسعه‌دهنده تازه کار بشید. با تمرین استاد می‌شید و توی صنعت IT، که مداوم در حال پیشرفته، شما هم باید همیشه خودتون رو آموزش و توسعه بدید. سطح ۱ - تازه‌کاربه عنوان یه توسعه‌دهنده تازه‌کار شما بی تجربه هستید و همه چی به نظرتون غیرقابل درک، جدید و وحشتناکه ولی مطمئناً شگفت انگیز هم هست. مشکل اینجاست که حتی اگه بخواید، بازم شاید نتونید بیشتر پروژه هارو خودتون تنهایی تموم کنید. شما دانش پایه ای در مورد IT، نرم افزار و سخت افزار دارید؛ حتی اگه بازم چیزهایی در مورد برنامه نویسی و ابزارهاش بدونید، یه زبان برنامه نویسی بلد باشید و مهارت نوشتن کد های ساده هم داشته باشید. شما کم کم یاد میگیرید جزئیات رو بدون ارور های مهم و باگ درست کنید. اینکه چقدر سریع بپرید برید سطح بعدی فقط به این بستگی داره که چقدر تعهد داشته باشید و از چند نفر بتونید یاد بگیرید.تجربه: ۰ تا ۲ سالدانش: دانش پایه‌ای در مورد IT از نرم افزار تا زمینه سخت افزار، برنامه نویسی کامپیوتر، زبان‌های برنامه نویسی، کدها و IDEاستقلال: سطح پایین استقلال، نیاز به بررسی و راهنمایی دارد. اما می تواند وظایف آسان را انجام دهدسطح ۲ - متوسطتوسعه‌دهنده متوسط شدن شاید خطرناک ترین بخش مسیر حرفه ای شما باشه! به طور کلی به این حقیقت مربوط میشه که شما قبلا چیزهایی رو بلد بودید و این شمارو تو موقعیت "رئیس بودن" یا انگار همه چیز رو دونستن قرار میده که کاملا غلطه! صنعت IT یادگیری مداوم نیاز داره و شما برای رسیدن به موفقیت نباید استراحت کنید. میدونیم که شما احساس میکنید سلطان تحلیل، طراحی، توسعه و تست، پیاده سازی، مستندسازی و دگرگونی هستید. اما آیا شما واقعا میتونید یه مسئله‌ای رو تحلیل کنید و فقط روی چطور استفاده کردن از تکنولوژی ها تمرکز نکنید و همچنان به جزئیات هم توجه کنید؟ و سعی کنید درک کنید که راه حل ها قبلی رو چطور بهبود بدید؟ همه مجبور نیستن که توسعه‌دهنده حرفه‌ای باشن و مهمه که در نظر بگیرید که هدف شما اینه که پیشرفت کنید یا فقط از نردبان شغلی بالا برید؟تجربه: ۲ تا ۴ سالدانش: فکر میکنه از چیزی که واقعا میدونه، بیشتر میدونه. سطح متوسطی از دانش در مورد IT از نرم افزار تا زمینه سخت افزار، برنامه نویسی کامپیوتر، زبان‌های برنامه نویسی، کدها، IDE و APIاستقلال: سطح متوسطی استقلال، همچنان نیاز به بررسی و راهنمایی دارد. اما می تواند بیشتر وظایف را تنهایی انجام دهدتأثیر اثر دانینگ-کروگرهنگام بحث در مورد سطح متوسط، باید به اثر دانینگ-کروگر اشاره کرد که در زمینه روانشناسی رخ می دهد و با تعصب شناختی مرتبط است، که در آن افراد به اشتباه توانایی های شناختی خود را بیشتر از آنچه هستند ارزیابی می‌کنند. این تله بزرگی برای توسعه‌دهنده‌ی میانی است زیرا به نظر می‌رسد که از قبل همه چیز را می‌داند و قهرمان جهان هست، اما در واقع، خیلی کم می‌داند و هنوز تا دستیابی به دانش کامل فاصله دارد. می‌گوید آنچه متوسط را از ارشد متمایز می کند این است که متوسط فکر می کند همه چیز را می داند ولی ارشد آگاه است که هیچی نمی‌داند زیرا هنوز چیزهای زیادی برای یادگیری وجود دارد. این کاملاً با نمودار زیر نشان داده شده است، که مطمئناً شما به یاد خواهید آورد و باعث می شود در مورد مکانی که واقعاً در آن هستید فکر کنید. humility threshold = آستانه فروتنی سطح ۳ - ارشدارشد بودن چیزی بیش از اینه که کار هارو به خوبی انجام بدید. به عنوان یک ارشد، از اشتباهات خود چیزهای زیادی یاد می‌گیرید و دقیقاً می دونید چه کاری رو می تونید ولی بهتره انجام ندید؛ چه کد هایی رو میشه تغییر داد و کدومارو بهتره دست نزنید. دیگه به کارهای ساده علاقه ای ندارید، کارهایی را انجام می دید که کس دیگه ای نمیخواد انجام بده و موفق می شید اون ها را حل کنید. ارشد بودن درست مثل حل کننده مشکلات به شکل تمام وقته. دانش تخصصی ارشدها به آموزش به تازه کارها هم کمک میکنه، چون به طور کلی ارشدها هستن که حوصله و دانش کافی دارن تا به راحتی مسائل پیچیده ای که ممکنه پیش بیان رو توضیح بدن. قابل ذکره که ارشد بودن پایان مسیری که دنبال میکنید نیست. مراحل بعدی که میتونید طی کنید معمار، مدیر محصول یا رهبر ارشد هستن. فرصت های جالب زیادی وجود دارن و چیزهای زیادی برای یادگیری.تجربه: 5 تا 8 سالدانش: سطح بالایی از دانش IT از نرم افزار تا زمینه سخت افزاری، برنامه نویسی کامپیوتر، زبان های برنامه نویسی، کدها، فریم ورک ها، IDE، API، می داند چگونه از همه آن استفاده کند، همچنین مایل به کمک به دیگران است.استقلال: سطح بالایی از استقلال، می تواند به راحتی هر پروژه ای را شروع و به پایان برساندبیایید در مورد پول صحبت کنیم!در پایان ذکر چند کلمه در مورد حقوق خالی از لطف نیست. مطمئناً شما هم شنیدید که هرچه در نردبان شغلی خود بالاتر باشید، رضایت مالی بیشتری خواهید داشت. نمودار زیر چند کشور و مقدار دستمزد برای سطوح شغلی توسعه دهندگان نرم افزار را نشان می دهد. تاریخ انتشار این مقاله 02.09.2019لایک کردن این نوشته باعث میشه تا (شاید) بیشتر نمایش داده بشه و توسعه‌دهنده های کمتری دچار اثر دانینگ-کروگر بشن. https://sdacademy.dev/how-the-developer-seniority-levels-looks-like/