برنامه نویس حرفه ای کیست؟ (قسمت اول)

حرفه ای گری در برنامه نویسیبه نظر من یکی از مهمترین چالشهای نیروی انسانی امروز جامعه ما بطور کلی توهم حرفه ای بودن است که در ذهن بسیاری از افراد جویای کار و یا فعال در زمینه های مختلف وجود دارد. که این مهم در زمینه تخصصی برنامه نویسی و علوم کامپیوتر بسیار بیشتر نمود پیدا کرده است.من به شخصه همواره در مدت زمان فعالیت مدیریتی خود با کمبود نیروی حرفه ای مواجه بودم. بسیار این مورد پیش می آمد که افرادی برای مصاحبه شغلی که خود را برنامه نویس حرفه ای معرفی کرده بودند، نزد من می آمدند و در کمال تعجب میدیدم که آنها از الفبای کار و اخلاق حرفه ای اطلاع ندارند چه رسد به انجام کار حرفه ای.برای همین تصمیم گرفتم یک مطلب رو در این جایگاه به این موضوع اختصاص دهم تا شاید بتواند یک تعریف ساده و ابتدایی را به علاقه مندان و همچنین کارفرمایان جویای برنامه نویس ارائه کند.این مطلب را با استفاده از برداشتی آزاد از فصل اول کتاب The Clean Coder نوشته آقای Robert C. Martin معروف به Uncle Bob یا همان عمو باب، با عنوان Professionalism نوشته ام.البته سعی کردم در مثالها به مواردی اشاره کنم که ما در جامعه خود بیشتر میبینیم که بر اساس تجربه‌های خودم بوده است.مراقب باشید که چه چیزی می خواهیداگر واقعا خواهان آن هستید که بعنوان یک برنامه نویس حرفه ای به فعالیت بپردازید باید بدانید که دقیقا چه می خواهید.یک برنامه نویس حرفه ای دو خصیصه کلیدی دارد یکی مسئولیت پذیری و دیگری پاسخگو بودن‌ است.اگر برنامه ای که تحویل کارفرما می شود بدلیل یک مشکل در کد برنامه مثلا ۱۰ میلیون تومان به وی ضرر برساند، یک برنامه نویس غیر حرفه ای در مقابل شانه های خود را بالا می اندازد و می گوید: «خوب هیچ برنامه ای بدون باگ که نمی شود».اما در مقابل یک برنامه نویس حرفه ای ممکن است یک چک به مبلغ زیان وارد شده به کارفرما بدهد و در واقع مسئولیت آن را به عهده بگیرد. البته حتما شما اگر برنامه نویس باشید اینجا میگویید که خوب برنامه ای که یک برنامه نویس حرفه ای هم می نویسد ممکن است دارای باگ باشد، بله کاملا درست است اما اینجا تفاوت در قبول مسئولیت و عدم پاسخگو بودن در مواجه شدن با آن می باشد.پس بدانید که اگر ادعای حرفه ای بودن دارید باید تبعات ناشی از آن که شامل قبول مسئولیت کارکرد صحیح برنامه می باشد را نیز بپذیرید.گرفتن مسئولیتعمو باب در اینجا داستانی از اولین مسئولیتش بعنوان یک برنامه نویس می نویسد که بعد از تحویل دادن برنامه با امکانات جدید به مشتریان که در آن سالها می بایست برنامه را روی Tape بصورت حضوری می برد و برای هر یک نصب میکرد، یک مشکلی بوجود آمد که برنامه کار نکرد و این باعث شد صدای نارضایتی تمام مشتریان و متعاقبا کارفرما در آید. اما مشکل اینجا بود که عمو باب نمی دانست چرا این مشکل بوجود آمده است.حالا شما فرض کنید بعنوان یک برنامه نویس در این موقعیت باشید، چه میکنید؟من در سال ۷۶ در یک شرکت نرم افزاری در مشهد بصورت کارآموز مدتی مشغول بودم که با زبان برنامه نویسی پاسکال برنامه می نوشتند، این شرکت در آن سالها جزء برترین شرکتهای نرم افزاری مشهد و یا حتی ایران محسوب میشد.دقیقا به خاطر دارم که مدیر تیم برنامه نویسی آن تا آخرین روزهایی که در آنجا بودم اجازه کمپایل کردن کدهای من رو به خودم نمیداد و تنها میگفت: «تو کد را بنویس بده من خودم آنرا به همراه برنامه اصلی کمپایل میکنم» و این موضوع همیشه برای من ناراحت کننده بود.یک روز وقتی در این مورد با او صحبت کردم گفت: «ما بیش از ۳۰۰ مشتری داریم اگر بعد از اینکه برنامه رو برای همه آنها فرستادیم و بعد به مشکل خورد من باید به شرکت پاسخ بدهم نه تو، پس ترجیح میدهم کدی را که خودم دیدم و تست کردم رو کمپایل کنم.»حتی وقتی یک فایل com برای تغییر فونت Draft در چاپگرهای سوزنی درست کردم که در برنامه ها برای فارسی سازی چاپگر استفاده کنند، با اینکه روی چندین چاپگر چک شد و نتیجه مثبت بود از من کد برنامه رو خواست تا قبل از انتشار از نحوه کار آن مطمئن شود.البته وقتی من گفتم سورسی در کار نیست و من روی یک فایل com دیگر تنها با استفاده ازHexEditor جدول ماتریسی فونتها رو طراحی کردم و تغییر دادم بازهم کار رو از من قبول نکرد و اون فایل حداقل تا وقتی که من اونجا بودم همراه برنامه منتشر نشد.درک این موضوع در آن سالهای جوانی (نوجوانی!) برای من کمی دشوار بود و من همه جا از این موضوع گلایه میکردم، ولی بعدها در مسئولیتهایی که داشتم دقیقا این موضوع را تجربه کردم که خیلی هم برایم گران تمام شد.اگر شما برنامه نویس هستید و یا قصد دارید که برنامه نویس شوید و یا اینکه قصد دارید برنامه نویسانی را استخدام نمایید، باید بدانید که یکی از مهمترین مشخصه های یک برنامه نویس قابل اعتماد و حرفه ای، همین موضوع مسئولیت پذیری است.البته این مورد در تمامی کارها و حرفه ها یک رکن اساسی محسوب می شود ولی در برنامه نویسی بدلیل اینکه محصول یک کد است که می تواند بدون نویسنده اش هیچ ارزشی نداشته باشد و یا حداقل خیلی کم ارزش باشد، بیشتر باید مورد توجه قرار گیرد.در بخشهای بعدی این مطلب نیز با من همراه باشید.قبلا در وبلاگ منتشر شده.