what does it really mean to be an architect?
DESCRIPTION
This presentation was the keynote at ECSA2011. It talks talks about the definition of architecture, architect and the responsibilities the architect should have in a project.TRANSCRIPT
13.09.11
What Does It Really Mean to Be an Architect? Eberhard Wolff
Architecture and Technology Manager
adesso AG
About Me
► Eberhard Wolff
► Architecture & Technology Manager at adesso
► adesso is a leading IT consultancy in the German speaking region
► Speaker
► Author
► Blog: http://ewolff.com
► Twitter: @ewolff
► http://www.slideshare.net/ewolff
Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Architect
Software architect is a general term with many accepted definitions which refers to a broad range of roles.
Not really well defined…
Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Architecture
The software architecture of a system is the set of structures
needed to reason about it, which comprise software elements,
relations among them, and properties of both.
(Won’t be talking about Enterprise Architecture) Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Architecture: Why We Care
13.09.11 5
Software Architecture
Structures Software elements Relations Properties
Performance
Availability
Productivity
Maintainability
Security
Operations
Defines non-functional requirements &
quality Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Architect: Responsibilities
► Manager
► Responsibility: non-functional requirements / quality
► Tool: Define and enforce architecture
► Functional requirements covered by requirements process
► Functional requirements influence the architecture
13.09.11 6 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Traditional View on Architect’s Role
► Define the architecture
► Enforce the architecture
► i.e. create frameworks
► Not necessarily any coding
► Code reviews (maybe)
► Assumptions > Separation of labor > Developers must be “controlled”
► Does that still work in today’s world?
13.09.11 7 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Issues in the Real World
► Ivory tower architecture
► Architecture does not fit the domain
► Architecture is not in the code
► The documented architecture is different from the real architecture
► Developers don’t feel their feedback is listened to
► Either architecture is ignored
► …or project results in a failure
13.09.11 8 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Agile Development i.e. Scrum
13.09.11 9
Product Owner
Creates stories
Stories
Scrum Master Removes obstacles
Enforces rules
Team Self-organizing
Implements stories
Where is the
Architect?
Eberhard Wolff: What Does It Really Mean to Be an Architect?
Team
► Is self organizing
► An architect might / will emerge
► …but is not planned for
► Benefit: > Responsibility is shared > i.e. not just the architect cares
► If the architecture / architect is not helpful, it / he will be ignored
► Less damage in the end
► Architect will see his ideas directly in action
► Better feedback
► Needs trust and collaboration
13.09.11 10 Eberhard Wolff: What Does It Really Mean to Be an Architect?
New Challenges for Architects
Role
► Needs to collaborate with other team members
► …and make himself useful
► Supports and trusts other team members
► Leads by experience
► …not by title
Creating an Architecture
► Stories defined during the project
► Not all requirements known at the start
► No Big Design Upfront possible
► Architecture needs to emerge
► Architecture must be constantly redefined
► More focus on code
► Code is the reliable source for the current architecture and state of the project
13.09.11 11 Eberhard Wolff: What Does It Really Mean to Be an Architect?
New Skills For Architects
► Even more communication
► Convince, not enforce
► Must listen to other team members
► …and use their experience and knowledge
► Must have excellent technical skills
► Must not think about architecture as stable
► i.e. must be able to change plans and adapt
13.09.11 12 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Traditional Architect as a Metaphor
13.09.11 13
An architect is a person trained in the planning, design and oversight of the construction of buildings.
Eberhard Wolff: What Does It Really Mean to Be an Architect?
Is “Architect” a Good Metaphor?
► Buildings are physical entities > Hard to change
► Construction industry is established
► …and has a long history
► Buildings can be fully specified
► Specification
► Software can’t (see Agility)
► Clear separation: Architect vs. construction worker
► Common for a Software Architect to be a former developer
► …or even doing some coding
13.09.11 14 Eberhard Wolff: What Does It Really Mean to Be an Architect?
A New Way to Think About Creating Software
13.09.11 15
1999 2001
Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Craftsmanship Manifesto (2009)
► As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
► Not only working software, > but also well-crafted software
► Not only responding to change, > but also steadily adding value
► Not only individuals and interactions, > but also a community of professionals
► Not only customer collaboration, > but also productive partnerships
13.09.11 16 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Software Craftsmanship
► Quality, even perfection
► Work with code
► Apprenticeship / collaboration
► Smaller barriers between team members
13.09.11 17 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Architect as a Master Craftsman
► More experienced
► Knows the tools very well
► Guides and helps others
► Incorporates feedback
► Improves the craft
► Quality
► Will work on code
► But knows the bigger picture of the project
► Education and work on the project at hand
13.09.11 18 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Architect’s Experience
► Bigger “Vocabulary” > Architecture patterns > Basic approaches > Frameworks, languages etc.
► Thinks in trade offs > Knows the alternatives > There is no black and white
► Knows what is going on in the project > Code quality > Current issues
► Knows how to get software into production
13.09.11 19 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Code vs. Architecture
► Ultimately, code is the deliverable
► Architecture must be expressed in the code
► If the architecture is not in the code, the architect failed
► It makes sense to focus on code
► …and see whether the architecture is really implemented
► Of course architecture and its documentation are important to reach the project goal!
13.09.11 20 Eberhard Wolff: What Does It Really Mean to Be an Architect?
What Is Wrong About Craftsmanship?
► The software is at the center
► It fails to mention what the software is created for
► Most software has a clear business goal
► At the end customers have to be happy
► Quality and how it is created must serve this goal
► Software is not a goal in itself
► http://dannorth.net/ 2011/01/11/programming-is-not-a-craft/
13.09.11 21 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Responsibilities Again
► Non-functional requirements / quality > Performance > Availability > Productivity > Maintainability > Security > Operation readiness
► The architecture will create a compromise between these goals
► E.g. seemingly half finished software might be enough
► Even though it is not well-crafted
► See agility
13.09.11 22 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Quality
► Not all parts of a system will have the same quality
► Not all team members are equally skilled
► The compromise on the quality can happen “by chance”
► …or you can steer it
► Identify core domains > The ones that add the most value > i.e. have a good business reason
► Might want to isolate those
► …and focus on them
13.09.11 23 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Broken Windows Theory
► Once windows are not repaired…
► …vandals will break more
► …break into the building
► …
► Accepting compromises on quality is risky
► …but if you strive for ultimate quality everywhere, you will fail
► In particular with legacy software
13.09.11 24 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Domain Driven Design
► “Tackling Complexity in the Heart of Software”
► E.g. Ubiquitous Language for Code, Developers and Customers
13.09.11 25 Eberhard Wolff: What Does It Really Mean to Be an Architect?
Strategic Domain Driven Design
► Bounded Context: Model used only in a specific part of the system
► Context Map: Translate models from different parts of the system
► Anti-Corruption Layer: Make sure the core domain is not corrupted
13.09.11 26 Eberhard Wolff: What Does It Really Mean to Be an Architect?
More Responsibilities for Architects
► Define the Core Domain
► Ensure that the Core Domain will be implemented properly
► …and won’t be compromised
► I.e. manage the overall quality
► Needs detailed domain knowledge
► Need to understand business case
13.09.11 27 Eberhard Wolff: What Does It Really Mean to Be an Architect?
So: What Does It Really Mean to Be an Architect?
13.09.11 28
Architect
► Cares about non-functional requirements
► Used to be clearly separated from developers
► Cannot lead “by title” > In particular in self-organizing teams > Will be ignored > …or create a failure
► Communication, giving and accepting feedback
► Craftsmanship might be a better metaphor > Apprenticeship and learning > More focus on code
► Vocabulary (pattern, typical architectural approaches) important
► Strategic design – quality where it matters
Eberhard Wolff: What Does It Really Mean to Be an Architect?