چگونه یک دولوپر ماهر را از یک دولوپر خوب تشخیص دهیم؟

چگونه یک دولوپر ماهر را از یک دولوپر خوب تشخیص دهیم؟

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

در حالی که بعضی افراد سعی می کنند نتیجهٔ خواسته شده را به دست بیاورند، برای بعضی دیگر بدیهی است که وقتی حالت روحی مناسب را پیدا کنند، می‌نشینند و برای ساخت برنامه یا حل مسأله فکر می کنند. Steve McConnell که یک مهندس نرم‌افزار است، به این نکته اشاره می‌کند که تحقیقی که اختلاف فاحشی در بازدهی دولوپرها را مشخص می‌کرد، در دههٔ 1960 توسط Sackman ،Erikson و Grant انجام شد.

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

به گفته مسؤلین شرکت Arkenea که بیش از 5 سال سابقهٔ استخدام توسعه‌دهندگان را دارد، گفتن اینکه کدام برنامه‌نویس عالی و کدام یک خوب است به همان اندازه که در گذشته دشوار بود، در حال حاضر هم سخت است. جالب است بدانیم که این چالش مخصوص این شرکت نیست. تعداد زیادی کسب‌وکار و شرکت بزرگ در صنعت توسعهٔ نرم‌افزار هستند که با همین مسأله دست و پنجه نرم می‌کنند. بسیاری از آنها فرآیندی برای فیلتر کردن افراد از طریق آزمایش‌های مختلف ساخته‌اند، اما اگر برنامه‌نویسان را همچون هنرمندان در نظر بگیریم، آیا واقعاً می‌توان از یک هنرمند امتحان گرفت؟ پاسخ بدون شک منفی است.

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

به طور کلی، هر کس بتواند برنامه‌ای بنویسد که به راحتی یک مسأله را حل کند، می‌توان برچسب برنامه‌نویس روی وی زد. از طرفی، یک برنامه‌نویس خوب کسی است که برای ساخت برنامه‌های منطبق بر نیازهای مشتری و تحول به موقع نرم‌افزار با میزان باگ‌های احتمالی کم تلاش کرده و در عین حال با دیگران همکاری کند و مسائل شخصی را در کار دخالت نمی‌دهد اما کاری که یک برنامه‌نویس ماهر انجام می‌دهد این است که:
- الگوریتم‌ها و ساختارها را به طور ذهنی می‌فهمد 
- می‌تواند سیستم‌های بزرگ خودکاری بسازد که به نظارت کمی نیاز دارند 
- الگوریتم‌های جدیدی بسازد که سیستم را بهینه‌تر کنند 
- سیستم‌های در حال کار را بدون خراب کردن اصطلاحاً Refactor کند 
- به طور مؤثر با همکاران غیرفنی در مورد مسائل فنی و غیرفنی ارتباط برقرار کند 
- بفهمد چه‌طور در مقابله با افراد رفتار خود را کنترل کند 
- دائما دانش خود را به روز کند
- تعصب روی زبان یا تکنولوژی خاصی نداشته باشد
- و در نهایت بتواند مهارت‌هایش را به دیگران انتقال دهد

به نظر می‌رسد چنین فردی به محض رسیدن به این درجه از مهارت در حرفهٔ خود دیگر لازم نباشد تا تمام وقت کدنویسی کند؛ این شخص می‌تواند بیشتر به صورت استراتژیکی و به صورت یک مدیر ارشد فنی با شرکت‌ها و تیم‌های توسعهٔ نرم‌افزار برای جهت دادن به تولید محصولات کار کند.

میل به کار کردن روی یک مسأله تا زمانی که حل شود (و نه توقف روی مسأله) به علاوه توانایی حل خلاقانهٔ آن، یک مهارت بسیار مهم است که فقط در برنامه‌نویس‌های ماهر یافت می‌شود. بنابراین در پاسخ به این سؤال که چه‌طور یک دولوپر حرفه‌ای را تشخیص دهیم؟ می‌توان گفت که این شخص می‌تواند به سرعت ریشهٔ مشکلات را پیدا کند؛ شاید فوراً یک راه‌حل پیشنهاد نکند ولی می‌تواند راهی را به سمت حل سریع و مؤثر مسأله پیدا کند.

به نظر شما چه ویژگی‌های دیگری هستند که برنامه‌نویسان خوب را از برنامه‌نویسان بد متمایز می‌سازند؟ علاوه بر این، کدام دسته از سایر ویژگی‌ها هستند که برنامه‌نویسان حرفه‌ای را از برنامه‌نویسان خوب جدا می‌سازند؟ نظرات و دیدگاه‌های خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.

منبع


مرتضی صمدی