Solution Architect Anti-patterns

16 Solution Architect Anti-patterns

by John Spacey

A few common anti-patterns that every solution architect should know.

1. Re-inventing the wheel - Needlessly engineering a proprietary solution to a problem that already has a standard solution.

Example: Building your own web server.

2. Technology Proliferation - Needlessly increasing the complexity of the technology stack.

Example:The organization uses three web server products and you introduce another.

3.Over Engineering - Building complex functionality when a simple solution would suffice.

Example: Introducing a complex workflow product to handle simple approvals.

4. Under Engineering - When the architecture can not support the business requirements.

Example: A solution that can not support business volumes (performance requirements).

5. Stubborn Silo - Refusing to use common solutions without a good reason.

Example: Building point to point integrations instead of using the enterprise ESB.

6. Bleeding Edge - Using the latest hype technology before all the bugs have been worked out.

Example: Expensive hardware that is marginally faster than slightly older models.

7. Silver Bullet - When architects use a single technology for all projects.

Example: Using SOA for everything — even when there is zero chance of service reuse.

8. Ivory Tower - A highbrow or ascetically pleasing design that is not practical.

Example: Spending excessive time designing a elaborate solution to a simple problem.

9. Garden in the Desert - Building a solution on the wrong platform.

Example: Building a complex business application with office productivity software.

10. Vendor Lock-in - Building too much functionality on a proprietary platform.

Example: Using one large vendor for all your systems.

11. Gold Plating - Adding bells and whistles to a system that don't add value.

Example: Optimizing a mobile website for devices that few of your customers own.

12. Politics Oriented Architecture - Allowing office politics to interfere with design decisions.

Example: The CRM has the data you need but your boss has a bad relationship with the CRM team — so you get the data from some downstream system that has stale data.

13. Path Of Least Resistance - A lazy architecture that fails to plan for change — choosing the cheapest implementation.

Example: Choosing point to point integration over ESB because it is easier.

14. Over the Head - Ignoring requirements that the architect fails to understand — assuming they have no impact.

Example: Business requirements specify compliance with a set of regulations — architects ignore the requirement because they don't understand it.

15.Perception Mismanagement - When the solution architect makes promises and then can't deliver.

Example: Promising real time calculations that are almost impossible to calculate in real time.

16. Pattern Happy - Overuse of patterns.

Example: Designs that have factories that do nothing.

Proof of Concept - PoC

 

فردا 15 نفر مهمان دارید و می خواهید برای آنها غذایی را آماده کنید که برای اولین بار می خواهید پخت آن را تجربه کنید. فرض کنید خورش فسنجان

مواد اولیه خورش شامل مقدار زیادی گردو، رب انار، مرغ، برنج و دیگر مواد لازم را تهیه کرده اید و دستور پخت را هم در اختیار دارید. حال چه می کنید؟

اولین، سریع ترین و ساده ترین راهی که ممکن است به ذهن برسد این است که قدم به قدم دستور پخت را دنبال کرده و خورش را آماده کنید. اما این در عین حال پر ریسک ترین راه ممکن هم هست. چرا که در صورت خراب شدن خورش حتی اگر وقت کافی برای پخت مجدد آن داشته باشید مقدار قابل توجهی مواد اولیه را هدر داده اید.

اما راه امن تر و کم هزینه تر این است که خورش را در مقیاس بسیار کمتر، مثلا برای یک نفر، آماده کرده و در صورت حصول نتیجه مطلوب این کار را در مقیاس اصلی و برای 15 نفر تکرار کنید. در صورت عدم حصول نتیجه مطلوب هم تنها یک پانزدهم مواد اولیه از دست رفته است.

هر چند این رویکرد زمان بیشتری طلب می کند اما ریسک پخت غذای اصلی به میزان قابل توجهی کمتر بوده و نتیجه نهایی بسیار قابل پیش بینی تر و نزدیکتر به آنچه مطلوب است خواهد بود.

Terms and Conditions!

زیاد دیده ام هزینه های – گاهی بسیار گزاف – تحمیل شده به مهاجران به علت عدم آشنایی با محیط، فرهنگ و شرایط اقامتگاه جدید.

چند بار این هزینه ها به خود من هم تحمیل شده و در بیشتر موارد علت چیزی نبوده جز عدم آشنایی و تقریبا در همه موارد قابل پیشگیری.

در زیر نمونه هایی که برای خودم یا دوستان پیش آمده را آورده و در ادامه روش هایی که برای جلوگیری از پیشامد آنها به نظرم می رسد را فهرست کرده ام:

یک - هنگام خرید اتوموبیل، آنرا بیمه شخص ثالث کردم، بدون اینکه شرایط بیمه را – که دفترچه ای قطور بود – به دقت بخوانم. چند ماه بعد همسر تصادف کرد و مقصر شناخته شد. مشخص شد که مبلغی که باید از طرف بیمه شده (یعنی ما) پرداخت می شد (که به آن Excess گفته می شود) دو برابر معمول است! چرا؟ چون شرکت بیمه مورد نظر سالهای سپری شده از زمان دریافت گواهینامه را از زمان دریافت گواهینامه استرالیایی حساب می کرد، و نه از زمان دریافت اولین گواهینامه (که در ایران گرفته شده بود).

نتیجه: از دید شرکت بیمه مقصر راننده بی تجربه محسوب می شد و مبلغ Excess دو برابر محاسبه گردید!

راه حل: سال بعد هنگام تمدید بیمه ماشین، Terms and Conditions و Product Disclosure Statement مربوط به بیمه های مختلف به دقت مطالعه شد بیمه دیگری انتخاب شد. اتفاقا تصادف دیگری صورت گرفت، اما این بار همه چیز مطابق میل بیمه گر (یعنی ما!) پیش رفت.

 

دو – یکی از دوستان قرارداد 24 ماهه سرویس موبایل امضا کرد. چند ماه متوالی قبض موبایل طبق انتظار مبلغ حدود 70 دلار ماهانه صادر می شد تا اینکه در یکی از ماه ها مبلغ قبض 500 دلار بود! چرا؟ چون مصرف داده (Data) در آن ماه از میزان تعیین شده ماهانه (که 500 مگابایت بود) عدول کرده و شرکت تامین کننده سرویس بابت هر مگابایت اضافه مبلغ هنگفتی شارژ کرده بود.

نتیجه: با بدبختی و خواهش تمنا بخشی از مبلغ مزبور تخفیف داده شد اما هنوز بسیار بیشتر از مبلغ معمول بود.

راه حل: ، Terms and Conditions و Product Disclosure Statement هنگام خرید محصول یا خدمت به دقت مطالعه گردد!

 

سه – پس از اتمام قرارداد اجاره خانه و هنگام تحویل، بنگاه معاملات ملکی که خانه از ایشان اجاره شده بود طی نامه ای به اطلاع رساند که خانه در شرایط اولیه نبوده و بسیاری از جزئیات نیاز به تعمیر / تعویض / شسته شدن دارد.

واقعیت: در بدبینانه ترین حالت، خانه مزبور به شکل اولیه تحویل داده شد (اگر نگویم بهتر و تمیزتر از روز اول بود!)

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

نتیجه: متحمل شدن هزینه تعمیر مواردی که از ابتدا نیاز به تعمیر داشته + 2 روز سابیدن برخی از نقاط خانه نظیر کرکره ها و در و دیوار که از روز اول هم تمیزتر بود!

راه حل: مطالعه شرایط، حقوق و وظایف پیش از امضای قرارداد.

 

اطمینان دارم که دوستان با موارد مشابه بسیاری برخورد کرده یا شنیده اند.

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