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

این موضوع می‌تواند به دو مولفه بسیار مهم مربوط باشد.

در واقع وجود برخی از ویژگی‌های مهم رفتاری و شخصیتی است که توسعه‌دهندگان نرم‌افزار بسیار موفق را از سایر افراد جدا می‌کند. علاوه‌براین، به جرئت می‌توان گفت تجربه حرف اول را در موفقیت هر شخص می‌زند. برای اثبات این موضوع به سراغ توسعه‌دهندگان و متخصصان نام‌آشنا در حوزه نرم‌افزار رفتیم و از عادات و خصوصیات فردی‌شان پرس‌وجو کردیم. در نهایت به ۱۰ عادت بسیار مهم رسیدیم که باعث شده‌اند این افراد روز به روز موفق‌تر شوند.

با ما همراه باشید تا این ۱۰ عادت مهم و موثر در موفقیت را با هم مرور کنیم:

۱. کدهایی تر و تمیز و چندبار مصرف بنویسید تا خواندن و آزمایش آنها آسان باشد.

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

اما به هر حال اصول پایه‌ای وجود دارند که این کار را برای‌تان آسان می‌کند. اندرو ماگی (Andrew Magee) مدیر توسعه‌دهنده نرم‌افزار Enigma Digital در انگلستان، نقطه شروع برای کدنویسی تمیز را این‌گونه تعیین می‌کند: « تنها و تنها یک هدف را برای هر تابع اختصاص دهید».

ماگی می‌گوید:« هنگامی که شروع به کدنویسی می‌کنید و کدها را پشت سر هم در داخل یک تابعی ردیف می‌کنید، تابع شما لحظه به لحظه بزرگتر و حجیم‌تر می‌شود». نحوه کدنویسی به این شکل در ابتدا بسیار ساده به نظر می‌رسد؛ اما در مقابل این کار هم خود شما و هم کسانی را که با کدتان سروکار دارند، با مشکل مواجه می‌کند. خواندن کد شما سخت‌تر می‌شود، استفاده مجدد از آن غیرممکن و آزمایش آن به مراتب مشکل‌تر می‌شود. پس به یاد داشته باشید که یک تابع فقط باید یک کار را انجام دهد. اگر بیش از یک کار انجام دهد، غیرمتمرکز و پیچیده می‌شود.  

همچنین، ماگی توصیه می‌کند که برای متغیرها و تابع‌ها، اسامی واضح و معنی‌داری را اختصاص دهید. او خاطر نشان می‌کند:« شما به عنوان یک توسعه‌دهنده نرم‌افزار باید زمان بیشتری را صرف خواندن کدتان کنید تا نوشتن آن. در حقیقت کد شما باید به گونه‌ای نوشته شود که وقتی پس از مدت زیادی، به سراغ آن کد می‌روید به راحتی درک کنید که منظور از هر خط از کدتان چیست». 

۲. باید بدانید که کد نوشته شده توسط شما به کسب‌وکار مورد نظرتان چه کمکی می‌کند.

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

خوزه میگوئل پرز (Jose Miguel Pérez)، مدیر ارشد فناوری در MarketGoo، نظر مشابهی را درباره این ویژگی از توسعه‌دهندگان بزرگ را به اشتراک می‌گذارد:« آنها می‌توانند قصد و هدف پروژه و تاثیر آن را بر روی کسب‌وکار به طور کامل درک کنند. همچنین از این موضوع آگاه هستند که کدی که نوشته‌اند، کسب‌وکار را به کدام هدف معین هدایت می‌کند».

علاوه‌براین، به گفته کلای اسمیت، مشاور توسعه‌دهنده New  Relic، یک توسعه‌دهنده موفق برای این‌که یک دید بهتر از تاثیر کد در یک مقیاس بزرگ‌تر داشته باشد، لازم است که ابتدا بر روی کاربر یا مشتری خود تمرکز کند.

۳. بیشتر از آن‌چه صحبت می‌کنید، گوش فرا دهید( یا حداقل قبل از صحبت کردن، خوب گوش کنید!).

کریستوفر مندی (Christopher Mendy)، رئیس توسعه‌دهندگان Evus Technologies می‌گوید:« اگر با سایر توسعه‌دهندگان در یک دفتر هستید، ابتدا خوب گوش کنید، سپس صحبت کنید. این سریع‌ترین راه برای یادگیری است». 

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

۴. دقیق و قانون‌مند باشید.

همه چیز تنها در استعداد خلاصه نمی‌شود. در واقع، استعداد یا مهارت تنها بخشی از فرمول موفقیت است. گدی پیتارو (Gady Pitaru)، مدیر ارشد فناوری در Badger Maps عنوان می‌کند که« برای رسیدن به موفقیت در کنار استعداد و مهارت، نظم و انضباط نیز لازم و ضروری است». یک مهندس نرم‌افزار که فاقد نظم و قانون‌مندی است، همانند ملوان کارکشته‌ای است که نقشه‌ای در دست ندارد. به عبارت دیگر مانند ملوانی است که قایق‌رانی را به خوبی بلد است، اما نمی‌تواند موقعیت ساحل را ردیابی کند. 

از نظر پیتارو یک مهندس نرم‌افزار دقیق و قانون‌مند کسی است که: 

۵. بر روی هدف‌تان کاملاً متمرکز شوید.

کاترین وو (Katherine Wu)، مهندس نرم‌افزار New Relic، یک شکل خاصی از نظم و انضباط را تعریف می‌کند که توسعه‌دهندگان بسیار موفق را هدف قرار داده است: توانایی تمرکز بر روی هدف مشخصی از پروژه، بدون حواس‌پرتی!

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

این در حالی است که توسعه‌دهندگان موفق تنها در راستای اهدافی که برای تمامی افراد تیم مشخص شده است، حرکت می‌کنند. آنها می‌دانند که این کار نیز همانند ورزش تیمی است و برای رسیدن به موفقیت همگی باید بر روی یک هدف مشخص تمرکز کنند».

۶. حلال مشکلات باشید.

مندی خاطرنشان می‌کند: «حل و فصل برخی از مشکلات بسیار سخت و طاقت‌فرساست. اما شما باید سرسخت باشید». با صرف زمان کافی برای تحقیق مطمئن باشید که بهترین راه‌حل را پیدا خواهید کرد. همچنین به یاد داشته باشید که حل یک مشکل سخت، همواره احساس خوشحالی و رضایت‌مندی را در پی دارد.

۷. در فضای مجازی به دنبال افراد متخصص باشید و از آنها کمک بگیرید.

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

مندی توصیه می‌کند: « در رابطه با هر مشکلی در گوگل جستجو کنید». تقریباً می‌توان گفت هر مشکلی که شما در برنامه‌نویسی با آن مواجه شده‌اید، پیش از شما فرد دیگری بوده است که با همان مشکل مواجه بوده و راه‌حل آن را پیدا کرده است. به طور معمول این سوال‌ها در تالار‌های گفتگو (forum) پرسیده شده و پاسخ آن به اشتراک گذاشته می‌شود. 

البته تصور نکنید که منظور از یافتن پاسخ در تالارهای گفتگو، عینا کپی-پیست کردن آنها مابین کدهای خودتان است. توری ویلدت (Tori Wieldt) مشاور توسعه‌دهنده New Rlic عنوان می‌کند که توسعه‌دهندگان بزرگ زمان معینی را صرف سردرآوردن از چگونگی، چرایی و کارایی کدهایی که به صورت آنلاین پیدا کرده‌اند، می‌کنند. او توصیه می‌کند: «خوب بخوانید و تحقیق کنید که کد مورد نظر چگونه کار می‌کند و چرا و چگونه مشکل شما را حل می‌کند». شما ممکن است بدون تحقیقی آن کد را به کدهای خود اضافه کنید و مشکل فعلی را حل کنید. اما این تنها مشکل شما در کدنویسی نخواهد بود. مشکلات دیگری نیز در مسیرتان سبز خواهند شد که ممکن است راه‌حل آنها بسته به تحقیق و یادگیری در همین مشکل فعلی‌تان باشد.

۸. برای این‌که در یک حوزه متخصص شوید، نیازی به تسلط در آن نیست.

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

پیتارو در Badger Maps تفاوت میان مهارت و تخصص را این‌گونه توضیح می‌دهد: «یک مهندس نرم‌افزار خوب، می‌تواند یک کوئری پایگاه‌داده Django را به هر شکلی که هست بنویسد؛ اما یک مهندس نرم‌افزار ماهر دقیقاً می‌داند که چگونه با کم‌ترین تعداد خطوط کد، کارآمدترین آن را در این راستا بنویسد».

بنابراین طبق گفته مندی، تصور نکنید که برای رسیدن به موفقیت باید در هر حوزه‌ای مسلط شوید. بلکه این روزها موفقیت تنها با آموزش و یادگیری مداوم امکان‌پذیر است.

۹. مفاهیم جدید و به‌روز را بپذیرید

می‌توان در ادامه گفته‌های مندی این مورد را نیز اضافه کرد که موفقیت با پذیرش مفاهیم جدید و به‌روز میسر می‌شود. پیتارو در این باره اظهار می‌کند که مهندسان نرم‌افزار موفق، به صورت دائمی درباره مفاهیم جدید در این حوزه می‌آموزند و آنها را به طور مستقیم در پروژه‌های خود به کار می‌گیرند. 

آنها برای این کار جدیدترین زبان‌ها، فریم‌ورک‌ها و روش‌ها را بررسی می‌کنند و بهترین‌شان را که در مسیر موفقیت به آنها کمک می‌کند، انتخاب می‌کنند و می‌آموزند. مسلم است که مهم‌ترین مهارت برای یک مهندس نرم‌افزار موفق، دانستن چگونگی کسب مهارت‌های جدید است.

در حقیقت، همان‌طور که پیتارو خاطرنشان می‌کند، یادگیری با کسب مدرک علوم رایانه‌ای یا عبارت “شما استخدام شدید” متوقف نمی‌شود. بلکه این امر باید مداوم و بی‌وقفه باشد. پس بهترین کار در این راستا این است که ذهن خود را به روی مسائل و مفاهیم جدید باز بگذارید. 

۱۰. موفقیت شما در سخت کوشیدن‌تان است.

یک نکته کلیدی که در این راستا وجود دارد این است که پیشرفت و کسب مهارت واقعی مستلزم تفکر عمیق در موضوع مورد نظر و پشت سر گذاشتن موانع است. این موانع ممکن است دشواری در برطرف‌ کردن یک خطا در کدتان باشد یا صدای اعلان دریافت یک پیام در شبکه‌های اجتماعی! هر دوی این اتفاق‌ها می‌تواند حواس شما را از موضوع اصلی پرت کند و تمرکزتان را به هم بزند. اما واقعیت این است که شما حتی اگر ایمیل یا کلیه شبکه‌های اجتماعی خود را نیز برای ساعاتی ببندید، باز هم مواردی وجود دارد که می‌تواند حواس‌تان را از موضوع مورد نظر دور کند. 

پس به یاد داشته باشید که تنها راه افزایش تمرکز و رهایی از موانع این است که روی پروژه‌هایی کار کنید که برایتان مشکل‌اند. حتی اگر این کار باعث شود ساعت‌ها مشغول برنامه‌نویسی باشید و بارها و بارها یک خط کد را از نو بنویسید. درست است که این‌کار می‌تواند روند پیشرفت شما را با کندی سرعت مواجه کند، اما در نهایت با افزایش تمرکز و توانایی تفکر عمیق می‌توانید در مدت زمان بسیار کم، بزرگ‌ترین خطاها را برطرف کنید و به یکی از موفق‌ترین توسعه‌دهندگان نرم‌افزار بدل شوید.

 

منبع: blog.newrelic.com