چطور یک برنامه نویس ماهر را از یک برنامه نویس خوب تشخیص دهیم؟

چطور یک برنامه نویس ماهر را از یک برنامه نویس خوب تشخیص دهیم؟

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

در حالی که بعضی افراد سعی می کنند نتیجه ی خواسته شده را به دست بیاورند، برای بعضی دیگر، بدیهی است که وقتی حالت روحی مناسب را پیدا کنند می نشینند و برای ساخت برنامه یا حل مساله فکر می کنند. Steve McConnell که یک متخصص مهندسی نرم افزار است در وبلاگی نوشته است تحقیقی که اختلاف فاحشی در بازدهی برنامه نویسی را مشخص کرد، در دهه 1960 توسط Sackman ،Erikson و Grant انجام شد. آنها دریافتند که نسبت زمان کدنویسی اولیه بین بهترین و بدترین برنامه نویس ها، حدودا 20 به 1 بود و این که هیچ ارتباطی بین میزان تجربه یک برنامه نویس با میزان کیفیت کدهایش یا بازدهی اش وجود ندارد! این تحقیق نقص هایی هم دارد، ولی حتی پس از بررسی مجدد، داده ها هنوز نشان می دهند بیش از 10 برابر اختلاف زمانی بین بهترین و بدترین برنامه نویس ها وجود دارد.

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

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

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

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

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

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

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

منبع


مرتضی صمدی