کتاب “97 Things Every Software Architect Should Know” (۹۷ چیزی که هر معمار نرم‌افزار باید بداند)، مجموعه‌ای از توصیه‌ها و نکات کلیدی در زمینه معماری نرم‌افزار است که توسط Richard Monson-Haefel گردآوری شده است. این کتاب شامل دیدگاه‌ها و تجربیات ۴۷ نفر از معماران نرم‌افزار حرفه‌ای از سراسر دنیاست.
Things Every Software Architect Should Know

Things Every Software Architect Should Know

ساختار کتاب:

کتاب از ۹۷ مقاله‌ی کوتاه تشکیل شده که هر کدام در حدود ۱ تا ۲ صفحه هستند. هر مقاله به‌صورت مستقل نوشته شده و نویسنده‌ی جداگانه‌ای دارد. این ساختار باعث شده کتاب هم برای مطالعه‌ی پیوسته و هم برای مرور مقطعی مناسب باشد.

محورهای اصلی کتاب:

  1. تفکر سطح بالا (High-level Thinking) تمرکز بر دید کلی سیستم، نه فقط کدنویسی. معماری نرم‌افزار بیش از انتخاب فریم‌ورک یا زبان برنامه‌نویسی است.
  2. ارتباطات (Communication) معمار خوب باید بتواند به زبان‌های مختلف با ذی‌نفعان فنی و غیر فنی صحبت کند. مهارت‌های نرم (soft skills) به اندازه‌ی دانش فنی مهم هستند.
  3. طراحی سیستم‌های قابل توسعه و نگهداری انتخاب درست بین کیفیت‌های سیستم مثل عملکرد، مقیاس‌پذیری، امنیت، و سادگی اهمیت دارد.
  4. تصمیم‌گیری مبتنی بر شواهد معماری خوب نیاز به آزمون فرضیات، سنجش راه‌حل‌ها و تصمیم‌گیری آگاهانه دارد.
  5. پیش‌بینی تغییرات و مدیریت پیچیدگی سیستم‌ها با گذر زمان تغییر می‌کنند، پس معمار باید تغییرپذیری سیستم را پیش‌بینی کند.

چند مورد از توصیه‌های جالب کتاب:

  • “Simplicity is the ultimate sophistication.” (سادگی اوج پیچیدگی است.) پیچیدگی غیرضروری قاتل نگهداری سیستم‌هاست.
  • “Before anything, an architect is a developer.” معمار نرم‌افزار نباید از کدنویسی دور شود. معمار خوب، هنوز هم کدنویسی می‌کند یا حداقل درک عمیقی از آن دارد.
  • “Use uncertainty as a design tool.” آینده همیشه مبهم است؛ طراحی باید این ابهام را در نظر بگیرد.

مناسب برای چه کسانی؟

این کتاب برای کسانی که در مسیر تبدیل شدن به معمار نرم‌افزار هستند، بسیار مفید است؛ اما حتی توسعه‌دهندگان ارشد هم می‌توانند نکات عمیقی از آن یاد بگیرند. چون هر نکته از دل تجربه واقعی آمده.

لازم به ذکر است کلیه بخش های این کتاب توسط chatgpt جهت سهولت در خواندن کتاب ترجمه شده.