بهمن ۱۶، ۱۳۹۶ ۱۸:۵۶ برنامه نویسی
مدیرم سال ‌های قبل گفت: «گند زدی راوی. هر روز داری بیشتر از قبل مشکل درست می کنی».

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

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

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

در حالی که جلوی خودم را گرفته بودم که از اتاق بیرون نزنم، به او اجازه دادم دلایلش را بگوید

کدهای من بهترین هستند

حق با فردریش نیچه بود که گفت: «هربار که پیشرفت میکنم سگی به نام غرور به دنبالم می‌ آید».

افرادی که همه تیم ها به آن‌ها نیاز دارند افرادی فروتن، مشتاق و باهوش هستند: فروتن یعنی غرور و منیت کمی داشته و بیشتر از خودش، روی هم تیمی هایش تمرکز کند. مشتاق یعنی دارای وجدان کاری بالا بوده، در انجام و تکمیل کارها مصمم باشد و هر طور بتواند همکاری کند. باهوش نه به معنای هوش فکری بلکه به معنای هوش درونی و فردی.

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

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

می توانم این را در یک لحظه درست کنم

آنجلا داک من یک بار گفت: «هیچ راه میانبری برای عالی شدن وجود ندارد».

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

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

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

 

من همه چیز به یادم می ماند و نیازی به مستندسازی ندارم

دیک براندون در این باره گفته است: «مستندسازی مانند رابطه جنسی است؛ وقتی خوب باشد خیلی خیلی خوب است و وقتی بد باشد از هیچی بهتر است»

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

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

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

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

تقصیر من نبود

بروس لی در این مورد می گوید: «اشتباهات همیشه قابل بخشش هستند در صورتی که فرد شهامت پذیرفتن آن را داشته باشد».

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

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

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

آنچه از نظر شما تمام شده است هنوز ناتمام است

ریک لمونز در این باره به نکته درستی اشاره می‌کند و می‌گوید: «از کاربر نخواهید اطلاعاتی ارائه دهد که سیستم از قبل می داند».

اگر برنامه نویسی مانند رابطه جنسی بود، الان تعداد زیادی کامپیوترهای ناراضی وجود داشت. شما نمی‌توانید همینطوری وارد سیستم شده، کارهایی را نصفه و نیمه انجام داده و بعد پی کارتان بروید. یکی از مفاهیمی که فهمیده‌ام با آن دست و پنجه نرم می کنید مفهوم «تکمیل» است.

به یاد داشته باشید که تکمیل یعنی: منطبق با نیازها و شرایط کاربر تست و توسط کاربر تایید شده است. تکمیل بودن از نظر شما شرط کافی برای تکمیل واقعی پروژه نیست.

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

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

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

پروژه های موفق آن پروژه هایی هستند که چشم بسته توسط کاربران نهایی پذیرفته شده و بخشی از DNA کاری آنها می شوند.

جمع بندی

بسیار خوب، کلمه ای که بتواند تمام موارد گفته شده در این مقاله را جمع بندی کند چیست؟ پاسخ این است: نگرش.

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

زیگ زیگلار در یک جمله موارد گفته شده را جمع بندی می‌کند:

«این نگرش شماست که بلندی جاه و مقام شما را تعیین می کند نه شایستگی تان».