هنگامی که به دنبال شغلی بهعنوان یک توسعهدهنده نرمافزار هستید، اصطلاح توسعهدهنده ارشد را زیاد مشاهده میکنید. ممکن است ذهینت شما اینگونه باشد که واژه ارشد تنها تعریف دیگری از تجربه است، اما واقعیت این است که ارشد بودن به مفهومی فراتر از تجربه اشاره دارد. مجموعه مهارتها و ویژگیهای خاصی وجود دارند که یک توسعهدهنده ارشد را تعریف میکنند. به بیان دقیقتر، هر توسعهدهنده ارشد باید مهارتهای خاصی داشته باشد تا بتواند تیم تحت سرپرستی خود را بهدرستی مدیریت کرده و کارهای خود را به بهترین شکل انجام دهد.
اگر میخواهید یک توسعهدهنده ارشد باشید، باید به فکر تجربهاندوزی در ارتباط با مهارتهای ضروری باشید که باعث موفقیت در انجام کارها میشود. این مهارتها کمک میکنند تا برند شخصی خود را به عنوان یک توسعهدهنده ارشد تقویت کنید و پروژههای محوله را به بهترین شکل انجام دهید. با این مقدمه به سراغ معرفی 9 مهارت برتری میرویم که یک توسعهدهنده ارشد باید داشته باشد.
1- میداند چگونه کدهای قابل نگهداری بنویسد
این موضوع که هر توسعهدهنده خوبی باید بداند، چگونه کدهای با کیفیت تولید کند، حرف درستی نیست. برنامهنویسان وقتی هنوز در ابتدای راه هستند، تمرکزشان تنها بر تکمیل کدها و دستیابی به نتیجه موردنظر به هر شکل ممکن است. آنها هنوز تجربه لازم برای اینکه کدهای خود را ساختارمند توسعه داده و بهینه کنند در اختیار ندارند. با اینحال، به مرور زمان که در کار خود پیشرفت میکنند، یاد میگیرند که چگونه کدهای قابل نگهداری بنویسند. یک توسعهدهنده در اولین گام وظیفه دارد تا کدهایی بنویسد تا وظیفه مورد انتظار را انجام دهد. در ادامه باید به فکر ساده کردن کدها باشد تا دیگران بتوانند آن را بخوانند و عملکرد کدها را درک کنند. اغلب توسعهدهندگان احساس میکنند، یک کد فوق پیچیده، کد خوبی است. اما این تنها یک افسانه است. هر کدی باید در طول حیات خود تکامل یابد تا بتواند به الزامات تجاری متناسب با اهداف سازمانی پاسخ دهد. در نتیجه، اگر اعضای تیم نتواند عملکرد کدها را درک کنند، در زمان کوتاهی آن کد به کابوس بزرگ تیم تبدیل میشود. با توجه به توضیحاتی که ارائه کردیم، به عنوان یک توسعهدهنده ارشد باید یاد بگیرد که چگونه کد ساختارمندی تولید کنید که برای دیگر قابل درک باشد و مشکلی از بابت نگهداری و توسعه آن وجود نداشته باشد.
2- میداند چگونه باگها را پیشبینی کند
وجود باگها و مشکلات پیشبینی در هر محصول نرمافزاری وجود دارد. پارامترهای زیادی روی یک برنامه تاثیر منفی میگذارند و هرچقدر هم برنامهنویسی حواسش به کدهایی باشد که مینویسد، بازهم احتمال اینکه برخی از باگها مشاهده نشوند وجود دارد. از اینرو، تیمها توسعه نرمافزار باید تلاش خود را معطوف به پیشبینی مشکلات کنند و از قبل به این موضوع فکر کرده باشند که اگر هر خطایی اتفاق افتاد، چه کاری باید انجام دهند.
توسعهدهنده ارشد، در زمان کار روی وظیفهای که به او محول شده باید بر واکنش سیستم به حالتهای مختلف تمرکز کند. برنامهنویسهای ارشد باید یاد بگیرند که نقاط حادثهخیز برنامههای کاربردی را شناسایی کنند و مکانیزمهای محافظتی برای این نقاط تعریف کنند تا کاربران تجربه کاربری خوبی داشته باشند. علاوه بر این، باید بهطور همزمان، آمادگی رسیدگی به حالتهایی که سیستمها با شکست روبرو میشوند را داشته باشند. برای این منظور نباید از آزمایشهای نرمافزاری و انجام تستها بتا غافل شوند. مهارت پیشبینی شکست تنها در سایه همکاری در چرخه توسعه محصولهایی در دنیای واقعی به وجود میآید.
3- برنامهنویس ارشد میداند چگونه کارهای خود را اولویتبندی کند
یک توسعهدهنده ارشد باید بداند که چگونه باید وظایف محوله را اولویتبندی کند تا عملکردش به بهترین حالت ممکن برسد. هر کاری را نمیتوان با زمان و تلاش یکسان انجام داد. به همین دلیل، یک مهارت ضروری برای توسعهدهندگان ارشد، اولویتبندی و کار کردن روی وظایفی است که نیازمند صرف انرژی بیشتری هستند. به طور همزمان، توسعهدهندگان ارشد باید مهارت نه گفتن را بیاموزند. آنها نباید کارهایی که باعث میشوند هیچ تجربهای به آنها افزوده نمیشود، دوری کنند یا اگر یک توسعهدهنده ارشد میتواند آن کار را انجام دهد، باید آن کار به توسعهدهنده جوانتر محول کند.
تفویض اختیار موثر، به برنامهنویسان تازهکار کمک کند تجربهاندوزی کنند، در حالی که به برنامهنویسان ارشد اجازه میدهد روی کارهایی که به تخصص آنها نیاز دارد، تمرکز کنند. در بیشتر موارد، توسعهدهندگان جوان از نه گفتن هراس دارند، با این فرض که دیدگاه منفی در مورد آنها به وجود میآید. با اینحال، قبول هر وظیفهای که به آنها محول میشود نتیجه معکوس داشته و بر عملکرد آنها تاثیر منفی میگذارد.
در نتیجه، همانگونه که برنامهنویسها در حرفه خود تجربهاندوزی میکنند و میخواهند به عنوان توسعهدهندگان ارشد شناخته شوند، باید بدانند که کیفیت و نه کمیت، برای رشد آنها نقش تعیینکنندهای دارد.
4- میدانند چگونه با تشدید مقابله کنند
شبیه به باگها و مشکلات سیستمی که باعث شکست نرمافزارها میشود، تشدید یا افزایشهای سریع (Escalation) یکی از مشکلات رایج برنامهنویسان است. تشدید تنها زمانی که دلیل موجهی برای آن وجود داشته باشد و باعث اختلال در عملکرد کارهای برنامهنویسان نشود، مشکلی ندارد. اینکار به برنامهنویسان در حفظ اولویت انجام کارها کمک میکند و نشان میدهد چه مواردی باید ابتدا به سرانجام برسند. با اینحال، بسیاری از مهندسان نرمافزار تشدید را به عنوان اختلال در نظر میگیرند.
در نقطه مقابل، توسعهدهندگان ارشد ماهیت تشدید را به خوبی میشناسند و میدانند که چگونه آنرا مدیریت کنند. برنامهنویسهای ارشد به جای هراس در هنگام بحران، آرامش خود را حفظ میکنند و بر حل مسئله تمرکز میکنند.
5- میداند چگونه مذاکره کند
شاید تعجب کنید چرا یک توسعهدهنده نرمافزار باید در مورد اصول مذاکره اطلاع داشته باشد. یک توسعهدهنده ارشد درباره چه چیزی میتواند مذاکره کند؟ یک توسعهدهنده جوان، تمرکزش بر کدنویسی و انجام وظایفی است که به او سپرده شده است. اما همانگونه که در حرفه خود پیشرفت میکنید، باید روزانه با مشتریان و تیمهای مختلفی در تعامل باشید و بتوانید از راهحلهای دوستانه برای شناسایی و حل مشکلات استفاده کنید.
نکته مهمی که باید به آن دقت کنید این است که مشتریان همواره نظرات مختلفی در مورد نیازهای خود و قابلیتهای یک برنامه دارند. ممکن است تفاوتهای قابل توجهی در ارتباط با طرحهای شما و برنامههایی که مشتریان مدنظر قرار دارند، وجود داشته باشد. به عنوان یک توسعهدهنده ارشد، باید به دنبال توافقی منطقی باشید تا کارها به سرانجام برسند. این مسئولیت شما به عنوان یک توسعهدهنده است.
6- زمان و نحوه کمک به دیگران را میداند
اصل مهمی که نباید فراموش کنید این است که توسعهدهندگان باید درخواست کمک کنند و تا حد امکان به دیگران کمک کنند تا در حرفه خود رشد کنند. با اینحال، یک توسعهدهنده ارشد چه زمانی و چگونه باید به دیگران کمک کند؟ اگر اعضای تیم با یکدیگر در ارتباط نباشند، تیم بدون تردید شکست میخورد. البته، این حرف به این معنا نیست که باید تمام وظایف و کارهایی که به تیمی سپرده شده را خودتان انجام دهید. همواره باید تعادلی بین کمک به دیگران و اجازه دادن به آنها برای انجام وظایفشان وجود داشته باشد تا از اشتباهشان درس بگیرند.
7- میداند چگونه با کاربران در تعامل باشد
در بیشتر موارد مشاهده میکنیم که توسعهدهندگان بر جنبه فنی تحویل محصول متمرکز هستند. علاوه بر این، گاهی اوقات از کاربران درخواست میکنند نحوه استفاده خود را از محصول را بر مبنای طرحی که آنها در نظر دارند، تغییر دهند. آنها به جای ایجاد محصولی که برای کاربران کار میکند، از کاربران انتظار دارند طبق خطمشی فکری آنها کار کنند.
یک برنامه کاربردی تنها زمانی خوب است که پاسخگوی نیازهای کاربران باشد. اگر برنامه نتواند به کاربران کمک کند تا مشکل خود را به شکل درست حل کنند، دیگر اهمیتی ندارد کدهای برنامه با چه کیفیت بالایی نوشته شدهاند. بهطوری که برنامه و کدهایش ارزش واقعی خود را از دست میدهند.
یک توسعهدهنده ارشد باید مهارتهایی را داشته باشد تا بتواند خود را به جای کاربر نهایی بگذارد و از دید او با برنامه کار کند. آنها باید درک کنند کاربر به دنبال آن است از نرمافزار آنها برای حل مشکلی استفاده کند.
8- میداند چگونه برآوردهای دقیقی انجام دهد
تخمین، یک فرآیند حیاتی در توسعه نرمافزارهای کاربردی است که تمام جنبههای مختلف یک پروژه را شامل میشود. مهارت برآورد و تخمین به دانش نظری و تجربه عملی نیاز دارد تا برآوردها تا حد امکان به واقعیت نزدیک باشند.
نکتهای که باید به عنوان توسعهدهنده ارشد به آن دقت کنید این است که برآوردهای نرمافزاری تحت تاثیر سناریوهای مختلف مثل، تنوع در توانایی تیم، محدودیتهای محیطی و غیره دستخوش تغییراتی میشوند. شناسایی و درک این عوامل کمک میکنند برآورد دقیقتری انجام دهید که نقش مهمی در تحویل به موقع محصول دارد.
متاسفانه، هیچ فرمول جادویی برای اندازهگیری کامل وجود ندارد و تنها باید بر مبنای تجربه و تخصص در برآورد مناسبی انجام دهید.
به همین دلیل، یک توسعهدهنده ارشد باید در تمام مراحل توسعه نرمافزار مشارکت داشته باشد و یاد بگیرد به چه صورت عوامل مختلف بر جدول زمانی تحویل پروژه تاثیرگذار هستند. این رویکرد کمک میکند از اشتباهات گذشته خود درس بگیرد و از این آموختهها برای افزایش دقت برآوردهای آینده خود استفاده کند.
9- سازگاری با محیط و تیمها را میداند
- سازگاری یکی از ویژگیهای شاخص توسعهدهندگان ارشد است. برای یک توسعهدهنده ارشد، اعتمادسازی اهمیت زیادی دارد. تیم باید به تواناییهای توسعهدهنده ارشد اطمینان داشته باشد. سازگاری نقش مهمی در حفظ ثبات و عملکرد تیم دارد. به طور خلاصه، یک توسعهدهنده ارشد باید به شکل مستمر بر تمام مهارتهای شرح داده شده در این مقاله متمرکز شود و اگر احساس کرد، کاستیهایی در این زمینه دارد به فکر برطرف کردن آنها باشد.
کلام آخر
در این مقاله سعی کردیم به معرفی مهارتهای ضروری بپردازیم که کمک میکنند به یک توسعهدهنده ارشد تبدیل شوید. البته، فهرست فوق کامل نیست و موارد وجود دارد که به آن اشاره نشد، اما، اگر بتوانید به فکر بهبود مهارتهای ذکر شده در انی مقاله باشید و به طور مداوم روی آنها کار کنید، مطمئن باشید در کار خود پیشرفت خواهید کرد.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟