Cover of Fundamentals of Software Architecture by Mark Richards, Neal Ford - Business and Economics Book

From "Fundamentals of Software Architecture"

Author: Mark Richards, Neal Ford
Publisher: O'Reilly Media
Year: 2020
Category: Computers

🎧 Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

🎧 Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 23: Negotiation and Leadership Skills
Key Insight 1 from this chapter

Negotiation Skills for Software Architects

Key Insight

Software architects' decisions are frequently challenged by developers, other architects, and business stakeholders due to differing opinions on approaches, costs, or timelines. For example, an architect proposing database clustering and federation for availability might face cost concerns from business stakeholders, necessitating negotiation for trade-offs. Effective architects possess strong negotiation and facilitation skills, understanding organizational politics to overcome disagreements and build solutions acceptable to all parties.

When negotiating with business stakeholders, leverage 'grammar and buzzwords' like 'zero downtime' or 'lightning fast' to identify underlying concerns such as availability or performance. Gather comprehensive information before negotiations; for instance, 'five nines' of availability (99.999%) translates to 5 minutes 35 seconds of downtime per year, or 1 second per day, which is ambitious and costly. Translating 'nines vernacular' into tangible hours and minutes (e.g., three nines is 86 seconds per day) can clarify discussions. As a last resort, frame arguments in terms of cost and time. Employ the 'divide and conquer' rule to qualify demands, determining if the entire system truly requires high availability or if only specific, smaller components do, thereby reducing the scope of costly requirements and negotiations.

When negotiating with other architects, 'demonstration defeats discussion'. Rather than arguing, show how a proposed solution, like asynchronous messaging, performs better than an alternative, such as REST, in a specific environment. Avoid personalizing debates; if discussions become heated, pause and resume later. Calm leadership combined with clear, concise reasoning is most effective. For developers, provide justifications for architecture decisions instead of issuing commands, fostering collaborative problem-solving. A powerful tactic is to have developers independently arrive at a solution. For example, if a developer disagrees on a framework choice due to security concerns, challenge them to demonstrate how their preferred framework meets security requirements. This either leads the developer to understand its limitations, securing buy-in for the architect's choice, or uncovers a superior solution, benefiting the project.

📚 Continue Your Learning Journey — No Payment Required

Access the complete Fundamentals of Software Architecture summary with audio narration, key takeaways, and actionable insights from Mark Richards, Neal Ford.