SlideShare a Scribd company logo
1 of 45
Download to read offline
SOFTWARE ISN’t a building
Designing technical architecture for change
by: David Fox, Director of Technical Architecture Design
agenda
• Buildings vs So!ware
• Tension Between Malleability and Complexity
• Barriers to Change in So!ware and Their Solu"ons
Architects
All they do is draw boxes and lines on whiteboards.
Who needs them?
building architecture
SOFTWARE architecture
Building ARCHITECTURE
FAIL
What makes software
hard to change?
“If you pick any one aspect of so!ware then
you can make it easy to change…making
everything easy to change makes the en"re
system very complex. Complexity is what
makes so!ware hard to change.”
Ralph Johnson speaking with Mar"n Fowler - “Who Needs an Architect?”
h#p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf
Barriers to change
• Lack of Design
• Coupling
• Invasive APIs
• Dehydra"on
• Infrastructure Investments
• Team
• Technical Debt
LACK OF DESIGN
Turns out you do need that architect designer
DESIGN SYMPTOMS
• “Let’s just use Framework X” before star"ng to think about design
• “Let’s just start coding”
• No clear design leader(s)/ownership
• Developers le! to decide on components without overall direc"on
• Ge#ng bogged down in details
DESIGN RECOMMENDATIONS
• Developers must have some idea of the overall design before coding begins
• Team must agree on design and be aware of general design and roles of
components
• Work “outside in”. Use the walking skeleton.
• Designer(s) must work with the team throughout development and review work
directly to ensure design is being followed
• Choose frameworks based on your architecture, not the other way around
Coupling
Connascence
• So!ware quality metric and taxonomy of coupling
• Used by Meilir Page-Jones in ACM ar"cle
“Comparing Techniques by Means of
Encapsula"on and Connascence” in 1992
• Expanded in “What every programmer should
know about object-oriented design” in 1996
• Visit h$p://connascence.io for more info
Connascence
• Name
• Type
• Meaning
• Posi"on
• Algorithm
• Execu"on
• Timing
• Values
• Iden"ty
• Strength
• Locality
• Degree
Connascences Proper!es
Image source: http://connascence.io/locality.html
Coupling recommendations
• Iden"fy strong connascence and refactor to weak wherever possible
• Boundaries between components, par"cularly foreign APIs, are essen"al
• Adding layers does add (some) complexity, but:
• Reveals intent in the ubiquitous language of the domain
• Eases re-implementa"on of components
• Improves testability
• Learn and follow good prac"ces, such as SOLID
Invasive APIs
and leaky abstrac"ons
INVASIVE API SYMPTOMS
• Dependencies on implementa"on reach up through layers
• Specialized implementa"on types are exposed in APIs
• Custom types are used when simple, built-in types would suffice
• Infrastructure is needed in other layers to support a leaky abstrac"on
INVASIVE API recommendations
• Always put boundaries between your domain and foreign APIs
• Translate data structures at boundary
• Ensure core of domain remains pure and free of external dependencies
• Use standard types that don’t require clients to import implementa"on details
• Prefer libraries that use open standards
• Unless the infrastructure really is transparent, favor designs where boundaries are
enforced, and don’t leak outside the component
• Prefer external mapping or configura"on over annota"ons
Dehydration
There is such a thing as too DRY
Dehydration SYMPTOMS
• Confla"ng persistence, domain, and presenta"on concerns
• “One Big Model”
• Sharing code between models in separate contexts
• Func"ons used by mul"ple clients contain special cases specific to those
clients
Dehydration RECOMMENDATIONS
• Don’t try to be DRY at the cost of strong coupling
• Denormaliza"on is OK
• Consider the true impact of eventual consistency
• Separate aspects of models into bounded contexts
• If a model is suppor"ng mul"ple concerns, and has code specific to those
use cases, it’s a sign mul"ple models might help, even if they end up being
very similar
• It’s OK to have similar code in mul"ple places, especially separate modules
Infrastructure
investments
We already paid for the support contract!
investments symptoms
• We already bought the license to “Database X”, so we have to use that
• All our code is wri$en to use “Middleware Y”, so it’s hard to change
• We already hired our team for their experience with “Framework Z”
investments recommendations
• Wait un"l the “last responsible moment” to decide on specific technology
investments
• “Fake it un"l you make it” to put off implementa"on of components un"l all
requirements are known
• Design in terms of classes of technology rather than specific technologies
• Prefer libraries over large, invasive frameworks - and/or -
• Segregate implementa"ons using boundaries
• Prefer open-source so!ware
Team
TEAM SYMPTOMS
• Our developers only know “Framework X”
• Our developers aren’t sophis"cated enough to use “Technology Y”
• Developers don’t want to learn how to write SQL correctly
• The front-end team is responsible for that
• We have to run all updates through the database team
• Only Steve knows that par"cular part of the code
TEAM recommendations
• Invest in and encourage training in broad skill areas, not just technologies
• Structure teams so that more experienced engineers work on design and
modeling with less-experienced engineers
• Less experienced engineers review more experienced engineers’ code
• Push engineers to become more full-stack
• Don’t choose technologies only based on “what the team knows”
“organiza"ons which design systems ... are
constrained to produce designs which are
copies of the communica"on structures of
these organiza"ons”
Melvin Conway
TEAM recommendations
• Base designs on the problem domain, not team structure, and shape the team
around it
• Group developers based on bounded contexts and func"onality, not applica"on
layers or technologies
• Create smaller mul"-disciplinary teams
• Allow for direct communica"on between groups
• Integrate constantly
Technical Debt
Adding features no ma$er what the cost
Technical Debt SYMPTOMS
• Velocity isn’t nearly what it was when the project began
• We have to add features, there’s no "me to refactor
• This part of the code is a mess! We need to rewrite it
• We can refactor that code without breaking something
Technical Debt recommendations
• Pay down technical debt as you go
• If you must defer paying down debt to complete features, try:
• Refactor just enough to add a feature without incurring more debt (“the Boy
Scout Rule”)
• Have a “cleanup” phase a!er the feature push
• Ensure that there are tests in place so refactoring can be done regularly and with
confidence
• Prescrip"ve refactoring over “rewrites”. If you make it part of development, it isn’t
“extra expense”.
LACK OF DESIGN
Do overall design up front and empower leaders to guide
developers in implementa"on.
COUPLING
Learn about connascence, reduce strong to weak, and add
boundaries to segregate components.
INVASIVE APIS
Translate 3rd party APIs into your domain model and add
boundaries to prevent leaky abstrac"ons.
DEHYDRATION
Sacrifice DRYness if it reduces coupling. Split up large
models by bounded contexts. Reduce scope of shared
dependencies.
INFRASTRUCTURE
Wait un"l the “last responsible moment” and “fake it un"l
you make it” to ensure procurements reflect actual needs
TEAM
Invest in your team knowledge. Increase communica"on.
Your team structure is your architecture.
TECHNICAL DEBT
Pay it down as you go so it doesn’t grow out of control.
Refactoring is not rewri"ng and is part of development.
evolving architecture
How Buildings Learn: What Happens
A!er They're Built
By: Stewart Brand
About cantina
• Boston-based digital design and development agency
• Founded in 2007, 60+ employees
• We help clients like Putnam Investments, John
Hancock, CUNA Mutual Group, Epsilon, and Pearson
deliver be$er digital products for their customers
• Can"na’s people turn great ideas into digital reality,
execu"ng with the best design and development
techniques available
thank you
References
• “Who Needs an Architect?”

h$p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf
• What Every Programmer Should Know About Object-Oriented Design

h$p://www.amazon.com/Every-Programmer-Should-Object-Oriented-Design/
dp/0932633315/ref=sr_1_1?qid=1446730637
• Connascence

h$p://connascence.io
• How Buildings Learn: What Happens A!er They're Built

h$p://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/
0140139966
References
• Growing Object-Oriented So!ware, Guided by Tests

h$p://www.amazon.com/Growing-Object-Oriented-So!ware-Guided-Tests/dp/
0321503627/ref=sr_1_1?s=books&ie=UTF8&qid=1446730723

More Related Content

What's hot

Creating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't EvilCreating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't EvilIBM UrbanCode Products
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreChris Edwards
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Vadym Kazulkin
 
Continuous integration. Short overview
Continuous integration. Short overviewContinuous integration. Short overview
Continuous integration. Short overviewElifTech
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Vadym Kazulkin
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesIBM UrbanCode Products
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeSteve Mercier
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introductionSridhara T V
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training pptKhalidQureshi31
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudRandy Shoup
 
DevOps and the Future of IT Operations
DevOps and the Future of IT OperationsDevOps and the Future of IT Operations
DevOps and the Future of IT OperationsCorrelsense
 
From the sandbox to production
From the sandbox to productionFrom the sandbox to production
From the sandbox to productionVadym Fedorov
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseIBM UrbanCode Products
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsSanjeev Sharma
 
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewIBM UrbanCode Products
 
How to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsHow to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsSoftServe
 
DevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityDevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityYoav Avrahami
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryPerforce
 

What's hot (20)

Creating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't EvilCreating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't Evil
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & More
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
 
Continuous integration. Short overview
Continuous integration. Short overviewContinuous integration. Short overview
Continuous integration. Short overview
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
 
DevOps and the Future of IT Operations
DevOps and the Future of IT OperationsDevOps and the Future of IT Operations
DevOps and the Future of IT Operations
 
From the sandbox to production
From the sandbox to productionFrom the sandbox to production
From the sandbox to production
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
 
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview
 
How to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsHow to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps Solutions
 
DevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityDevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibility
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery
 

Viewers also liked

How to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information ArchitectureHow to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information Architecturecoleman yee
 
Pley Technical Architecture
Pley Technical ArchitecturePley Technical Architecture
Pley Technical ArchitectureAnurag Phadke
 
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Alfresco Software
 
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...Galala University
 
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign
 
Architecture Series 5-4 Solution Architecture Draft
Architecture Series 5-4   Solution Architecture   DraftArchitecture Series 5-4   Solution Architecture   Draft
Architecture Series 5-4 Solution Architecture DraftFrankie Hsiang
 
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108mmata1031
 
AppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudAppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudCryptzone
 
Cryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecturescmiyer
 

Viewers also liked (11)

How to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information ArchitectureHow to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information Architecture
 
Pley Technical Architecture
Pley Technical ArchitecturePley Technical Architecture
Pley Technical Architecture
 
FPS_Architecture_June
FPS_Architecture_June FPS_Architecture_June
FPS_Architecture_June
 
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
 
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
 
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture Diagrams
 
Architecture Series 5-4 Solution Architecture Draft
Architecture Series 5-4   Solution Architecture   DraftArchitecture Series 5-4   Solution Architecture   Draft
Architecture Series 5-4 Solution Architecture Draft
 
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
 
AppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudAppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the Cloud
 
Cryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone AppGate Technical Architecture
Cryptzone AppGate Technical Architecture
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
 

Similar to Designing Technical Architecture for Change

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for ArchitectsEberhard Wolff
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesQamar Abbas
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Phil Leggetter
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Vadym Kazulkin
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile DevelopmentHayim Makabee
 
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneScaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneBejoy Jaison
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixAbigail Bangser
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code OrganisationSqueed
 
Meetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud FoundryMeetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud FoundryTipico / Booxware
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...DevOps.com
 
Think Cloud, Develop Locally
Think Cloud, Develop LocallyThink Cloud, Develop Locally
Think Cloud, Develop LocallyAll Things Open
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsBrad Williams
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”Cisco DevNet
 
Introduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in SilverlightIntroduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in SilverlightJeremy Likness
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Mark Windholtz
 
DevOps for Network Engineers
DevOps for Network EngineersDevOps for Network Engineers
DevOps for Network Engineersstefan vallin
 
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Jorge Hidalgo
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Raffi Khatchadourian
 
Ladies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System GovernanceLadies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System Governancegemziebeth
 

Similar to Designing Technical Architecture for Change (20)

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneScaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing Kratix
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code Organisation
 
Meetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud FoundryMeetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud Foundry
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
 
Think Cloud, Develop Locally
Think Cloud, Develop LocallyThink Cloud, Develop Locally
Think Cloud, Develop Locally
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
 
Introduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in SilverlightIntroduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in Silverlight
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
 
DevOps for Network Engineers
DevOps for Network EngineersDevOps for Network Engineers
DevOps for Network Engineers
 
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
 
Ladies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System GovernanceLadies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System Governance
 

More from Cantina

Sketching for UX Designers
Sketching for UX DesignersSketching for UX Designers
Sketching for UX DesignersCantina
 
Demystifying the Design Process
Demystifying the Design ProcessDemystifying the Design Process
Demystifying the Design ProcessCantina
 
Planning For design
Planning For designPlanning For design
Planning For designCantina
 
Five Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile ProjectsFive Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile ProjectsCantina
 
Delivering Responsive Design at Scale
Delivering Responsive Design at ScaleDelivering Responsive Design at Scale
Delivering Responsive Design at ScaleCantina
 
Design i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital SystemsDesign i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital SystemsCantina
 
Intro to facade
Intro to facadeIntro to facade
Intro to facadeCantina
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitCantina
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitCantina
 
Introduction to Reactive
Introduction to ReactiveIntroduction to Reactive
Introduction to ReactiveCantina
 
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...Cantina
 
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected ExperienceDemystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected ExperienceCantina
 
Domain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected ExperienceDomain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected ExperienceCantina
 
The Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected ExperienceThe Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected ExperienceCantina
 
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...Cantina
 
A Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel BostwickA Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel BostwickCantina
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignCantina
 

More from Cantina (17)

Sketching for UX Designers
Sketching for UX DesignersSketching for UX Designers
Sketching for UX Designers
 
Demystifying the Design Process
Demystifying the Design ProcessDemystifying the Design Process
Demystifying the Design Process
 
Planning For design
Planning For designPlanning For design
Planning For design
 
Five Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile ProjectsFive Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile Projects
 
Delivering Responsive Design at Scale
Delivering Responsive Design at ScaleDelivering Responsive Design at Scale
Delivering Responsive Design at Scale
 
Design i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital SystemsDesign i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital Systems
 
Intro to facade
Intro to facadeIntro to facade
Intro to facade
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
 
Introduction to Reactive
Introduction to ReactiveIntroduction to Reactive
Introduction to Reactive
 
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
 
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected ExperienceDemystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
 
Domain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected ExperienceDomain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected Experience
 
The Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected ExperienceThe Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected Experience
 
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
 
A Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel BostwickA Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel Bostwick
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web Design
 

Recently uploaded

2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapIshara Amarasekera
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 

Recently uploaded (20)

2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery Roadmap
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 

Designing Technical Architecture for Change

  • 1. SOFTWARE ISN’t a building Designing technical architecture for change by: David Fox, Director of Technical Architecture Design
  • 2. agenda • Buildings vs So!ware • Tension Between Malleability and Complexity • Barriers to Change in So!ware and Their Solu"ons
  • 3. Architects All they do is draw boxes and lines on whiteboards. Who needs them?
  • 8. “If you pick any one aspect of so!ware then you can make it easy to change…making everything easy to change makes the en"re system very complex. Complexity is what makes so!ware hard to change.” Ralph Johnson speaking with Mar"n Fowler - “Who Needs an Architect?” h#p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf
  • 9. Barriers to change • Lack of Design • Coupling • Invasive APIs • Dehydra"on • Infrastructure Investments • Team • Technical Debt
  • 10. LACK OF DESIGN Turns out you do need that architect designer
  • 11. DESIGN SYMPTOMS • “Let’s just use Framework X” before star"ng to think about design • “Let’s just start coding” • No clear design leader(s)/ownership • Developers le! to decide on components without overall direc"on • Ge#ng bogged down in details
  • 12. DESIGN RECOMMENDATIONS • Developers must have some idea of the overall design before coding begins • Team must agree on design and be aware of general design and roles of components • Work “outside in”. Use the walking skeleton. • Designer(s) must work with the team throughout development and review work directly to ensure design is being followed • Choose frameworks based on your architecture, not the other way around
  • 14. Connascence • So!ware quality metric and taxonomy of coupling • Used by Meilir Page-Jones in ACM ar"cle “Comparing Techniques by Means of Encapsula"on and Connascence” in 1992 • Expanded in “What every programmer should know about object-oriented design” in 1996 • Visit h$p://connascence.io for more info
  • 15. Connascence • Name • Type • Meaning • Posi"on • Algorithm • Execu"on • Timing • Values • Iden"ty • Strength • Locality • Degree Connascences Proper!es Image source: http://connascence.io/locality.html
  • 16. Coupling recommendations • Iden"fy strong connascence and refactor to weak wherever possible • Boundaries between components, par"cularly foreign APIs, are essen"al • Adding layers does add (some) complexity, but: • Reveals intent in the ubiquitous language of the domain • Eases re-implementa"on of components • Improves testability • Learn and follow good prac"ces, such as SOLID
  • 17. Invasive APIs and leaky abstrac"ons
  • 18. INVASIVE API SYMPTOMS • Dependencies on implementa"on reach up through layers • Specialized implementa"on types are exposed in APIs • Custom types are used when simple, built-in types would suffice • Infrastructure is needed in other layers to support a leaky abstrac"on
  • 19. INVASIVE API recommendations • Always put boundaries between your domain and foreign APIs • Translate data structures at boundary • Ensure core of domain remains pure and free of external dependencies • Use standard types that don’t require clients to import implementa"on details • Prefer libraries that use open standards • Unless the infrastructure really is transparent, favor designs where boundaries are enforced, and don’t leak outside the component • Prefer external mapping or configura"on over annota"ons
  • 20. Dehydration There is such a thing as too DRY
  • 21. Dehydration SYMPTOMS • Confla"ng persistence, domain, and presenta"on concerns • “One Big Model” • Sharing code between models in separate contexts • Func"ons used by mul"ple clients contain special cases specific to those clients
  • 22. Dehydration RECOMMENDATIONS • Don’t try to be DRY at the cost of strong coupling • Denormaliza"on is OK • Consider the true impact of eventual consistency • Separate aspects of models into bounded contexts • If a model is suppor"ng mul"ple concerns, and has code specific to those use cases, it’s a sign mul"ple models might help, even if they end up being very similar • It’s OK to have similar code in mul"ple places, especially separate modules
  • 23. Infrastructure investments We already paid for the support contract!
  • 24. investments symptoms • We already bought the license to “Database X”, so we have to use that • All our code is wri$en to use “Middleware Y”, so it’s hard to change • We already hired our team for their experience with “Framework Z”
  • 25. investments recommendations • Wait un"l the “last responsible moment” to decide on specific technology investments • “Fake it un"l you make it” to put off implementa"on of components un"l all requirements are known • Design in terms of classes of technology rather than specific technologies • Prefer libraries over large, invasive frameworks - and/or - • Segregate implementa"ons using boundaries • Prefer open-source so!ware
  • 26. Team
  • 27. TEAM SYMPTOMS • Our developers only know “Framework X” • Our developers aren’t sophis"cated enough to use “Technology Y” • Developers don’t want to learn how to write SQL correctly • The front-end team is responsible for that • We have to run all updates through the database team • Only Steve knows that par"cular part of the code
  • 28. TEAM recommendations • Invest in and encourage training in broad skill areas, not just technologies • Structure teams so that more experienced engineers work on design and modeling with less-experienced engineers • Less experienced engineers review more experienced engineers’ code • Push engineers to become more full-stack • Don’t choose technologies only based on “what the team knows”
  • 29. “organiza"ons which design systems ... are constrained to produce designs which are copies of the communica"on structures of these organiza"ons” Melvin Conway
  • 30. TEAM recommendations • Base designs on the problem domain, not team structure, and shape the team around it • Group developers based on bounded contexts and func"onality, not applica"on layers or technologies • Create smaller mul"-disciplinary teams • Allow for direct communica"on between groups • Integrate constantly
  • 31. Technical Debt Adding features no ma$er what the cost
  • 32. Technical Debt SYMPTOMS • Velocity isn’t nearly what it was when the project began • We have to add features, there’s no "me to refactor • This part of the code is a mess! We need to rewrite it • We can refactor that code without breaking something
  • 33. Technical Debt recommendations • Pay down technical debt as you go • If you must defer paying down debt to complete features, try: • Refactor just enough to add a feature without incurring more debt (“the Boy Scout Rule”) • Have a “cleanup” phase a!er the feature push • Ensure that there are tests in place so refactoring can be done regularly and with confidence • Prescrip"ve refactoring over “rewrites”. If you make it part of development, it isn’t “extra expense”.
  • 34. LACK OF DESIGN Do overall design up front and empower leaders to guide developers in implementa"on.
  • 35. COUPLING Learn about connascence, reduce strong to weak, and add boundaries to segregate components.
  • 36. INVASIVE APIS Translate 3rd party APIs into your domain model and add boundaries to prevent leaky abstrac"ons.
  • 37. DEHYDRATION Sacrifice DRYness if it reduces coupling. Split up large models by bounded contexts. Reduce scope of shared dependencies.
  • 38. INFRASTRUCTURE Wait un"l the “last responsible moment” and “fake it un"l you make it” to ensure procurements reflect actual needs
  • 39. TEAM Invest in your team knowledge. Increase communica"on. Your team structure is your architecture.
  • 40. TECHNICAL DEBT Pay it down as you go so it doesn’t grow out of control. Refactoring is not rewri"ng and is part of development.
  • 41. evolving architecture How Buildings Learn: What Happens A!er They're Built By: Stewart Brand
  • 42. About cantina • Boston-based digital design and development agency • Founded in 2007, 60+ employees • We help clients like Putnam Investments, John Hancock, CUNA Mutual Group, Epsilon, and Pearson deliver be$er digital products for their customers • Can"na’s people turn great ideas into digital reality, execu"ng with the best design and development techniques available
  • 44. References • “Who Needs an Architect?”
 h$p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf • What Every Programmer Should Know About Object-Oriented Design
 h$p://www.amazon.com/Every-Programmer-Should-Object-Oriented-Design/ dp/0932633315/ref=sr_1_1?qid=1446730637 • Connascence
 h$p://connascence.io • How Buildings Learn: What Happens A!er They're Built
 h$p://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/ 0140139966
  • 45. References • Growing Object-Oriented So!ware, Guided by Tests
 h$p://www.amazon.com/Growing-Object-Oriented-So!ware-Guided-Tests/dp/ 0321503627/ref=sr_1_1?s=books&ie=UTF8&qid=1446730723