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

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

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

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

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

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

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

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

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

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

How to Tell the Difference Between a Good Programmer and a Great One

0







  • بهزاد مرادی در تاریخ: 1395/02/22

    سلام
    ممنون از آقای صمدی
    به نظر من یکی از ویژگی های برنامه نویس های حرفه یی این است که اصلا «متعصب» نیستند. متاسفانه ما در جامعه ی خودمون می بینیم که برنامه نویس های اپن سورس، دات نتی ها رو مسخره می کنند و بالعکس.
    تعصب در هرچیزی من جمله توسعه ی نرم افزار باعث میشه که ما چشممون را رو به واقعیت ببندیم و صرفا در دانسته های خودمان به دنبال راه حل بگردیم.
    مثالی می زنم؛ اگر پی اچ پی بد بود، سایت هایی مثل فیسبوک و ویکیپدیا با این زبان پیاده سازی نمی شدند (البته بگیم که الان فیسبوک زبان تخصصی خودش رو به نام هک پیاده سازی کرده) و اگر هم دات نت بد بود، سایت های بزرگی مثل Digikala.com و Lynda.com و بسیاری سایت های دیگر با این پلتفرم پیاده سازی نمی شدند ...
    باز هم تشکر

    مرتضی صمدی در تاریخ: 1395/02/22

    سلام
    تشکر از انرژی مثبت شما
    در تایید نظرتون عرض کنم من خودم هم اصلا متعصب نیستم :|
    البته تعصبی که کنارش دانش کافی در مورد دو طرف قضیه باشه و صرفا از روی مخالفت با ندانسته های خودمون نباشه کمتر جای ایراد داره. به عنوان مثال نظر لینوس توروالدز در مورد C و C++
    چون در هر صورت ممکنه با یکی از این دو طرف بیشتر ارتباط برقرار کنیم. ولی باز هم این نظر یک شخص خاص هست و نمیشه تعمیم داد. با توجه به نظر بزرگترهای این زمینه میشه گفت هر زبون واسه یه سری اهداف بهتر جواب میده و مثلا نمیشه بهترین عملکرد رو از دوچرخه کورسی در کوهستان انتظار داشت

    بهزاد مرادی در تاریخ: 1395/02/22

    سلام مجدد
    موافقم با نظر شما

  • محمدامین در تاریخ: 1395/02/22

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

    ادمین سایت در تاریخ: 1395/02/23

    با سلام خدمت شما کاربر گرامی
    احتراما به استحضار می رساند که قبلا مقاله یی مرتبط با این موضوع در وبلاگ منتشر شده تحت عنوان "چرا برنامه نویسان می بایست از ماوس و کیبورد گیمینگ استفاده کنند؟" که از طریق لینک زیر می توانید به آن مراجعه نمایید:
    http://goo.gl/0hu5io

    امیدواریم که به هدف خود دست یابید
    ارادتمند
    تیم سکان آکادمی

  • کوروش در تاریخ: 1395/02/23

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

    مرتضی صمدی در تاریخ: 1395/02/23

    سلام.نظر لطف شماست. ممنون
    امید به اینکه مطالب ترجمه شده مفید باشه

از طریق این فرم، می توانید بدون ثبت نام نظر دهید و یا اگر قبلا ثبت نام کرده اید، با ورود ناحیه ی کاربری می توانید علاوه بر ثبت نظر، به مدیریت نظرات خود نیز بپردازید.
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)