برنامه‌نویسان حرفه‌ای چه می‌کنند

نویسنده : سید ایوب کوکبی ۳۰ مرداد ۱۳۹۸
برنامه‌نویسان حرفه‌ای چه می‌کنند

هیچ چیزی جلودار برنامه‌نویسانِ حرفه‌ای نیست. آن‌ها تحت هر شرایطی مسیرِ پیشرفتشان را طی می‌کنند. این افراد ۲۹ کار را متفاوت از دیگران انجام می‌دهند و نقطۀ تمایزشان دقیقاً همینجاست.

۱- به طورِ حرفه‌ای از گوگل استفاده می‌کنند

یک توسعه‌دهندۀ حرفه‌ای باید تکنیک‌های تحقیق و پژوهش را به خوبی بلد باشد. جستجو در اینترنت کارِ به ظاهر ساده‌ای است ولی در عمل فوت‌وفن‌های زیادی دارد. اگر چیزی پیدا نمی‌کنید مشکل از جستجوی شماست؛ یا ترفند بلد نیستید یا خلاقیتِ کافی ندارید.

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

۲- همیشه مبتدی هستند!

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

۳- به تصمیماتِ کوچک توجه دارند

هنگامِ کدنویسی حتی وقتی می‌خواهید یک فیچرِ ساده اضافه کنید لازم است تصمیم بگیرید. نام‌گذاریِ متغیرها، فرخوانی توابع، نام‌گذاریِ پراپرتی‌های CSS، از آرایه استفاده کنم یا از هش؟ از چه تایپی برای این متغیر استفاده کنم؟ این قسمت را در یک کلاسِ جدید قرار دهم یا همینجا بنویسم؟ از معماریِ MVC استفاده کنم یا MVVM؟ تنظیماتِ برنامه را در کانفیگ قرار دهم یا فلان جا ذخیره کنم؟ همۀ این‌ها تصمیماتِ کوچکی است که مدام با آن‌ها درگیر هستید. هر یک از این‌ تصمیمات لحظاتی وقفه در کارتان ایجاد می‌کند و در دراز مدت متوجه خواهید شد که چقدر وقت صرفِ همین کارهای کوچک شده است.

تازه‌واردین اغلب توجهی به این مسائل ندارند؛ ولی برنامه‌نویسانِ حرفه‌ای برای کارهای روتین الگو تعریف می‌کنند تا زیادِ درگیر تصمیماتِ روتین نشوند و هر زمان به وقفه‌ای برخوردند با مراجعه به شیوه‌نامه‌ای که از قبل تهیه شده تصمیمِ درست را می‌گیرند. مثلاً در نام‌گذاری متغیرها از camelCase استفاده شود یا عنوانِ کامیت‌های ارسالی به زمانِ حال باشد و با فعل امری آغاز شود. شیوه‌نامه روشی برای تصمیم‌گیری سریع‌ است.

۴- توجهِ زیادی به تصمیمات کلان ندارند

در فرایندِ توسعه معمولاً به تصمیماتِ کلانی برخورد می‌کنید که از قضا بخشِ عمدۀ سوال و دغدغه‌های افرادِ مبتدی را تشکیل می‌دهد. مثلاً اگر قرار باشد از روشِ TDD استفاده کنید با ابزارهای مختلفی مواجه می‌شوید که ممکن است در انتخاب سرگردان شوید. اینترنت پر است از مقایسه‌های فلان vs فلان.

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

۵- از ابزارهای مناسب استفاده می‌کنند

کتابخانه‌ها، فریم‌ورک‌ها و ابزارهای مختلفی وجود دارد. توسعه‌دهندگان حرفه‌ای دقیقاً می‌دانند که به دنبال چه هستند و از چه چیزی باید استفاده کنند. و این موضوع به آن‌ها کمک می‌کند تا انتخاب‌هایشان را بین ۲ یا ۳ مورد محدود کنند و سریعاً گزینۀ مناسب را انتخاب کنند. آن‌ها اگر بدانند ابزاری به بهره‌وریِ آن‌ها کمک می‌کند سختیِ یادگرفتنش را به جان می‌خرند.

۶- حذفِ کدها را اتلافِ زمان نمی‌دانند

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

بخوانید  Junior | Mid-Level | Senior

۷- تکنولوژی‌ها را همه‌جانبه می‌سنجند

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

۸- راحت می‌گویند: «نمی‌دانم»

بعضی از برنامه‌نویس‌ها علاقه‌ای به گفتنِ نمی‌دانم ندارند. برنامه‌نویسانِ حرفه‌ای ارزشِ خود را صرفاً وابسته به اطلاعاتی که حفظ کرده‌اند نمی‌دانند. یک توسعۀدهندۀ خوب می‌داند که هیچ یک از تکنولوژی‌ها (زبان‌های برنامه‌نویسی، فریم‌ورک‌ها، کتابخانه‌ها و …) ارزشِ همیشگی ندارند و صرفِ تسلط به آن‌ها هیچ برنامه‌نویسی را واقعاً برنامه‌نویس نمی‌کند. هر آن ممکن است فردا با گزینۀ دیگری جایگزین شود.

درکِ حرفه‌ای‌ها از برنامه‌نویسی فراتر از ابزارها، فریم‌ورک‌ها و زبان‌هاست. آن‌ها به خاطرِ اینکه با چند ابزار بلدند کار کنند حرفه‌ای نیستند. آن‌ها حرفه‌ای هستند چون به هیچ ابزاری وابسته نیستند و فراخورِ نیاز هر زمان می‌توانند به ابزارها و تکنولوژی‌های جدید سوئیچ کنند. به همین خاطر از گفتنِ «نمی‌دانم» واهمه‌ای ندارند.

۹- خطاها را چراغِ راه می‌دانند نه بن‌بست

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

  • پیامِ خطا: که با یک جملۀ کوتاه مشکل را بیان می‌کند؛
  • و بخشِ مهم‌تر Call Stack: که دقیقاً شما را به خطی که باعث و بانیِ مشکل شده می‌برد و اینکه چرا اجرا شده را هم می‌گوید.

توسعه‌دهنده بارها و بارها ممکن است با یک خطایِ مشابه مواجه شود. شما باید روی حلِ مشکل و چرایی حلِ مشکل تمرکز کنید. این کار به شما کمک می‌کند تا خطاهای مشابه در آینده با سرعتِ بیشتری حل شوند.

۱۰- فرقِ بهینه‌سازیِ زودهنگام و بهینه‌سازی به موقع را می‌دانند

معمولاً به دو روش می‌توان کدنویسی کرد:

  • روشِ اول: کدنویسی به سرراست‌ترین روشِ ممکن؛
  • روشِ دوم: کدنویسی به روشی گیج‌کننده ولی سریع‌تر.

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

۱۱- اشتباهاتشان را گردن می‌گیرند

اشتباهات همیشه پیش می‌آیند؛ به‌خصوص در کارهایِ تیمی. اغلبِ مشکلاتِ به وجود آمده در کارهایِ تیمی مربوط به کد نیست؛ بلکه بیشتر به خاطرِ برداشتِ و درکِ اشتباه بین اعضای تیم است. در چنین شرایطی معمولاً نه یک نفر که چندین نفر مسببِ بروز مشکل هستند. با این حال برنامه‌نویسانِ حرفه‌ای کلِ زندگیِ خود را مثلِ یک رانندۀ خودرو می‌گذرانند. تقریباً ۱۰۰ درصدِ مشکلات را ناشی از رفتارِ خود می‌دانند. آن‌ها فرصتِ خود را بیهوده صرفِ به گردنِ دیگران انداختنِ مشکلات نمی‌کنند و بدون توجه به افکارِ بقیه روی چیزی که در کنترل دارند تمرکز می‌کنند: یعنی کد.

۱۲- ابزارهای توسعه را خوب بلدند

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

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

۱۳- کار با Vim را بلدند (حتی شده کمی)

شما حتی برای کمی هم شده باید با این ادیتورِ خودتان را عادت دهید. شاید شما و هیچ توسعه‌دهنده‌ای برای کدنویسی از این برنامه استفاده نکند ولی بی‌اطلاع بودن از آن هم شایسته نیست؛ حداقل به عنوان یک چالش امتحانش کنید.

۱۴- هیچگاه پروژه‌هایی که شناختی از تکنولوژی‌هایش ندارند بر نمی‌دارند

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

۱۵- تعداد ساعات را نمی‌شمارند

یک روزِ کاری معمولاً صرفِ انجامِ دو کار می‌شود:

  • کارهای عمیق: کارهایی که انجامشان نیازمند تمرکز و دقت بسیار زیاد است؛ کارهایی که سخت‌ترین وظایفِ روزانۀ شما را تشکیل می‌دهد و معمولاً به مهارت‌های بیشتر و سخت‌تری نیاز دارد؛
  • کارهای روتین: وظایفی را شامل می‌شود که نیازی به تمرکزِ زیاد یا استفاده از مهارت‌های سخت ندارد.

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

۱۶- انتقادپذیر هستند

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

۱۷- دو نفره کد می‌نویسند

برنامه‌نویسیِ دونفره یا جفتی (Pair programming) یکی از روش‌های برنامه‌نویسی در متدِ XP از پاردایم توسعۀ چابک (Agile) است که همزمان دو نفر پشتِ سیستم برنامه‌نویسی می‌کنند. در این روش یکی از برنامه‌نویس‌ها کد می‌نویسد و دیگری همزمان Code Review می‌کند. این افراد به فراخورِ نیاز به صورتِ دوره‌ای جایشان را با هم عوض می‌کنند. متدِ XP به طرفینِ درگیر در کدنویسی چیزهای زیادی یاد می‌دهد چون آناً بازخوردها از سوی شخصِ مقابل داده می‌شود و در واقع یادگیری درلحظه است. این موضوع ماندگاریِ آموخته‌ها را دو چندان می‌کند.

۱۸- ابتدا خودشان کدها را بازبینی می‌کنند

قانونِ ساده‌ای وجود دارد: پیش از اینکه دیگران به حسابِ شما برسند خودتان به حسابِ خودتان برسید! بسیاری از ما در مورد کدِ دیگران نظر می‌دهیم ولی همین که نوبتِ کد خودمان می‌شود سهل‌انگاری می‌کنیم. قبل از اینکه کدی را در گیت‌هاب کامیت کنید ابتدا خودتان از دیدِ انتقادی به آن نگاه کنید، انگار که کدِ یک نفرِ دیگر است. با در نظر گرفتنِ این نکات، جلوی بسیاری از بازخوردهای منفی گرفته می‌شود.

۱۹- می‌دانند که سخت‌ترین بخشِ فریلنسینگ کدنویسی نیست

نرخِ بالای برخی از فریلنسرها به خاطرِ سخت بودن کدنویسی نیست بلکه بیشتر به خاطرِ سختی مدیریتِ کارهاست. فروش، بازاریابی، پشتیبانی، تضمینِ کیفی و مدیریت محصول، همۀ این‌ها وقت می‌گیرد و مسلماً هزینه دارد.

۲۰- مشکلاتِ اصلی را شناسایی می‌کنند

توسعه‌دهندگانِ باتجربه می‌دانند که چطور خود را درگیرِ مسائلِ کوچک و حاشیه‌ای نکنند و روی مسائلِ اصلی و بزرگ تمرکز کنند. آن‌ها در ارائۀ راهکارها همیشه دیدِ بلندمدت دارند.

چند نمونه از مسائلِ بزرگ:

  • کار در آخرِ هفته برای عقب نماندن از برنامه؛
  • وجودِ باگ در برنامه و ضرورتِ ارائۀ هر چه سریعتر هات فیکس‌ها؛
  • از کار افتادنِ مکررِ سایتِ برنامه؛
  • مطرح شدن نیازهایی با اولویت بالاتر درست قبل از پیاده‌سازی فیچرهای فعلی.

با یادگیری چگونگی برخورد با این مسائل، رفته رفته به یک برنامه‌نویسِ حرفه‌ای تبدیل می‌شوید.

۲۱- از آموختن چیزهای جدید واهمه ندارند

بعید نیست که تا الان اسمِ Monkey Patch به گوشتان نخورده باشد. برای این کار توسعه‌دهنده باید آشنایی خوبی با فریم‌ورکی که در آن کد می‌نویسد داشته باشد. خیلی از برنامه‌نویس‌ها از یاد گرفتن چیزهای جدید متنفرند. اما آن‌ها که می‌خواهند حرفه‌ای شوند نباید از این کار واهمه داشته باشند.

بخوانید  9 ماهه مهندس نرم‌افزار شدم

۲۲- کم‌حرف هستند و کاری!

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

۲۳- به وقتش به دیگران یاد می‌دهند

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

یادتان نرود: زکاتِ علم آموختنِ آن است.

۲۴- کدِ بد هم می‌نویسند

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

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

۲۵- تلاششان را به دیگران نشان می‌دهند

اگر تا دیروقت در محلِ کار می‌مانید با ارسالِ ایمیلی به همراهِ یک آپدیت به دیگران نشان دهید که دلیلِ دیر وقت ماندنِ شما سخت‌کوشی است نه حماقت!

۲۶- رهبرند نه رئیس

برنامه‌نویسانِ حرفه‌ای رهبر هستند نه رئیس. بین این دو فرق هست:

  • رئیس فردی است که مردم برایش کار می‌کنند؛
  • لیدر (رهبر) فردی است که حرفش برای دیگران قابلِ احترام است.

برنامه‌نویسانِ حرفه‌ای گرچه عناوینی مثلِ رئیس یا رهبر ندارند ولی همۀ اعضای تیم در نهایت به تصمیماتِ او چشم می‌دوزند. رهبر هر چه بگوید همان می‌شود. مدیران فقط به گفتن چیزهایی که ممکن است در تئوری درست باشد اکتفا می‌کنند.

۲۷- بازی می‌کنند

در درازمدت برقراری ارتباط با سایرِ توسعه‌دهنده‌ها (و سایرِ افراد در نقش‌های دیگر) ارزشمندتر از اضافه کردن یک فیچرِ جدید به برنامه است.

۲۸- در شرایطِ سخت هم از یادگرفتن دست بر نمی‌دارند

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

۲۹- اشتباه را مرادفِ شکست نمی‌دانند

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

منبع: Medium

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *