چگونه می‌توان یک مهندس ارشد نرم افزار شد

چگونه می‌توان یک مهندس ارشد نرم افزار شد
آفلاین
user-avatar
عرفان حشمتی
28 بهمن 1399, خواندن در 12 دقیقه

از زمانی که یادگیری کدنویسی را شروع کردم، آرزو داشتم مهندس ارشد نرم افزار شوم. برخی ممکن است این موضوع را کمی عجیب تصور کنند. آیا هدف اصلی من این نیست که ابتدا کار پیدا کنم و بعدا نگران ارتقا شغلی باشم؟

به طور کلی درست است، اما به عنوان فردی که چهار سال شغل خود را تغییر داده، من نمی‌خواستم به سادگی کارم را تغییر دهم، بلکه می‌خواستم در آن رشد کنم و هیچ نمونه‌ای از پیشرفت شغلی در زمینه فناوری بهتر از مهندس ارشد نبود.

مهندسین ارشد استاد کار خود هستند. آنها توسعه دهندگانی اند که کد خود را با سرعت باورنکردنی تولید می‌کنند و همیشه در اوج هستند. درست است؟

پس از سال‌ها تمرین و یادگیری، خوشحالم که اعلام می‌کنم این کار را کرده‌ام. من اکنون در زمره افرادی هستم که عنوان آرزوی ارشد را دارند. می‌دانید چه چیزی عجیب است؟ من هیچکدام از مواردی که در بالا توضیح دادم نیستم. من یک مهندس متوسط هستم که Stack Overflow را در دست دارد. اما چگونه یک نفر مثل من می‌تواند به مقام ارشد دست پیدا کند؟

این همان چیزی است که این مقاله قرار است بر آن تمرکز کند.

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

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

چگونه من مهندس ارشد نرم افزار شدم؟

بعد از یک سال حضورم در شرکت، نزد مدیرم رفتم. دستاوردهای خود را جمع‌بندی کردم و علاقه خود را برای رسیدن به سطح بعدی حرفه خود ابراز کردم.

با یک سوال ساده شروع کردم: "چگونه می‌تواند این اتفاق بیافتد؟"

بعد از آن جلسه، من و مدیرم یک برنامه توسعه طرح‌ریزی کردیم و در آن سال من ارتقا یافتم.

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

اگرچه صنعت فناوری بیش از سایر صنایع شایسته سالار است، تعداد بیشماری از توسعه دهندگان کم ارزش هم وجود دارند. خودم چندین نفر را می‌شناسم.

دلایل زیادی وجود دارد که باعث می‌شود مهندسان کم حقوق و کم تراز شوند. من وانمود نمی‌کنم که وضعیت دیگران را درک می‌کنم. با این حال دلیل اینکه من به یک مقام ارشد تبدیل شدم این است که من آن را خواستم.

چه موقع باید پرس و جو کرد؟

این یک سوال عالی است و ذهن را درگیر می‌کند. مشکلی که در شناخت یک "مهندس ارشد" وجود دارد این است که هر شرکت تعریف خاص خود را دارد. ارسال یک ایمیل برای مدیر و گفتن "من باید یک مهندس ارشد شوم" کارایی نخواهد داشت.

معیارهای مهندس ارشد شدن در یک استارت آپ ده نفره با یک شرکت FAANG متفاوت خواهد بود.

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

اگر شرکت شما معیار مشخصی ندارد، پیشنهاد می‌کنم با همکاران خود صحبت کنید. از سایر مهندسان ارشد بپرسید که روی چه موضوعاتی کار می‌کنند، مشارکت در کد آنها را بررسی کنید و یا از آنها بپرسید "چگونه مهندس ارشد شدی؟". من مطمئنم که حداقل یک نفر را پیدا خواهید کرد که بخواهد در مورد موفقیت‌های خود صحبت کند. من اکنون این کار را می‌کنم. صحبت کردن و پرسیدن برای رسیدن به اهدافم برایم بسیار مهم بود.

من از نقاط قوتم (به غیر از کدنویسی) استفاده کردم

تصور غلط دیگری که در مورد مهندسان ارشد وجود دارد این است که همه آنها برنامه نویسان چیره دستی هستند. من اولین نفری خواهم بود که اعتراف می‌کنم یک برنامه نویس کاملا متوسط ​​هستم. راجع به موضوعاتی می‌دانم، اما به این زودی‌ها برنده نخواهم شد.

ارشد بودن به معنای کدنویس هوشمند نیست. همانطور که پاتریک مک کنزین در کتاب "خود را یک برنامه نویس خطاب نکنید" نوشت:

"مهندسان برای ایجاد ارزش تجاری استخدام می‌شوند نه برای برنامه‌ریزی کارها."

همه چیز در مورد ارائه ارزش به کسب و کار است. به عنوان یک مهندس، مقدار ارزشی که به شما داده می‌شود نتیجه مستقیم کدی است که می‌نویسید، اما راه‌های دیگری که وجود دارد، نقاط قوت هرکدام از ما غیر از کدزنی است. استفاده از مهارت‌های دیگر می‌تواند به برجستگی شما کمک کند.

برای من این به صورت نوشتن، صحبت کردن و آموزش دادن بود.

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

بسیاری از همکاران من همین خلا را احساس کردند، البته نه همه. یک شکاف ذهنی در شرکت وجود داشت. چندین مهندس از زمان تأسیس شرکت حضور داشتند و می‌دانستند که این مشکلی قدیمی است. با این حال مهندسانی هم بودند که توجهی نداشتند. شکاف دانشی چیزی بود که با هر استخدام جدید بیشتر می‌شد.

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

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

آن وقت بود که فهمیدم چه ارزشی می‌توانم ارائه دهم. من در موقعیت منحصر به فردی قرار داشتم تا خلا دانش را پر کنم. به وسیله یک قلم و کاغذ تاریخچه فنی شرکت را ثبت کردم. از زمان تأسیس تا به امروز که شامل تصمیمات فنی، معاملات انجام شده و بدهی‌های انباشته شده بود.

در حالی که من هرگز به واسطه کدنویسی ترفیع نگرفته‌ام و داستان من کاملا متفاوت است.

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

من از بسیاری از کسانی که آن را مشاهده کرده‌اند تقدیرنامه گرفتم. از جمله مهندسان فنی، مدیر محصول و CTO. این کار برای یک مهندس سطح متوسط بسیار نشاط آور بود. همچنین یک عامل کلیدی در ارتقا شغلی من محسوب می‌شد.

همیشه راه‌های برجسته و با ارزش وجود دارد. اگر اهل برنامه نویسی هستید، اجازه دهید کدتان به جای شما صحبت کند. اما اگر مثل من در این کار مهارت کافی ندارید، پس از دیگر نقاط قوت خود بهره بگیرید.

برای تیم مهره‌ای کلیدی شدم

من همیشه مهندسین ارشد را به عنوان یک ماشین کدزنی تصور می‌کردم. آنها کسانی بودند که طولانی‌ترین کدها را می‌نوشتند و بیشترین امکانات را اضافه می‌کردند. ناامیدی من را تصور کنید زمانی که فهمیدم علاوه بر یک کدنویس متوسط​​، یک تولید کننده متوسطی نیز هستم.

با این حال آمده‌ام تا یک درس مهم بیاموزم. هرچند سرعت خوب است، اما ثبات به همان اندازه مهم است. من اگر پروژه را به تاخیر بیاندازم، مدیر و کارفرما را با خبر می‌کنم و به آنها می‌گویم که چه مدت تأخیر می‌اندازم.

به عبارت دیگر من یک عضو قابل اعتماد هستم. در مورد آنچه می‌توانم به دست آورم و حتی مهمتر از آن، با آنچه نمی‌توانم صادق هستم. من تمام تلاشم را می‌کنم تا از تیمم حمایت کنم و شرایط آنها را راحت‌تر کنم.

سال گذشته بخش فناوری به من خبر داد که خدمات ما به درستی کار نمی‌کند. یک مشکل در تولید باعث شد که کارها خوب پیش نمی‌رفت. این مسئله ذهنم را به خود درگیر کرد.

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

ما باید سریعتر سرویس پشتیبان می‌گرفتیم. همچنین لازم بود داده‌های چند هفته را نیز پر می‌کردیم. با توجه به پیشینه من و حضور در جلسات و در دسترس نبودن مهندس ارشد تیم، این وظیفه به عهده من قرار داده شد.

حتی با اینکه من مشکلی ایجاد نکرده و سرویس را هم طراحی نکرده بودم، مدیریت اوضاع را در دست گرفتم. اشکال را شناسایی کردم، راه‌حل را یافتم و آن را برای واکشی داده‌های از دست رفته به کار گرفتم. همچنین مرتبا با ذینفعان ارتباط برقرار می‌کردم و آنها را از بروزرسانی‌ها آگاه می‌کردم.

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

این اقدامات مورد توجه مدیرم قرار گرفت. او به من گفت که اشتباهات رخ می‌دهد، حتی اشتباهاتی که منجر به از دست رفتن درآمد می‌شود. اطمینان از این که اشتباهات هرگز تکرار نشود، تیم را به طور کلی بهبود می‌بخشد و مطمئنا از آن زمان تیم ما با آن سرویس مشکلی نداشته است.

مهندس ارشد شدن برای من درک این امر بود که قابلیت اطمینان ضروری است. هرچه بیشتر مورد اعتماد باشم، مدیر و اعضای تیم به من اطمینان بیشتری خواهند داشت. اختیار و مسئولیت اضافه شده با عنوان ارشد تنها از طریق اعتماد حاصل می‌شود و این اعتماد فقط در طول زمان از طریق ثبات ایجاد خواهد شد.

با این حال این بیانگر رشد و پیشرفت است، همان چیزی که بسیاری از ما در حرفه خود به دنبال آن هستیم.

فقط به خاطر عنوان جدید به دنبال مقام ارشد نباشید. به من اعتماد کنید، چیزی تغییر نخواهد کرد. ممکن است مسئولیت‌های اضافی داشته باشید و کمی جلب توجه کنید، اما همان مهندس قبلی خواهید بود.

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

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو