چرا کد زدن دیگه کافی نیست؟! (قسمت نهم)

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