شاخصهای یک تیم حرفهای برنامهنویسی
۳۰ دی ۱۳۹۹
مطمئنا برای شما هم پیش آمده که از خودتان بپرسید آیا تیم برنامهنویسی ما حرفهای عمل میکند؟ یا اینکه چه فرایندهایی باعث میشود که تیم ما به سطوح حرفهای و بینالمللی نزدیک شود؟ حال اگر بخواهیم به این سوالها پاسخ دهیم، باید بدانیم که شرکتهای مشهور و موفق دنیا چه فرایندهایی را دنبال میکنند و آیا آن فرایندها در تیم برنامهنویسی ما رعایت و اجرا میشوند یا خیر؟
بههمین منظور ۱۲ سوال در ادامه این مقاله از شما پرسیده خواهد شد که اگر پاسخ شما به ۹ تا از آنها، بله بود میتوانید بگویید که بله من در تیمی حرفهای مشغول به برنامهنویسی هستم.
۱) آیا از هر نوعی ابزار کنترل نسخه (Version Control) استفاده میکنید؟
ابزارهای کنترل نسخه یا همان Version Controlها انواع مختلفی دارند که یکی از مشهورترین آنها را میتوانیم git بدانیم و قبلتر در مقالههای مختلفی مانند آموزش استفاده از Git یا دستورات ضروری Git به این ابزار در وبلاگ لیارا پرداختهایم و با مطالعهی آنها میتوانید کار با Git را بهسادگی شروع کنید.
حال اگر شما در تیمی مشغول به فعالیت هستید که برای مدیریت نسخههای مختلف برنامههای خود از اضافه کردن کلمههای مانند latest یا final در انتهای نام پوشهی برنامهها استفاده میکنند و یا حتی نمیدانند نسخهگذاری معنادار (Semantic Versioning) چیست و چرا باید از آن استفاده کنند؟ یکی از اولین شاخصههای یک تیم حرفهای را از دست خواهید داد.
دلیلهای محکمی برای استفاده از Git وجود دارند. برای مثال باید به زمانهایی اشاره داشته باشیم که شما نمیدانید مشکل برنامه از کجاست و با بررسی نسخههای قبلی میتوانید کدهایی که باعث ایجاد مشکل شدهاند را پیدا کنید یا در مثالی دیگر این ابزار به شما امکان میدهد تا بهعنوان یک تیم بر روی یک پروژهی واحد بهصورت مدیریت شده کار کنید.
۲) آیا برنامهی شما one step build است؟
هدف از one step build، تبدیل مستقیم source code برنامه به نرمافزار نهایی است. بهاین صورت میتوانید از بسیاری پیچیدگیهای کامپایل پروژه خلاص شوید و مطمئن باشید تمام مراحلی که میبایست برای خروجی گرفتن از پروژه طی کرده باشید را بهخوبی انجام دادهاید.
حال با این شرایط پروژهای خواهیم داشت که میتوانیم هر لحظه بخواهیم خروجی نهایی آن را در اختیار دیگران قرار دهیم تا به آزمایش یا استفاده از آن بپردازند و در قدم بعد از بسیاری مشکلهای عمده مانند فراموشی بخشی از روند کامپایل یا پیکربندی نادرست، جلوگیری میشود و برنامهای سالمتر را در خروجی پروژه خود خواهیم داشت.
۳) آیا میتوانید در پایان روز یک برنامهی خروجی مناسب از پروژهی خود داشته باشید؟
ایده اصلی این است که در پایان روز بتوانید از پروژهای که بر روی ریپازیتوری تیم قرار دارد، یک برنامهی سالم دریافت کنید. اگر کسی یک commit بر روی پروژه بزند و دیگر افراد تیم نتوانند خروجی سالمی از آن پروژه دریافت کنند، توسعهی پروژه متوقف خواهد شد زیرا افراد دیگر تیم با دریافت آخرین نسخه از کدهای برنامه و اعمال تغییرات جدید دیگر نخواهند توانست که تغییرات خودشان را در پروژه مشاهده کنند. در نهایت میتوان گفت که build برنامه break شده است.
۴) آیا در برنامههای خود از Bug Tracker استفاده میکنید؟
در وهلهی اول سعی نکنید که تمام موارد را در ذهن خود نگه دارید. یک فایل متنی در کنار کدهای خود باز کنید و موارد مورد نیاز را در آن بنویسید. توجه داشته باشید که این مستندات نقش Bug Tracker را برای شما خواهند داشت. حال با یادداشت مشکلهای برنامههای خود میتوانید در زمانهایی که وقت کافی دارید، به رفع مشکلهای برنامه بپردازید و بهاین صورت مشکلهای برنامهی خود را فراموش نخواهید کرد.
۵) آیا رفع کردن مشکلهای برنامه اولین اولیت شما است؟
یکی از نکتههای پر اهمیتی که بایستی در زمان برنامهنویسی یک پروژه به آن دقت داشته باشید، در اولویت قرار دادن رفع مشکلهای برنامه، قبل از توسعهی بخش دیگری از آن برنامه است. بنابراین ددلاینهای پروژهها را بهگونهای تنظیم کنید که زمان کافی برای رفع مشکلهای برنامه علاوهبر توسعهی آن داشته باشید.
۶) آیا تیم شما برنامهریزی مشخصی برای رسیدن به اهداف خود دارد؟
مطمئنا اکثر محصولهایی که شما در حال توسعهی آنها هستید، قرار است که درآمد یک شرکت را افزایش دهند یا نهایتا در سهولت کارهای آن شرکت نقشی ایفا کنند. بههمین منظور وجود یک برنامهریزی مشخص برای توسعهی بخشهای مختلف برنامه و انتشار برنامهی نهایی بسیار پر اهمیت است.
همچنین هر تیم برنامهنویسی علاوهبر انجام پروژهها، باید به اهداف درون سازمانی خود نیز دقت داشته باشد و مطمئنا برای رسیدن به هر هدفی، به برنامهریزی دقیقی نیاز خواهیم داشت.
اهمیت برنامهریزی در شرکتهای یک نفره نیز بسیار پر اهمیت است و بایستی برای اجرای نقشهای مختلف مورد نیاز یک شرکت، برنامهریزی زمانی دقیقی داشته باشیم. برای مثال بخشی از روز را به توسعهی نرمافزار اختصاص دهیم و در ادامهی آن در نقشهای مجزایی مانند مدیریت شرکت، پشتیبانی محصول و … وظایف خود را بهخوبی انجام دهیم.
۷) آیا به اهمیت مستندات توجه دارید؟
اهمیت مستندات از هیچ توسعهدهندهای پوشیده نیست اما در بیشتر تیمهای برنامهنویسی این مورد را تا جایی که بتوانند از نظر زمانی عقب میاندازند. حال اگر شما هم یکی از تیمهای اینچنینی هستید بنابراین توصیه میشود مقالهی چگونه مستندات مناسبی برای برنامههایمان بنویسیم را مطالعه کنید و بهصورت جدی به مستندسازی برنامههای خود بپردازید.
۸) آیا از شرایط کاری مناسبی برخوردار هستید؟
احتمالا با بسیاری از مقالههایی روبرو شدهاید که شرایط کاری مناسب برنامهنویسی را شرح دادهاند. بااینحال ما این شرایط ایدهآل را در بیشتر شرکتهای ایرانی بهچشم ندیدهایم اما شاخصههای یک شرایط کاری مناسب عبارتند از:
- داشتن فضای کافی
- رعایت سکوت
- داشتن ابزار مناسب
عموما گفته میشود که یک برنامهنویس برای تمرکز خود به ۱۵ دقیقه زمان نیاز دارد تا در فضای برنامهنویسی و توسعهی پروژه قرار بگیرد بنابراین تمامی شاخصهای بالا میتوانند در حفظ این تمرکز، کاربردی باشند.
۹) آیا ابزارهای مناسب کار خود را در اختیار دارید؟
در بخش قبلی به داشتن ابزارهای مناسب پرداختیم اما این موضوع بسیار مهم است. اگر شما یک نقاش باشید بهسختی میتوانید هنر خود را بدون قلم و رنگ بهنمایش بگذارید، حال برنامهنویسی هم در بخشهایی این چنین است که شما با در اختیار داشتن ابزارهای مناسب میتوانید علم خود را بهنمایش بگذارید و پروژهها یا وظایف خود را انجام دهید.
همچنین در برخی مواقع ابزارها به ما کمک میکنند تا با سلامت بیشتری به شغل خود ادامه دهیم اما آنچنان هم ضروری نیستند. داشتن یک صندلی مناسب برای نشستن یا یک مانیتور که به چشمهای شما آسیب نزند، بسیار مفید و کاربردی است. بنابراین در تیم خود باید به این موارد توجه داشته باشید و ما امیدواریم اگر شما مدیریت یک تیم را برعهده دارید، به این موارد توجه داشته باشید و برای کارمندان خود ابزارهای مورد نیاز را فراهم کنید.
۱۰) آیا testerها برنامههای شما را آزمایش میکنند؟
در خصوص آزمایشهای نرمافزاری، افرادی وجود دارند که تخصصشان در زمینهی آزمایش برنامه است. البته شاید بگویید که ما بهصورت نرمافزاری برای برنامههای خودمان تست مینویسیم اما دقت داشته باشید که انسانها معمولا غیرقابل پیشبینی هستند و این امکان وجود دارد که فقط با یک ورودی ساده که حتی شاید فکرش را هم نمیکردهاید، برنامهی آنلاین شما را برای روزها بهم بریزند.
در برنامههای وب یا اندروید این موضوع پر اهمیتتر است. همهی ما میدانیم که در توسعهی برنامههای وب، نسخههای مختلفی از مرورگرها و همچنین صفحههایی با اندازهی مختلف وجود دارد و این موضوع در برنامههای اندرویدی نیز صادق است. بنابراین برنامهی شما بایستی در نسخههای مختلف اندروید یا مرورگرهای مختلف، بررسی و صحت کارکرد آن توسط testerهای تیم شما تایید شود.
۱۱) آیا افراد مناسبی را برای جایگاههای شغلی تیم خود استخدام کردهاید؟
بایستی افراد را در زمان استخدام بهصورت عملی مورد آزمایش قرار دهید. برای مثال اگر برنامهنویسی در جایگاه توسعهدهنده وب برای مصاحبهی استخدام حاضر شده است، از او بخواهید که یک برنامهی کوچک و کمی چالش برانگیز برای شما بنویسد. بهعبارت خلاصهتر میتوان گفت که مهارتهای افراد را بسنجید و سپس آن افراد را در تیم خود بپذیرید.
در وهلهی دوم شخصیت افرادی که میخواهید در تیم خود استخدام کنید را بسنجید زیرا علم و دانش قابل یادگیری و آموزش هستند اما شخصیت افراد یکی از مسائلی است که بهسادگی نمیتوانید آن را تغییر دهید و افراد نامناسب میتوانند زنگ خطری برای تیم شما باشند.
۱۲) آیا تیم شما علاوهبر مهارتهای توسعهی نرمافزار به دیگر مهارتهای خود توجه داشته است؟
یک تیم برنامهنویسی حرفهای علاوهبر مهارتهای توسعهی نرمافزار بایستی بتواند با مشتریان خود ارتباط برقرار کند یا حتی مهمتر از آن، افراد این تیم در محیط کاری خود شاد و پویا باشند.
افراد حرفهای تک بعدی نیستند، به شادی خود توجه دارند و سعی میکنند این شادی را به دیگر همکاران خود نیز انتقال دهند. در زمان بروز مشکلهای نرمافزاری بدون هیچ چشم داشتی به همدیگر کمک میکنند و علم خودشان را با دیگر اعضای تیم بهاشتراک میگذارند.