در دنیای نرمافزار فقط به این دلیل که شخصی طولانی مدت در این حوزه فعالیت داشته است، به این معنی نیست که مهارت آن فرد در سطح عالی قرار دارد. آنچه برنامه نویسان و مهندسان ارشد را از افراد سطح متوسط متمایز میکند این است که آنها از چه طریقی از مهارتهای خود در جهت حل مشکلات استفاده میکنند. در این مقاله قصد داریم به چند ویژگی توسعه دهنده ارشد اشارهکنیم.
ما میتوانیم برنامه نویسان را به سه سطح ابتدایی، متوسط و حرفهای دستهبندی کنیم. البته این که تنها با یک مقیاس استعداد برنامه نویسان را از یکدیگر جدا کنیم صحیح نیست، اما ۴ مهارت کلیدی وجود دارد که جزو خصوصیات یک برنامه نویس ارشد است:
۱. آنها برنامه نویسانی تنها هستند
۲. آنها معمولاً مربی دیگر برنامه نویسان هستند
۳. مدیریت و هدایت مسائل اجتماعی و سیاستگذاری را در داخل شرکت را به عهده دارند
۴. راهحلهای فنی با نیازهای کسبوکار را ارائه میدهند
به طور ایده آل، یک مهندس ارشد باید هر چهار مهارت مهم ذکر شده را داشته باشد، اما مسئله تکمیل نیازهای گروه و شرکت بسیار مهمتر است؛ بنابراین اهمیت این چهار مهارت میتواند به صورت گسترده متفاوت باشد. به عنوان مثال، در یک شرکت کوچک یا شرکتی نوپا، مهارت به عنوان یک برنامه نویس تنها و توانایی رشد سایر برنامه نویسان معمولاً بسیار بیشتر از مهارتهای اجتماعی و سیاستگذاری است. اینگونه نیست که شرکتهای نوپا این مشکلات را ندارند، بلکه آنها بسیار فشردهتر از یک سازمان بزرگ با اهداف مختلف و چندین مدیر هستند. در یک شرکت بزرگ مهارتهای اجتماعی و سیاستگذاری یک برنامه نویس ارشد از اهمیت بیشتری برخوردار است، زیرا با استفاده از این مهارتها آنها میتوانند کارکنان غیرحرفهای را در جهت پیشبرد اهداف شرکت هدایت کنند.
حوزه نرمافزار یک صنعت کاملاً فنی است؛ بنابراین بدیهی است که یک مهندس ارشد نباید در شناخت نحوه کار ضعیف باشد، اما انتظار میرود یک متخصص ارشد در حدی باشد که ما آن را متخصص عمومی مینامیم. آنها باید به اندازه کافی، طیف وسیعی از مسائل و مشکلات را تجربه کرده باشند. بیشتر متخصصان ارشد در معرض مشکلات یک حوزه یا صنعت خاص قرار گرفتهاند که این موضوع بسیار حائز اهمیت است، زیرا درک جزییات مسائل متعدد میتواند به دانش برنامه نویسان را بالا ببرد.
این تجربه عمیق، باعث میشود تا متخصصان ارشد درک کنند که چگونه تصمیمهای اولیه در توسعه برنامه بر روی نتیجه نهایی تأثیرگذار است. یک تصمیم غلط ممکن است خودش را در جای دیگری بروز دهد که حتی از تصور برنامه نویس هم خارج است. این امر به برنامه نویسان کمک میکند تا درک کنند که خطراتی وجود دارد که از دید آنها پنهان است، بنابراین باید با احتیاط بیشتری در تصمیمگیری خود عمل کنند.
این یک راز کاملاً واقعی است، هیچ راهحل جادویی برای همه مشکلات نرمافزاری وجود ندارد. این گونه نیست که تصمیمی توسط توسعهدهندگان گرفته شود و همه به خانههای خود رفته و کار دیگری انجام ندهند. هر انتخابی پیامد منفی ممکن را با خود به همراه دارد، بهخصوص در زمانی که محصولات در حال توسعه و تکامل هستند.
ممکن است شما برای شکست رقبای خود تصمیمی بگیرید که مجبور باشید به جای ۶ سال، هر ۶ ماه یکبار تغییر در محصولات خود ایجاد کنید. اگر شما در سهم بازار و درآمد برنده شوید، ممکن است ارزش آن را داشته باشد که ریسک کنید. برای اینکه واقعاً یک مدیر ارشد باشید، باید تصمیماتی سخت بگیرید و آنها را به درستی انجام دهید. زمانی که یک راه حل را انتخاب میکنید، مشکلات ناشی از آن را هم باید قبول کنید. یک برنامه نویس ارشد در معرض چندین الگوی طراحی، چندین زبان و تیمهای مختلف قرار خواهد گرفت. گرچه فهم عمیق همه الگوها و زبانهای برنامه نویسی تقریباً غیرممکن است، اما احتمال دارد که شما شناخت و درک خوبی نسبت به مسائل و رویکردهای مختلف را داشته باشید.
برخی از افراد ممکن است فکر کنند که داشتن تعصب در مورد انتخابها و تصمیمگیریها به نفع آنها است؛ اما درواقع برنامهنویسی که بیش از حد در مورد یک فنّاوری، خود رأی است، این مسئله باعث میشود تا یک نکته منفی برای تیم به شمار بیاید. به طور مثال برنامه نویس ارشد تصور کند که زبانهای اصلی و رایج به درد نخور هستند و بیش از حد در مورد این مسائل سخت گیری کند و یا ممکن است تیمی زبانی را انتخاب کند که موردپسند برنامه نویس ارشد نیست، تمامی این موارد میتواند مشکلاتی را در تیم توسعه ایجاد کند.
یک توسعه دهنده ارشد نیازی نیست که همه فریم ورکها و زبانها را به یک اندازه دوست داشته باشد. درواقع بهتر است در مورد این موضوع کمی بیتفاوت باشد. اینها فقط ابزارهایی هستند که برنامهنویس میداند به چه علت و در چه زمانی باید از آنها استفاده شود. به عبارتی دیگر یک برنامه نویس به جای اینکه نگران باشد کدام زبان بهتر و بدتر است، تنها مناسبترین مورد را برای گروه و پروژه خود انتخاب میکند.
یک مثال کامل زبان php است. بسیاری از طراحان وب علاقه دارند که از زبان php انتقاد کنند و آن را بشدت بکوبند، اما با وجود انتقادات و خدشهدار کردن PHP، این زبان روزبهروز با محبوبیت بیشتری روبهرو میشود. نباید این موضوع را شوخی بگیریم، تنها باید فکرکنیم که چگونه میتوانیم از آن به نفع خود استفاده کنیم و از پیشروی بد در کار جلوگیری کنیم.
برنامه نویسان مبتدی، متوسط و ارشد میتوان با استفاده از توضیحات زیر تفکیک کرد:
۱. برنامه نویسان مبتدی معمولاً بر اساس آموزش یا فعالیتی که در مدرسه فرا گرفتهاند، مسائل و مشکلات را حل میکنند که میتواند استفاده از یک فریم ورک رایج باشد.
۲. برنامه نویسان سطح متوسط هر مشکلی را به عنوان بخش بزرگتری از یک سیستم در نظر میگیرند و نگران حفظ کیفیت کدها و دیگر موارد هستند؛ اما آنها همچنان تصویر کلی را نمیبینند. آنها بیشتر تمایل دارند تا بر روی روند پروژه تمرکز داشته باشند.
۴. توسعه دهندههای ارشد این را درک میکنند که در همه چیز مشکل و جنبه منفی و خطر احتمالی وجود دارد. تصمیمات آنها مطابق با کتاب و یا مقالات نیست. آنها به مدیریت ریسک در یک تیم اهمیت میدهند. نگهداری، آموزش و خطایابی آسان در درجه اول برای آنها اهمیت دارد.
مهندسی که این مسئله را میپذیرد که همهچیز را نمیداند، بهترین انتخاب را کرده است. هر چه یک فرد بیشتر به دنبال دانش و یادگیری باشد، زودتر میتواند یک توسعه دهنده ارشد شود. کارفرمایان میتوانند افراد را از میزان اشتیاقشان به چیزی که نمیدانند بسنجند. تجربه شما چیست و چه زمانی حس کردید که برای تبدیل شدن به یک مدیر ارشد آمادگی دارید؟
میتونین در بوتکمپها ثبت نام کنین، و وارد بازارکار بشین!
منبع برگرفته از:
https://medium.com/s/story/what-truly-makes-a-senior-developer-74b608847d7e