چند سال پیش از یکی از مدیران فنی سؤال کردم:
«چطور میفهمی یک تصمیم معماری خوب بوده یا نه؟»
فکر میکردم قرار است درباره Performance، Scalability یا Availability صحبت کند.
اما جوابش چیز دیگری بود.
گفت:
«ببین چند ماه بعد، تغییر دادن آن تصمیم چقدر درد دارد.»
آن زمان خیلی متوجه منظورش نشدم.
اما هرچه بیشتر روی سیستمهای واقعی کار کردم، بیشتر به عمق این جمله پی بردم.
بیشتر تصمیمهای معماری، روزی که گرفته میشوند عالی به نظر میرسند.
مشکل زمانی شروع میشود که نیازمندیها تغییر میکنند.
کسبوکار مسیر جدیدی میرود.
تیم بزرگتر میشود.
یا حجم کاربران چند برابر میشود.
اینجاست که کیفیت واقعی تصمیمها مشخص میشود.
چون بعضی تصمیمها فقط برای امروز بهینه هستند.
و بعضی دیگر، تغییرات آینده را هم در نظر گرفتهاند.
جالب است که انعطافپذیری یک سیستم را معمولاً از روی چیزهایی که میتواند انجام دهد نمیسنجند.
از روی چیزهایی میسنجند که میتواند تغییر دهد.
شاید به همین دلیل باشد که مهندسی نرمافزار کمتر درباره پیشبینی آینده است.
و بیشتر درباره آماده بودن برای آیندهای است که نمیتوانی پیشبینیاش کنی.
در نهایت، ارزش یک طراحی خوب فقط در این نیست که امروز جواب میدهد.
در این است که فردا هم بتوانی با آن زندگی کنی.
Post #669
378