به آن نیاز نخواهی داشت
خوششانسم که در حوزه فناوری اطلاعات کار میکنم اما از پیشزمینه مهندسی نرمافزار آمدهام؛ این به من دیدگاه کمی متفاوتی نسبت به دنیای فناوری اطلاعات میدهد، هم در درک بیشتر آنچه پشت صحنه در چرخههای انتشار و ویژگیها اتفاق میافتد و هم در بهکار بردن دانشی که از آن صنعت به این یکی کسب کردهام.
در جامعه مهندسی نرمافزار در سالهای اخیر، مفهوم “به آن نیاز نخواهی داشت” یا YAGNI محبوبیت زیادی کسب کرده است. YAGNI از گروه توسعهدهندگان Agile به نام Extreme Programming (XP) برخاسته و به صورت این قانون بیان میشود: “همیشه چیزها را زمانی پیادهسازی کن که واقعاً به آنها نیاز داری، هرگز زمانی که فقط پیشبینی میکنی که به آنها نیاز خواهی داشت.”
دوست دارم YAGNI را در توسعه اینگونه بازتعریف کنم: “تا زمانی که ندانی به چیزی نیاز داری، در آن سرمایهگذاری نکن.” اما مفهوم همان است - اگر وقت و پول صرف ساختن قطعاتی کنی که مطمئن نیستی هرگز به آنها نیاز خواهی داشت، خطراتی مانند عدم دریافت ارزش در اسرع وقت ممکن (با تمرکز بر چیزهایی که هنوز اهمیتی ندارند در حالی که چیزهای مهم نادیده گرفته میشوند) و سرمایهگذاری در فناوریای که هرگز استفاده نخواهد شد (چون نیازها تغییر میکنند، پروژه لغو میشود و غیره) را میپذیری.
این مفهوم به فناوری اطلاعات بسیار خوب منتقل میشود. طراحی و خرید هر دو به شدت تحت تأثیر YAGNI هستند، یا باید باشند. ذخیرهسازی نمونه خوبی است. امروز در ذخیرهسازیای سرمایهگذاری نکن که فکر میکنی فردا از آن استفاده خواهی کرد. میتوانیم دلایل زیادی برای بد بودن سرمایهگذاری زودهنگام در ذخیرهسازی برشماریم: کسبوکار توانایی کمی یا هیچگونه توانایی برای پیشبینی دقیق رشد خود ندارد، فناوری اطلاعات در پیشبینی رشد ذخیرهسازی بر اساس رشد کسبوکار ضعیف است، ارزش زمانی پول و خرید ذخیرهسازی امروز از خرید همان ذخیرهسازی فردا هزینهبرتر است. هر زمان که بر اساس پیشبینیها خرید کنیم، خطر میپذیریم. پیشبینیها به ندرت به حقیقت میپیوندند.
اگر امروز بیش از حد ذخیرهسازی بخریم، برای آن ذخیرهسازی قیمت بالایی میپردازیم چون هزینههای ذخیرهسازی در طول زمان به طور چشمگیری کاهش مییابد. اگر با ۱۰۰٪ ظرفیت اضافی بخریم و سه سال یا بیشتر طول بکشد تا از آن ظرفیت استفاده کنیم، برای ذخیرهسازی بیش از حد پرداخت میکنیم و فناوری قدیمیتری دریافت میکنیم، در حالی که خرید دیرتر بینش بهتری نسبت به آنچه در آن زمان واقعاً نیاز داریم (نه فقط ظرفیت بلکه سرعت، قابلیت اطمینان، ویژگیها و غیره)، هزینه پایینتر و گزینههای بیشتری به ما میدهد.
خرید بیش از حد یک خطر است، خرید کمتر از حد نیز خطری دیگر است. خرید کمتر از حد، آشکارا، خطر کمتری دارد اما همچنان نگرانکننده است. اگر امروز برای نیازهای سه سال آینده بخری و در طول دو سال ناگهان موج نیاز پدید آید، ممکن است در یک پلتفرم یا فناوری بیش از حد سرمایهگذاری کرده باشی که نمیتواند نیازهای تو را برآورده کند.
ذخیرهسازی یک مثال است اما این اصل میتواند در همه جا از مجوزهای نرمافزاری گرفته تا ظرفیت CPU، حافظه، فناوریهای دسترسپذیری بالا و حتی دسکتاپها اعمال شود. تعداد کمی از شرکتها صد درصد بیشتر از نیاز دسکتاپ میخرند تا برای افزایش تعداد کارمندان پیشبینیشده در سه سال آینده آماده باشند، اما عجیب است که بدون تردید همین کار را در جاهای دیگر انجام میدهند.
با خرید آنچه برای نیاز فوری لازم است و به تأخیر انداختن تصمیمات خرید تا زمان بعد، فرصت قابل توجهی برای صرفهجویی در هزینه و بهبود فناوری وجود دارد. در برخی موارد ممکن است نیاز آینده هرگز به وجود نیاید، چه به دلیل پیشبینیهای اشتباه، تغییرات در بازار یا استراتژی، یا تغییر در جهت فناوری به صورت داخلی یا خارجی.
فراتر از خرید، YAGNI میتواند در طراحی شبکه هم اعمال شود. معمول نیست که طراحیهای بزرگ و پیچیده بر اساس رشد پیشبینیشده که اغلب سالها دورتر است و، صادقانه بگوییم، به ندرت در دنیای واقعی محتمل است، پیشنهاد و پیادهسازی شوند. ساختن، برای مثال، یک محیط دسترسپذیری بالای پیچیده با مجوز گرانقیمت، شبکهبندی پیچیده، ذخیرهسازی زیاد برای رشد مورد انتظار شرکت در آینده، در حالی که فقط دو سرور و یک برنامه پشتیبانگیری خوب برای امروز از نظر هزینه توجیهپذیر است، خطرناک است. نه تنها رشد لازم باید اتفاق بیفتد تا هزینه فناوری اطلاعات را توجیه کند، بلکه باید آنقدر سریع اتفاق بیفتد که ارزش زمانی پول توجیه داشته باشد و هزینه فناوری آنقدر کاهش نیابد که پیادهسازی دو سیستم را مقرونبهصرفهتر کرده باشد. شگفتآور است که چقدر آسان میتواند اتفاق بیفتد که قراردادن یک سیستم کوچکتر موقت و سپس پیادهسازی یک سیستم بزرگتر در صورت نیاز، بسیار ارزانتر باشد، فقط به این دلیل که هزینه ساختن سیستم بزرگتر و پیچیدهتر از زمانی که سیستم اول نصب شد به اندازه کافی کاهش یافته، و این قبل از در نظر گرفتن خطر پیشبینیهای بد است.
هزینهکردن زودهنگام یک خطر اضافی دارد - منابع مالی شرکت را در معماری بلااستفاده قفل میکند. آن پول میتوانست در سایر بخشهای کسبوکار برای رشد سرمایهگذاری شود. در موارد شدید، سرمایهگذاری بیش از حد در زیرساخت میتواند به شکست کامل یک شرکت کمک کند - یک وضعیت خودشکوفا که در آن عدم استفاده از YAGNI خود وضعیتی را ایجاد کرد که در آن YAGNI بیشتر صدق میکرد. معماری طراحیشده هرگز مورد نیاز نبود چون شرکت شکست خورد.
YAGNI یک فرآیند کاهش ریسک است. کار با نیازهایی که میدانی در مقابل نیازهایی که پیشبینی میکنی.
شاید بخشهای فناوری اطلاعات امروز بیش از حد خرید میکنند چون بودجههای مشخصی به آنها داده میشود. قابل درک است که فناوری اطلاعات در یک کشمکش فناوری قرار میگیرد و سعی میکند هر چیزی را که میتواند وقتی هوسهای کسبوکار به آنها لبخند میزند پیادهسازی کند. اما این یک شیوه تجاری بسیار ضعیف است. کسبوکارها باید بدانند که مقادیر زیادی پول به خاطر فناوری اطلاعات هدر میرود چون فناوری اطلاعات مجبور است سیستمهایی را با فرض قدرت پیشگویی بر اساس بودجههای خودسرانهای که پایه واقعی در دنیای واقعی ندارند، پیادهسازی کند. فناوری اطلاعات گیر کرده که چیزی را بخرد که میتواند به کسبوکار “بفروشد” بر اساس عوامل اغلب بسیار مبهم و کسبوکار اغلب بودجه فناوری اطلاعات را به طور دمدمیمزاج تأمین میکند. این یک رابطه بسیار ناسالم بین کسبوکار و فناوری اطلاعات ایجاد میکند که در آن فناوری اطلاعات پول هدر میدهد چون انتخاب کمی دارد و کسبوکار فناوری اطلاعات را به عنوان یک هدر دادن میبیند چون اجازه عملکرد کارآمد داده نمیشود.
برای رفع این وضعیت، کسبوکار و فناوری اطلاعات باید با هم همکاری کنند. فناوری اطلاعات باید بیشتر مانند یک واحد تجاری عمل کند و کسبوکار باید به فناوری اطلاعات برای راهنمایی تکیه کند و از بودجهبندی مبتنی بر پیشبینی یا درگیر شدن در انتخاب رویکردهای فناوری بدون درک فنی از پیامدهای این انتخابها خودداری کند. فناوری اطلاعات باید بتواند به کسبوکار اعتماد کند که تصمیمات مالی تجاری منطقی بگیرد و کسبوکار باید بتواند به فناوری اطلاعات اعتماد کند که تصمیمات فناوری منطقی برای کسبوکار بگیرد. کسبوکار فناوری اطلاعات را هدایت میکند، فناوری اطلاعات کسبوکار را توانمند میسازد. این یک رابطه همزیست است. اگر کسبوکار اصرار داشته باشد که فناوری اطلاعات پیشبینی کند و با بودجههای ثابت عمل کند، فناوری اطلاعات همچنان مجبور خواهد بود هر زمان که ممکن است بیش از حد هزینه کند و بیش از حد معماری طراحی کند به این امید که برای فردا آماده باشد وقتی ممکن است بودجه تأیید نشود. اگر به فناوری اطلاعات اعتماد میشد که آنچه لازم است را درخواست کند و به کسبوکار اعتماد میشد که نیازهای فناوری را در زمان مناسب تأمین مالی کند، هر دو میتوانستند برای خیر مشترک مؤثرتر عمل کنند.
نکته کلیدی: زود سرمایهگذاری نکن، نمیدانی فناوری یا کسبوکار فردا چه خواهد کرد.
