اگر شما دستی هم بر هنر و هم کدنویسی داشته باشید، به خوبی میدانید که این دو گروه از مهارتها از این منظر مشابه یکدیگرند و آن هم چیزی نیست جز اینکه داشتن مهارتهای فنی خیلی زیاد در این دو حوزه هرگز منجر به ایجاد یک هنرمند بزرگ یا برنامهنویس حرفهای نمیشود! اگر کدنویسی یک دانش بود، تقریباً همهٔ دولوپرها میتوانستند با هم برابری کنند اما واقعیت امر آن است که درست مانند هنر و هنرمند، هیچ وقت دو دولوپر هنگامی که برای نتیجهای یکسان کد میزنند، دارای یک طرز تفکر یا رویکرد منطقی نیستند. در همین راستا، آنچه در این پست قصد داریم مورد بررسی قرار دهیم این است که چه ویژگیهایی هستند که منجر به ایجاد وجه تمایز مابین برنامهنویسان حرفهای از سایر برنامهنویسان میشوند.
پس از صحبت با مسئولین منابع انسانی برخی شرکتهای نرمافزاری، مشخص میشود که گفتن اینکه کدام برنامهنویس عالی و کدام یک خوب است به همان اندازه که در گذشته دشوار بود، در حال حاضر هم سخت است. بسیاری از شرکتهای نرمافزاری فرآیندی برای فیلتر کردن افراد از طریق تستهای مختلف دارند اما اگر برنامهنویسان را همچون هنرمندان در نظر بگیریم، آیا واقعاً میتوان از یک هنرمند امتحان گرفت؟ پاسخ بدون شک منفی است.
برنامهنویسهای عالی از چه ویژگیهایی برخوردارند؟
نوشتن کد خوب به تنهایی عامل قضاوت دربارهٔ خوبی یا بدی یک دولوپر نیست اما در عین حال تعدادی شاخص وجود دارند (به جز کیفیت کدنویسی) که برنامهنویسهای عالی را از خوبها جدا میکنند.
به طور کلی، هر کسی بتواند برنامهای بنویسد که به راحتی یک مسأله را حل کند، میتوان برچسب برنامهنویس روی وی زد. از طرفی، یک برنامهنویس خوب کسی است که برای ساخت برنامههای منطبق بر نیازهای مشتری و تحویل به موقع نرمافزار با میزان باگهای احتمالی کم تلاش کرده و در عین حال با دیگر دولوپرها همکاری کند و مسائل شخصی را در کار دخالت نمیدهد؛ اما کاری که یک برنامهنویس عالی انجام میدهد این است که:
- الگوریتمها و ساختارها را به طور ذهنی میفهمد
- میتواند سیستمهای بزرگ خودکاری بسازد که به نظارت کمی نیاز دارند
- الگوریتمهای جدیدی بسازد که سیستم را بهینهتر کنند
- سیستمهای در حال کار را بدون خراب کردن اصطلاحاً ریفکتور کند
- به طور مؤثر با همکاران غیرفنی در مورد مسائل فنی و غیرفنی ارتباط برقرار کند
- بفهمد چهطور در مقابله با افراد رفتار خود را کنترل کند
- دائما دانش خود را بهروز کند
- تعصب روی زبان یا تکنولوژی خاصی نداشته باشد
- و در نهایت بتواند مهارتهایش را به دیگران انتقال دهد
به نظر میرسد چنین فردی به محض رسیدن به این درجه از مهارت در حرفهٔ خود دیگر لازم نباشد تا تماموقت کدنویسی کند چرا از این بازه به بعد خواهد توانست بیشتر به صورت استراتژیک و به صورت یک مدیر ارشد فنی با شرکتها و تیمهای توسعهٔ نرمافزار برای توسعهٔ یک محصول خارقالعاده کار کند.
میل به کار کردن روی یک مسأله تا زمانی که حل شود (و نه توقف روی مسأله) به علاوهٔ توانایی حل خلاقانهٔ آن، یک مهارت بسیار مهم است که فقط در برنامهنویسهای ماهر یافت میشود. بنابراین در پاسخ به این سؤال که «چهطور یک دولوپر حرفهای را تشخیص دهیم؟» میتوان گفت که علاوه بر لیست فوق، این شخص میتواند به سرعت ریشهٔ مشکلات را پیدا کند و حتی اگر فوراً یک راهحل پیشنهاد نکند، اما در عین حال میتواند راهی را به سمت حل سریع و مؤثر مسأله بیابد.
به نظر شما چه ویژگیهای دیگری هستند که برنامهنویسان خوب را از برنامهنویسان بد متمایز میسازند؟ علاوه بر این، کدام دسته از سایر ویژگیها هستند که برنامهنویسان حرفهای را از برنامهنویسان خوب جدا میسازند؟ نظرات و دیدگاههای خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.