برنامه نویس عالی نادر است، بهرهوری آنها ۳ برابر یک برنامه نویس متوسط و ۱۰ برابر یک برنامه نویس بد است. این برنامهنویسان عالی که ۱ درصد از کل افراد این حوزه را تشکیل میدهند، تنها کدنویس نیستند، بلکه دارای ویژگیهای نامشهود و مهم دیگری نیز میباشند. بعد از همکاری با بیش از ۱۰۰۰ برنامهنویس، ما توانستیم ۷ ویژگی که یک برنامه نویس عالی را از یک برنامه نویس خوب جدا میکند، شناسایی کنیم.
۱. دارای مهارتهای ارتباطی خوبی هستند
مهارتهای ارتباطی خوب، ارتباط مستقیمی با مهارتهای فنی دارند. یک برنامه نویس عالی قادر است مشکلات را به وضوح درک کند، آنها را به بخشهای کوچکتری تقسیم کند و راهحلهای منسجمی برای حل آنها ارائه دهد. آنها مفاهیم را به سرعت درک میکنند سوالات صحیحی را برای درک مسائل مختلف میپرسند. همچنین برنامهنویسان عالی معمولا به چندین زبان مختلف مسلط هستند و از نظر زبان هیچ مشکلی در روابط خود ندارند.
فن بیان قوی و روابط اجتماعی بالا از ویژگیهای مهمی است که یک برنامه نویس عالی را از سایر همکاران خود جدا میکند.
چگونه این مهارت را در افراد امتحان کنیم؟
- یک جلسه اسکرام را شبیهسازی کنید و ببینید که چگونه با آن تعامل دارند؟
- برای آنها یک سناریو/مشکل را تعریف کنید و بررسی کنید که چگونه میتوانند ارتباط موثر برقرار کنند.
۲. در مدیریت زمان و کارها خوب عمل میکنند
برنامهنویسان حرفهای بسیار قابلاعتماد هستند. آنها اخلاق کاری زیادی دارند و به موقع در جلسات حضور مییابند. یک مهارت مهم برای یک برنامه نویس توانایی تخمین مقدار زمان لازم برای انجام یک کار است. برنامهنویسان استثنایی مشتریان را به بهترین شکل مدیریت میکنند؛ بهجای اینکه مشتریان آنها را مدیریت کنند.
چگونه این مهارت را در افراد امتحان کنیم؟
یک راه خوب برای آزمایش هر توسعهدهنده در مورد وجود ویژگیهای بالا، بستن یک قرارداد کوتاهمدت با برنامه نویس و ارزیابی دورهای او است. به شکلی که در این ارزیابی تمامی بازخوردهای خود را درباره برنامه نویس ارائه میدهید. باید نقاط ضعف و قوت او را به سرعت تشخیص دهید و اگر در عملکرد او مشکلی دیدید، تصمیم به فرصت مجدد یا قطع همکاری بگیرید.
۳. دارای مهارت یادگیری سریع هستند
برنامهنویسان بزرگ معمولا خودآموزان شگفتانگیزی هستند. آنها توانایی یادگیری فناوریهای نوین را دارند و با به میدانآمدن فناوریهای جدید از دور خارج نمیشوند. هر برنامهنویسی در طول دوران فعالیت خود مواقعی را تجربه میکند که جواب سوالی را نمیداند. برنامهنویسان حرفهای منابع مختلفی را پیدا میکنند، با افراد مناسب گفتگو میکنند و برای مشکل بوجودآمده راهحلی مناسب را ارائه میدهند. بهترین مهارتی که هر فرد میتواند بدست بیاورد، دانستن نحوه یادگیری است و برنامهنویسان بزرگ به این مسئله کاملا مسلط هستند.
چگونه این ویژگی مهارت را در افراد امتحان کنیم؟
- ترتیبدادن یک مصاحبه ساختاری رفتاری
- سپردن یک پروژه پیچیده به فرد و بررسی میزان استفاده از منابع در حین انجام پروژه
۴. تجربه فنی زیاد و عمیقی دارند
یکی از ویژگیهای برنامهنویسان حرفهای این است که آنها در فناوریهای محدودی عمیق شدهاند. یعنی زمان طولانی را برای یادگرفتن هر زبان برنامهنویسی صرف کردهاند و بجای یادگرفتن سطحی تعداد زیادی از آنها، تعداد محدودی را به صورت حرفهای فرا گرفتند. پیداکردن برنامهنویسی که روی محصولی مشابه محصول شما کار کرده باشد بسیار مهم است زیرا آن فرد بهترین فناوریها برای زمینه کاری شما را میشناسد. برنامهنویسی که از تجربه فنی زیادی برخوردار باشد، استانداردهای کدنویسی را رعایت میکند و کدی را مینویسد که برای برنامهنویسان دیگر نیز قابل درک باشد.
برنامهنویسان باتجربه به بهترین روشها مانند توسعه چابک، نرمافزارهای مدیریت وظایف(جیرا، ترلو، اسلک و …) و نرمافزارهای کنترل نسخه( اگر آنها Git را بشناسند، احتمالا با سیستمهای قدیمیتری مانند SVN نیز آشنا هستند) مسلط باشد.
و چگونه این مهارت را در افراد امتحان کنیم؟
۱. نمونه کار قبلی آنها را درخواست کنید
بررسی کنید که آیا میتوانند محصولات قبلی خود را که ساخته شدهاند به نمایش بگذارند؟ از آنها بخواهید تا تصاویری از پیشرفت پروژه گذشته خود را برای شما ارسال کنند
۲. با کارفرما یا رئیس قبلی صحبت کنید
صحبت با کارآفرینان یا CTO هایی که برای آنها کار کردهاند نشان از مهارت فنی و سایر خصوصیات جزئی آنها خواهد داشت.
۳. چالشهای برنامهنویسی
اگرچه بیشتر چالشهای کاری، شباهتی با چالشهای برنامهنویسی موجود در سایت CodeEval ندارد اما اگر یک برنامهنویس بتواند در زمان کوتاهی و با استفاده از الگوریتمی هوشمندانه، برخی از این مسائل را حل کند، میتوانید مطمئن شوید که با یک فرد باهوش و باتجربه سروکار دارید.
۵. توانایی کار تیمی دارند
یکی از ویژگیهای مهم برنامهنویسان برتر، توانایی آنها برای کمک به هم و سایر برنامهنویسان است. آنها در هنگام بروز مشکل، به همتیمیهای خود مهارتهای جدیدی را آموزش میدهند و حتی میتوانند مستنداتی بنویسند که نهتنها به همتیمیها کمک کند، بلکه در سازمان خود یا در قالب کلیتر در جامعه برنامهنویسان نیز به عنوان یک راهنما از آن استفاده شود.
میتوانید چالشی را تعریف کنید و از آنها بخواهید تا با رعایت اصول کار گروهی راهکاری را برای حل مشکل پیدا کنند.
۶. دارای توانایی تمرکز بر کاربر نهایی هستند
یک برنامه نویس خوب آنچه را که از او خواسته میشود، انجام میدهد. در حالیکه یک برنامه نویس عالی به کاربر نهایی نرمافزار فکر میکند و تلاش میکند تا با حل مشکلات احتمالی آنها، تجربه کاربری بهتری را رقم بزند. برنامهنویس حرفهای میخواهد مطمئن شود که هر ویژگی از نرمافزار در حال ساخت، ارزشی را برای کاربر ایجاد میکند تا اگر بخشی از نرمافزار ارزشی را خلق نمیکرد، آن را حذف کنند.
از آنها بخواهید تا در حین انجام پروژه، لیستی از مشکلات احتمالی که کاربران با نرمافزار خواهند داشت را بنویسند و بررسی کنید که تا چه اندازهای توانستهاند نیازهای کاربران را شناسایی کنند.
۷. به کار اهمییت میدهند
ویژگی یک برنامه نویس عالی این است که به محصول شما اهمیت میدهد. آنها شخصیتی مثبت دارند و در راه انجام پروژه شما تمام تلاش خود را به کار میگیرند تا بهترین کار خود را تحویل دهند. آنها معمولا زمانی را برای بررسی هویت برند شما اختصاص میدهند تا محصولی را تحویل دهند که بیشترین تطابق را با آن داشته باشد.
موارد دیگری که باید در نظر بگیرید:
۱. تخصص همه چیز نیست!
در نظر داشته باشید که تخصص مهم است اما نباید تنها معیار شما برای استخدام افراد باشد. شخصی که توانایی یادگیری سریع و نگرش عالی را دارد و از مهارتهای رهبری نیز برخوردار است، حتی اگر مهارت فنی کمتری نیز داشته باشد، بازهم از ارزش بیشتری نسبت به فردی که تنها تخصص فنی دارد، برخوردار است. این فرد با یادگیری میتواند مهارتهای خود را بهبود ببخشد و با نگرش خود میتواند راهکارهایی خلاقانه ارائه دهد. بنابراین داشتن تخصص تنها معیار برای انتخاب فرد مناسب نمیباشد و موارد دیگری نیز باید در نظر گرفته شود.
۲. به اندازه شرکت خود نگاه کنید
اهمییت تمامی ویژگیهایی که ذکر شد بر اساس اندازه شرکت شما متفاوت است. شرکت های بزرگ غالبا به دنبال مجموعهای از مهارتهای خاص هستند زیرا موقعیت آنها ثابتتر است. با این حال برای استارتاپها که در وضعیت عدم قطعیت به سر میبرند، توانایی حل مساله، یادگیری فناوریهای جدید و توانایی کار تیمی میتواند از اهمییت بیشتری برخوردار باشد. در کل باید با در نظر گرفتن شرایط و نیازهای شرکت خود مهارتهای لازم را لیست کنید و بر اساس آن به جستجوی افراد مناسب بپردازید. ( کتاب هایی در رابطه با ویژگی که یک برنامه نویس عالی را از یک برنامه نویس خوب متمایز میکند بخوانید.)
چگونه بعضی از افراد به برنامهنویسان فوقالعادهای تبدیل میشوند؟
۱. تحصیلات: خوب یا بد
امروزه لازم نیست تا برای تبدیل شدن به یک برنامه نویس حرفهای به کلاسهای حضوری بروید. با دسترسی به دورههای آنلاین میتوانید بروزترین فناوریها را به سادگی فرا بگیرید. با این وجود بسیاری از برنامهنویسان حرفهای دارای تحصیلات آکادمیک در این حوزه نیز بودهاند. گرفتن مدرک در رشته علوم رایانه، هرچند نیاز اصلی نیست اما به درک بهتر معماری کامپیوتر کمک میکند، چشمانداز کاملی را از دنیای برنامهنویسی به شما میدهد و همگامسازی با جدیدترین فناوریها به منظور بروز ماندن را برای شما آسانتر میکند.
برای پیشرفت در این حوزه باید مقالات و وبلاگهای زیادی راجع به آخرین فناوریها بخوانید، گجتهای جدیدی را که به بازار عرضه میشوند امحان کنید، اجتماعات را دنیال کنید، در کنفرانسها و سمینارها شرکت کنید و با نوشتن، ارزش خود را به جامعه اضافه کنید
۲. قلب خود را دنبال کنید
۳. تجربه بدست آورید
در حین شروع کار، شغل خود را تنها بهخاطر درآمد بالا انتخاب نکنید. شغلی را انتخاب کنید که به شما در کسب تجربه در یک دوره زمانی کوتاه کمک کند. حتی اگر هیچ مبلغی در ازای آن به شما پرداخت نشود. تلاش کنید تا برای یک استارتاپ یا یک شرکت بزرگ کار کنید و ان تجربه را بسازید.
۴. جعبه ابزار خود را شکل دهید
فناوری به سرعت در حال تغییر است. پلتفرمهای جدیدی ساخته میشوند، زبانهای جدیدی توسعه داده میشوند و محصولات با سرعت شگفتانگیزی ساخته میشوند. بنابراین مهم است که با این تغییرات سازگار باشید و آنها را بپذیرید. آنها ساخته میشوند تا کار را برای شما آسانتر کنند. بروزترین ابزارها را انتخاب کرده و جعبه ابزار خود را تشکیل دهید. یک برنامهنویس حرفهای ابزارهای جدید را به سادگی فرا میگیرد و با آن چیزهای جدیدی را خلق میکند.
نتیجه
کمبود استعداد در جذب افراد، باعث شده است تا شرکتها نتوانند برای نیازهای خود متخصصان مناسبی را استخدام کنند. بهعنوان یک مدیر تلاش کنید تا با در نظر گرفتن اصول ذکر شده در این مقاله، افراد مدنظر را استخدام کرده و به رشد و توسعه سازمان خود کمک کنید. همچنین ویژگی های یک مدیر خوب در مقابل ویژگی یک برنامه نویس خوب را از یاد نبرید.