تست جوئل قسمت نهم: خریدن بهترین‌ها

برای تولید نرم‌افزار هم مثل هر کار دیگه نیاز به ابزارهایی هست مثل سخت‌افزار یا مجوز نرم‌افزاری. جوئل اسپالسکی می‌گه بهترین‌ها رو بخرین

نهمین سوال تست جوئل: آیا بهترین ابزارهایی که وجود دارد را می‌خرید؟

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

به هر حال سوال اصلی اینجاست که آیا دستیابی به پاسخ مثبت برای این سوال برای شرکت‌های ایرانی امکان‌پذیر است؟

چند سال پیش مطلبی در وبلاگ بهساد منتشر شد تحت عنوان "چگونه بدون پول شرکت تاسیس کنیم؟" در آن اشاره شده بود که مثلاً خرج کردن برای شبکه بی‌سیم در ابتدای کار درست نیست یا می‌توان به جای مانیتور LCD از مانیتورهای CRT استفاده کرد و ...

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

به گمان من معیار اصلی در حوزه تعیین سطح مورد نیاز ابزارها "کاربرد مورد انتظار" از ابزارهاست. اجازه بدهید با ذکر مثالی موضوع را بیشتر توضیح بدهم. من یک توسعه‌دهنده نرم‌افزار در حوزه شیرپوینت هستم. وقتی با شیرپوینت کار می‌کنید، برای اینکه واقعاً بدون دردسر و معطلی بتواند راهکارهایتان را توسعه دهید و آزمایش کنید به کامپیوتری با حداقل 8 گیگابایت RAM احتیاج دارید.
علاوه بر این، اگر بخواهید در شرکت، چند نفر توسعه دهنده برای انجام کارها در حوزه شیرپوینت داشته باشید، عملاً باید برای هر کدام یک farm جداگانه شیرپوینتی نصب کنید و امکان استفاده همه از resource های یک سرور به دلیل تداخلی که در کار ایجاد خواهد شد وجود ندارد.

در همین حال من توسعه برنامه‌های وب بر مبنای ASP.NET MVC هم انجام می‌دهم اما این کار بر روی لپ تاپی که 4 گیگابایت RAM دارد هم قابل انجام است.

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

اجازه بدهید مثال دیگری بزنم: تصور کنید که یک طراح دارید که وظیفه‌اش طراحی ظاهری سایت‌ها و برنامه‌ها و پیاده‌سازی آن طرح‌هاست. ارائه یک مانیتور CRT مثلاً 17 اینچ (که تا 1280 پیکسل را پشتیبانی می‌کند) به این طراح اشتباه است و او برای انجام بهتر کارش حداقل به یک مانیتور 20+ اینچ با رزولویشن 1600 در 900 پیکسل احتیاج دارد.

به طور خلاصه بر اساس اینکه، تیم شما در حال توسعه چه محصولی می‌باشد، ممکن است به سخت‌افزارها یا امکانات متفاوتی نیاز داشته باشید. این امر بدیهی به نظر می‌رسد اما شاهد آن بودم که شرکتی در زمانی که هنوز استفاده از مانیتورهای CRT مرسوم بود برای همه سیستم‌ها از جمله سیستم منشی، از LCD استفاده می‌کرد و میز کنفرانس آنچنانی تهیه کرده بود و ... که نهایتاً هم همین هزینه‌های بی‌دلیل باعث حذفش از بازار شد.

به جز کاربرد مورد انتظار، باید به یک نکته دیگر هم توجه داشت، آن هم واقعی کردن انتظار ما از ابزارها است. دوستی دارم که در این مواقع می‌گوید A bad worker always blames his tools. این حرف درستی است. در واقع ابزارها باعث موفقیت ما نمی‌شوند، اگر آدم موفقی باشیم، اگر تیم موفقی باشیم، این ابزارها کمک می‌کنند که سریع‌تر به اهدافمان برسیم و وقت کمتری را به خاطر مسائل زیرساختی تلف کنیم.