Software Architecture Fundamentals - 3
Notes from the Software Architecture Fundamentals a video series on Safari books online - continued.
Architecture Soft Skills
Requires leadership. The 3Cs.
Communication
Effectively communicate ideas, concepts, issues and solutions with stake holders - developers, qa, devops, business
Explain on white board rather than writing documents
Explain complex technical topics to non technical people
Colloboration
Solicit ideas
Get feedback early and often
Clarity
Articulate architectural solution in clear concise terms as applicable to the stake holder
Translation skills business requirements to architecture are important
Techincal knowledge
Knowledge pyramid
-
Top - The stuff you know. Need to maintain.
-
Middle - The stuff you know, you don’t know.
-
Bottom - The stuff you don’t know, you don’t know.
More of top leads to more depth
More of middle leads to more breadth.
Architect should aim to increase breadth, reduce bottom.
Multi-platform knowledge, otherwise Architect would have a narrow focus. Hammer analogy.
To increase breadth, read books, infoq, attend conferences, see videos.
Aim to increase business domain knowledge.
Know the trends and issues.
Gain trust by speaking the business language.
Use appropriate methodology and strategy
Understanding large codebases
Metrics
Cyclometric complexity
C&K
Source monitor
Heat maps (Cruise control)
panopticode
Code coverage
Size and complexity pyramid (inCode)
Toxicity chart
X-Ray : Eclipse plugin, a probe
Proximity alert
Codecity
Signal to noise
No ‘1 true metric’
metrics gathered and ignored
inaction/over action
Hawthorne effect
Initial assessment - More light leads to more productivity. Later finding proved that light had on affect, but the act of measuring productivity had increased productivity.
Essential vs accidental complexity
Probes vs Radiators