SlideShare a Scribd company logo
1 of 29
Architecture in an Agile World - Best Practices Every Architect Should Follow James Cooper - james.cooper@f-secure.com  Lead Platforms Architect
Agenda Intro Best Practices Questions & Answers October 16, 2009 2
About the Speaker James Cooper is the Lead Platforms Architect with F-Secure Corporation. Prior to joining F-Secure, James worked for Wificom Technologies(Finland) and EDB Maxware Benelux(Netherlands) on a variety of projects ranging from Wi-Fi access management to Access Control Solutions(NATO, Dutch Ministry of Defence) and Finance(ING). James has been has been working in Java since 1996, Java EE since 1999, RoR since 2008 and hacking some Visio since 2009. He still codes. Particularly hacking Objective-C and creating his own DSL called NIH in Haskell. October 16, 2009 3
Disclaimer October 16, 2009 4 Religious application of principles learned from a presentation during a conference is not a substitute for common sense.
Invite Peer Review Architects need to invite reviews. Discussing something always helps to show its weaknesses.  3 Minds are better than 1. Depending on the environment they’re also used to code reviews.  Use Model Storming and Stand Up Design.  The eventual design will be stronger for it. October 16, 2009 5
Acknowledge Technology is not Your Biggest Problem Projects fail every day. Its most likely not their chosen framework. Projects are delivered by people. There will be someone “Who’s not doing it right”. Remember conversations not confrontations.  Mark Ramm October 16, 2009 6
Seek the Value in Functionality Henry Ford stated.  “If I'd asked my customers what they wanted, they'd have said a faster horse.” The answer can be found in the Agile Manifesto. “Collaboration over Contract” Help your customers with the “Why?” part. EinarLandre  -“97 Things Every Software Architect Should Know” October 16, 2009 7
Ensure Business Drives Architects often act as mediators. Transparency is crucial. Developers make decisions, but not business decisions.  Ensure that business lives up to their responsibility of providing direction and answering questions.  The side effect is otherwise accidental delegation. David Muirhead October 16, 2009 8
Reuse Is Also About People We’ve long known of the productivity benefits of reuse. Even the best architecture or language can fail user adoption.  Developers need know its there. They know how to use it. Are convinced its better than writing their own.  October 16, 2009 9
Be Subjective, Try Before Choosing We’re not all Rocket Scientists. Consult other teams to get them to pitch “their vision” of a given solution. Use a walking skeleton. Alastair Cockburn refers to it as: ,[object Object],Once the skeleton is in place, flesh it out by adding more end-to-end functionality incrementally. Cameron Purdy, Alastair Cockburn October 16, 2009 10
Continuously Integrate Build environment must be easily reproducible.  “It works on my machine” should be a thing of the past.   Big bang build and assembly processes are more relic’s from the “Waterfall” period. Augment continuous integration with unit/functional testing. Consider Build Federation for cross platform native assembly. October 16, 2009 11
Empower Developers Focus on the team.  Architecture is not about your ego nor your CV. Ensure that internal tools and conventions are honored.  Promote that tools, operating systems are for the most part left to the decision of the team. Listen to developers, if they say there’s a problem with the design, there probably is.  Philip Nelson- “97 Things Every Software Architect Should Know” October 16, 2009 12
Talk the Talk Eat your own dog food. Lead by example and be able to fulfill any role on the team. Do not sit in an ivory tower dictating the way forward. Be an expert in at least one tool, preferably an IDE. Avoid suggesting the latest technology if you have no experience with it. Specification’s alone have no inherent value. The goal is deployed production software. October 16, 2009 13
Don’t Repeat Yourself Duplication is evil. Repetition is a huge waste of time. Does you framework induce repetition? Has simple far from exemplary example code been the victim of “slash & paste”? October 16, 2009 14
Don't Control, Observe Instead You often need to balance Control vs. Chaos. You’ll need to trust the domain experts. Visualize what happens and get the 1,000 ft view. Resist the temptation to create an area of useless documentation. It might pass as contemporary art, but is useless as a model. Dean Leffingwell – “Scaling Software Agility – Best Practices for Large Enterprises” October 16, 2009 15
Challenge Preconceived Ideas Its architecture best practice to document, the reasons behind architectural decisions. “costs, performance, skills, time, politics…” Uncover assumptions. Assumptions are often based on “historical reasons”, FUD, resistance to change or coffee machine talk. “Ruby is insecure” or “Python is slow” or “Java has loads of XML files” Aids possible future re-evaluation. Justify those decisions NOT based on empirical evidence. October 16, 2009 16
Choose Technology That Plays Well With Others You need to be aware not only of their features, but also how well it works with existing systems. How does it play with existing skill sets, what sort of retraining will you need? What sort of baggage will it bring?  Does it create excess complexity that stops you from interoperating with other internal systems. Is it opinionated in the fact it see’s only one view of the world? Never select technology for yourself.  October 16, 2009 17
Record your Rationale You will have great idea’s which look great on paper. Sadly often it might not work out how you envisaged it. It might not scale, not pass UX design, it might prove to be unreliable. Decision’s will be made on why architectural choices are made, prototypes dropped or elaborated. Record results, reasons and other alternatives. Timothy High - “97 Things Every Software Architect Should Know” October 16, 2009 18
Share Knowledge and Experience Asking “What’s it in for me?” defeats the purpose. During the course of our careers, we’ll be tasked with building larger systems with greater zone’s of responsibility. You don't really understand something, until you can explain it easily to your peers. Sharing also helps in bonding, happens in little steps and is about creating an environment that communicates best and worst practices. Promote knowledge sharing, skill’s improvement session’s and common training curriculums. Viewing the system success as a whole rather than simply doing your own bit. October 16, 2009 19
Take Responsibility for Your Decisions Recognize your decision making process. Record your decision and the reasons for it. Make sure you’ve communicated it to all those directly and indirectly. Conduct a review process, evaluate whether or not they remain valid or not. Ensure you have team buy-in, after all they will actually enforce decisions they believe in. Delegate decisions to domain experts. Acknowledge there are those who subject matters in areas in which you are not. October 16, 2009 20
Support and Maintenance Support should not be an after thought. Especially since the majority of an application lifecycle is spent in maintenance.  Ignore this and your system will turn into a vile beast forever synonymous with failure. Architect’s need to focus on maintenance and happy administrators. Plan for developer input during support. Get support involved in planning for maintenance early, preferably as a core member of the maintenance team. Plan for backlash. October 16, 2009 21
Avoid Toxic Technical Debt Every project encounters a time when a bug must be fixed or a new feature added. You can “do it right”, “take a shortcut” or implement an “evolutionary dead end”. You’ll be under pressure to get it “done” quickly. As with most architectural issues there is a trade-off involved. There's a hidden cost to making these quick and dirty fixes. Remedy in the near term.  Martin Fowler, Bob Martin October 16, 2009 22
Think About Performance Early Often performance, fault tolerance, uptime and maintenance are over looked by product owners. Often introduced very late in the project’s lifecycle. Start small and start early. Understand the theoretical achievable performance.  You need to know the kinds of changes that lead to  a degradation in performance.  When you encounter performance problems, you can focus on the most recent changes.  You can easier understand the costs as a result. Cameron Purdy -  “10 Patterns for Scaling Out Java Applications” October 16, 2009 23
Realize The Interface is the System Too many good products are hidden behind poor user interfaces. Users don’t care about your chosen technology platform. User-interface experts should be involved at an early stage. UX should be an integral part of the decision-making process. October 16, 2009 24
Communicate Architectural Trade Offs You can't have it all.  It is virtually impossible to design an architecture that meet expectation all the time. Trying to fulfill each and every requirement creates an unstable architecture that excels at nothing.  You need to be able to convey actual reality. October 16, 2009 25
Avoid tick-the box Culture Often Product Owners will be driven by short term benefit. This often delivers little by way of value to end users. But might reward a Product Owner for reaching their targets. You need to think differently, challenge the status quo and bring different ideas to your project. Adding features that a user does not need simply because the competition has them, brings no value to the user and hardly is a competitive differentiator. October 16, 2009 26
Fail Early: Learn from Mistakes Success is relative and short lived. But failure is a near-constant.  Things will not all work out as expected. Learning will not happen from failure but how you analyze it and what you ultimately learn. The quicker this happens, the sooner you learn “It ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!” – Rocky Balboa(2006) October 16, 2009 27
Prefer Principles, Convention over Personal Opinion and Taste Start by describing the principles that were followed.  This is easier for those tasked with understanding and implementing the architecture.  Architecture that’s clear and principle orientated is easier to empower developers and ensure consistency. Disagreements are resolved with more reasoned discussion to occur without issues being personalized.  It also helps to communicate and reason an architecture to those unfamiliar with a given a technology. After all those with limited technical skill sets might have little to contribute technology wise. But principles they can contribute to. Michael  Harmer - “97 Things Every Software Architect Should Know” October 16, 2009 28
Thank You! Questions ? October 16, 2009 29

More Related Content

What's hot

Tdd 4 everyone full version
Tdd 4 everyone full versionTdd 4 everyone full version
Tdd 4 everyone full versionLior Israel
 
Agile engineering practices – a short overview
Agile engineering practices – a short overviewAgile engineering practices – a short overview
Agile engineering practices – a short overviewSerhiy Yevtushenko
 
Frank's Learning Summary - Evolution of agile testing
Frank's Learning Summary - Evolution of agile testingFrank's Learning Summary - Evolution of agile testing
Frank's Learning Summary - Evolution of agile testingFrank Lee
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should knowRichard Cheng
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming PresentationThoughtWorks
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015Raghu Karnati
 
Test driven development
Test driven developmentTest driven development
Test driven developmentShalabh Saxena
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Vinit Kumar Singh
 
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Mikalai Alimenkou
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Fatkul Amri
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesJon McNestrie
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming Fatemeh Karimi
 
Software testing agile_environment_wp
Software testing agile_environment_wpSoftware testing agile_environment_wp
Software testing agile_environment_wpCristiano Caetano
 
XP Explained
XP ExplainedXP Explained
XP Explainedvineet
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDDUONG Trong Tan
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme ProgrammingJoe Drumgoole
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAniruddha Chakrabarti
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecBen Mabey
 

What's hot (20)

Tdd 4 everyone full version
Tdd 4 everyone full versionTdd 4 everyone full version
Tdd 4 everyone full version
 
Agile engineering practices – a short overview
Agile engineering practices – a short overviewAgile engineering practices – a short overview
Agile engineering practices – a short overview
 
Frank's Learning Summary - Evolution of agile testing
Frank's Learning Summary - Evolution of agile testingFrank's Learning Summary - Evolution of agile testing
Frank's Learning Summary - Evolution of agile testing
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming Presentation
 
Agile Testing 20021015
Agile Testing 20021015Agile Testing 20021015
Agile Testing 20021015
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !Extreme programming - a quick and agile overview !
Extreme programming - a quick and agile overview !
 
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)Development without Testers: Myth or Real Option? (ConfeT&QA conference)
Development without Testers: Myth or Real Option? (ConfeT&QA conference)
 
Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)Test Driven Development (TDD) & Continuous Integration (CI)
Test Driven Development (TDD) & Continuous Integration (CI)
 
XP In 10 slides
XP In 10 slidesXP In 10 slides
XP In 10 slides
 
Extreme Programming (XP) for Dummies
Extreme Programming (XP) for DummiesExtreme Programming (XP) for Dummies
Extreme Programming (XP) for Dummies
 
Agile software development and extreme Programming
Agile software development and extreme Programming  Agile software development and extreme Programming
Agile software development and extreme Programming
 
Software testing agile_environment_wp
Software testing agile_environment_wpSoftware testing agile_environment_wp
Software testing agile_environment_wp
 
XP Explained
XP ExplainedXP Explained
XP Explained
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
 
Introduction To Extreme Programming
Introduction To Extreme ProgrammingIntroduction To Extreme Programming
Introduction To Extreme Programming
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 

Viewers also liked

Walking Skeleton
Walking SkeletonWalking Skeleton
Walking Skeletonhepphep
 
Walking Skeleton as presented at ACCU 2015 in Bristol, England
Walking Skeleton as presented at ACCU 2015 in Bristol, EnglandWalking Skeleton as presented at ACCU 2015 in Bristol, England
Walking Skeleton as presented at ACCU 2015 in Bristol, EnglandTSundberg
 
User Story Mapping (2008)
User Story Mapping (2008)User Story Mapping (2008)
User Story Mapping (2008)Jeff Patton
 
User Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyUser Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyJeff Patton
 
200808 AIM Walking Skeleton
200808 AIM Walking Skeleton200808 AIM Walking Skeleton
200808 AIM Walking SkeletonTroy Young
 
Daniil Michailovas - Agile estimating and planning
Daniil Michailovas - Agile estimating and planningDaniil Michailovas - Agile estimating and planning
Daniil Michailovas - Agile estimating and planningAgile Lietuva
 
Elevator Pitch Tips
Elevator Pitch TipsElevator Pitch Tips
Elevator Pitch TipsMarc Nathan
 
Agile planning and estimating
Agile planning and estimatingAgile planning and estimating
Agile planning and estimatingBrett Child
 
Unit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonUnit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonSeb Rose
 
Agile Estimating & Planning by Amaad Qureshi
Agile Estimating & Planning by Amaad QureshiAgile Estimating & Planning by Amaad Qureshi
Agile Estimating & Planning by Amaad QureshiAmaad Qureshi
 
Easy Talk 4 Teens - Advanced : Elevator Speech
Easy Talk 4 Teens - Advanced : Elevator SpeechEasy Talk 4 Teens - Advanced : Elevator Speech
Easy Talk 4 Teens - Advanced : Elevator SpeechRebecca Reed
 
30 Sec Pitch - for High School Students
30 Sec Pitch - for High School Students30 Sec Pitch - for High School Students
30 Sec Pitch - for High School StudentsRick Stomphorst
 
User Story Mapping Workshop
User Story Mapping WorkshopUser Story Mapping Workshop
User Story Mapping WorkshopDana Pylayeva
 
Short scrum games the efficient way to produce team cohesion
Short scrum games   the efficient way to produce team cohesionShort scrum games   the efficient way to produce team cohesion
Short scrum games the efficient way to produce team cohesionAgileee
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a NutshellVersionOne
 

Viewers also liked (20)

Walking Skeleton
Walking SkeletonWalking Skeleton
Walking Skeleton
 
Walking Skeleton as presented at ACCU 2015 in Bristol, England
Walking Skeleton as presented at ACCU 2015 in Bristol, EnglandWalking Skeleton as presented at ACCU 2015 in Bristol, England
Walking Skeleton as presented at ACCU 2015 in Bristol, England
 
User Story Mapping (2008)
User Story Mapping (2008)User Story Mapping (2008)
User Story Mapping (2008)
 
User Story Mapping, Discover the whole story
User Story Mapping, Discover the whole storyUser Story Mapping, Discover the whole story
User Story Mapping, Discover the whole story
 
200808 AIM Walking Skeleton
200808 AIM Walking Skeleton200808 AIM Walking Skeleton
200808 AIM Walking Skeleton
 
Daniil Michailovas - Agile estimating and planning
Daniil Michailovas - Agile estimating and planningDaniil Michailovas - Agile estimating and planning
Daniil Michailovas - Agile estimating and planning
 
Elevator Pitch Tips
Elevator Pitch TipsElevator Pitch Tips
Elevator Pitch Tips
 
Agile planning and estimating
Agile planning and estimatingAgile planning and estimating
Agile planning and estimating
 
Unit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonUnit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking Skeleton
 
User Story Mapping
User Story MappingUser Story Mapping
User Story Mapping
 
Agile Estimating & Planning by Amaad Qureshi
Agile Estimating & Planning by Amaad QureshiAgile Estimating & Planning by Amaad Qureshi
Agile Estimating & Planning by Amaad Qureshi
 
full-stack agile: Common Agile Myths
full-stack agile: Common Agile Mythsfull-stack agile: Common Agile Myths
full-stack agile: Common Agile Myths
 
Easy Talk 4 Teens - Advanced : Elevator Speech
Easy Talk 4 Teens - Advanced : Elevator SpeechEasy Talk 4 Teens - Advanced : Elevator Speech
Easy Talk 4 Teens - Advanced : Elevator Speech
 
Stories, Backlog & Mapping
Stories, Backlog & MappingStories, Backlog & Mapping
Stories, Backlog & Mapping
 
30 Sec Pitch - for High School Students
30 Sec Pitch - for High School Students30 Sec Pitch - for High School Students
30 Sec Pitch - for High School Students
 
User Story Mapping Workshop
User Story Mapping WorkshopUser Story Mapping Workshop
User Story Mapping Workshop
 
Short scrum games the efficient way to produce team cohesion
Short scrum games   the efficient way to produce team cohesionShort scrum games   the efficient way to produce team cohesion
Short scrum games the efficient way to produce team cohesion
 
full-stack agile - Scrum Basics
full-stack agile -  Scrum Basicsfull-stack agile -  Scrum Basics
full-stack agile - Scrum Basics
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a Nutshell
 
Business model traction
Business model traction Business model traction
Business model traction
 

Similar to Architecture In An Agile World

Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseKevlin Henney
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsUwe Friedrichsen
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010Stephanie Magleby
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Jorge López-Lago
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
[I3 d]04 interactivity
[I3 d]04 interactivity[I3 d]04 interactivity
[I3 d]04 interactivityjylee_kgit
 
The "Evils" of Optimization
The "Evils" of OptimizationThe "Evils" of Optimization
The "Evils" of OptimizationBlackRabbitCoder
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Interaction Design Guest Lecture - UVA CS 3240
Interaction Design Guest Lecture - UVA CS 3240Interaction Design Guest Lecture - UVA CS 3240
Interaction Design Guest Lecture - UVA CS 3240Colin Butler
 
The Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX FactorThe Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX FactorEffectiveUI
 
The Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX FactorThe Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX FactorEffective
 
The Human Experience: Design Systems & The 9 States.
The Human Experience: Design Systems & The 9 States.The Human Experience: Design Systems & The 9 States.
The Human Experience: Design Systems & The 9 States.Rachael Guay
 
Prototyping - 2015 PhillyCHI UX Workshop Series
Prototyping - 2015 PhillyCHI UX Workshop SeriesPrototyping - 2015 PhillyCHI UX Workshop Series
Prototyping - 2015 PhillyCHI UX Workshop SeriesMatthew Thomas
 
Designing Structure: Interaction Design
Designing Structure: Interaction DesignDesigning Structure: Interaction Design
Designing Structure: Interaction DesignChristina Wodtke
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseKevlin Henney
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtManu Pk
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsSteve Pember
 
Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009bosc
 

Similar to Architecture In An Agile World (20)

Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
[I3 d]04 interactivity
[I3 d]04 interactivity[I3 d]04 interactivity
[I3 d]04 interactivity
 
The "Evils" of Optimization
The "Evils" of OptimizationThe "Evils" of Optimization
The "Evils" of Optimization
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Interaction Design Guest Lecture - UVA CS 3240
Interaction Design Guest Lecture - UVA CS 3240Interaction Design Guest Lecture - UVA CS 3240
Interaction Design Guest Lecture - UVA CS 3240
 
The Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX FactorThe Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX Factor
 
The Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX FactorThe Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX Factor
 
The Human Experience: Design Systems & The 9 States.
The Human Experience: Design Systems & The 9 States.The Human Experience: Design Systems & The 9 States.
The Human Experience: Design Systems & The 9 States.
 
Prototyping - 2015 PhillyCHI UX Workshop Series
Prototyping - 2015 PhillyCHI UX Workshop SeriesPrototyping - 2015 PhillyCHI UX Workshop Series
Prototyping - 2015 PhillyCHI UX Workshop Series
 
Designing Structure: Interaction Design
Designing Structure: Interaction DesignDesigning Structure: Interaction Design
Designing Structure: Interaction Design
 
Prototyping
PrototypingPrototyping
Prototyping
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debt
 
Reactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and GrailsReactive Microservice Architecture with Groovy and Grails
Reactive Microservice Architecture with Groovy and Grails
 
Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009
 

Recently uploaded

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...caitlingebhard1
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaWSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 

Recently uploaded (20)

Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

Architecture In An Agile World

  • 1. Architecture in an Agile World - Best Practices Every Architect Should Follow James Cooper - james.cooper@f-secure.com Lead Platforms Architect
  • 2. Agenda Intro Best Practices Questions & Answers October 16, 2009 2
  • 3. About the Speaker James Cooper is the Lead Platforms Architect with F-Secure Corporation. Prior to joining F-Secure, James worked for Wificom Technologies(Finland) and EDB Maxware Benelux(Netherlands) on a variety of projects ranging from Wi-Fi access management to Access Control Solutions(NATO, Dutch Ministry of Defence) and Finance(ING). James has been has been working in Java since 1996, Java EE since 1999, RoR since 2008 and hacking some Visio since 2009. He still codes. Particularly hacking Objective-C and creating his own DSL called NIH in Haskell. October 16, 2009 3
  • 4. Disclaimer October 16, 2009 4 Religious application of principles learned from a presentation during a conference is not a substitute for common sense.
  • 5. Invite Peer Review Architects need to invite reviews. Discussing something always helps to show its weaknesses. 3 Minds are better than 1. Depending on the environment they’re also used to code reviews. Use Model Storming and Stand Up Design. The eventual design will be stronger for it. October 16, 2009 5
  • 6. Acknowledge Technology is not Your Biggest Problem Projects fail every day. Its most likely not their chosen framework. Projects are delivered by people. There will be someone “Who’s not doing it right”. Remember conversations not confrontations. Mark Ramm October 16, 2009 6
  • 7. Seek the Value in Functionality Henry Ford stated. “If I'd asked my customers what they wanted, they'd have said a faster horse.” The answer can be found in the Agile Manifesto. “Collaboration over Contract” Help your customers with the “Why?” part. EinarLandre -“97 Things Every Software Architect Should Know” October 16, 2009 7
  • 8. Ensure Business Drives Architects often act as mediators. Transparency is crucial. Developers make decisions, but not business decisions. Ensure that business lives up to their responsibility of providing direction and answering questions. The side effect is otherwise accidental delegation. David Muirhead October 16, 2009 8
  • 9. Reuse Is Also About People We’ve long known of the productivity benefits of reuse. Even the best architecture or language can fail user adoption. Developers need know its there. They know how to use it. Are convinced its better than writing their own. October 16, 2009 9
  • 10.
  • 11. Continuously Integrate Build environment must be easily reproducible. “It works on my machine” should be a thing of the past. Big bang build and assembly processes are more relic’s from the “Waterfall” period. Augment continuous integration with unit/functional testing. Consider Build Federation for cross platform native assembly. October 16, 2009 11
  • 12. Empower Developers Focus on the team. Architecture is not about your ego nor your CV. Ensure that internal tools and conventions are honored. Promote that tools, operating systems are for the most part left to the decision of the team. Listen to developers, if they say there’s a problem with the design, there probably is. Philip Nelson- “97 Things Every Software Architect Should Know” October 16, 2009 12
  • 13. Talk the Talk Eat your own dog food. Lead by example and be able to fulfill any role on the team. Do not sit in an ivory tower dictating the way forward. Be an expert in at least one tool, preferably an IDE. Avoid suggesting the latest technology if you have no experience with it. Specification’s alone have no inherent value. The goal is deployed production software. October 16, 2009 13
  • 14. Don’t Repeat Yourself Duplication is evil. Repetition is a huge waste of time. Does you framework induce repetition? Has simple far from exemplary example code been the victim of “slash & paste”? October 16, 2009 14
  • 15. Don't Control, Observe Instead You often need to balance Control vs. Chaos. You’ll need to trust the domain experts. Visualize what happens and get the 1,000 ft view. Resist the temptation to create an area of useless documentation. It might pass as contemporary art, but is useless as a model. Dean Leffingwell – “Scaling Software Agility – Best Practices for Large Enterprises” October 16, 2009 15
  • 16. Challenge Preconceived Ideas Its architecture best practice to document, the reasons behind architectural decisions. “costs, performance, skills, time, politics…” Uncover assumptions. Assumptions are often based on “historical reasons”, FUD, resistance to change or coffee machine talk. “Ruby is insecure” or “Python is slow” or “Java has loads of XML files” Aids possible future re-evaluation. Justify those decisions NOT based on empirical evidence. October 16, 2009 16
  • 17. Choose Technology That Plays Well With Others You need to be aware not only of their features, but also how well it works with existing systems. How does it play with existing skill sets, what sort of retraining will you need? What sort of baggage will it bring? Does it create excess complexity that stops you from interoperating with other internal systems. Is it opinionated in the fact it see’s only one view of the world? Never select technology for yourself. October 16, 2009 17
  • 18. Record your Rationale You will have great idea’s which look great on paper. Sadly often it might not work out how you envisaged it. It might not scale, not pass UX design, it might prove to be unreliable. Decision’s will be made on why architectural choices are made, prototypes dropped or elaborated. Record results, reasons and other alternatives. Timothy High - “97 Things Every Software Architect Should Know” October 16, 2009 18
  • 19. Share Knowledge and Experience Asking “What’s it in for me?” defeats the purpose. During the course of our careers, we’ll be tasked with building larger systems with greater zone’s of responsibility. You don't really understand something, until you can explain it easily to your peers. Sharing also helps in bonding, happens in little steps and is about creating an environment that communicates best and worst practices. Promote knowledge sharing, skill’s improvement session’s and common training curriculums. Viewing the system success as a whole rather than simply doing your own bit. October 16, 2009 19
  • 20. Take Responsibility for Your Decisions Recognize your decision making process. Record your decision and the reasons for it. Make sure you’ve communicated it to all those directly and indirectly. Conduct a review process, evaluate whether or not they remain valid or not. Ensure you have team buy-in, after all they will actually enforce decisions they believe in. Delegate decisions to domain experts. Acknowledge there are those who subject matters in areas in which you are not. October 16, 2009 20
  • 21. Support and Maintenance Support should not be an after thought. Especially since the majority of an application lifecycle is spent in maintenance. Ignore this and your system will turn into a vile beast forever synonymous with failure. Architect’s need to focus on maintenance and happy administrators. Plan for developer input during support. Get support involved in planning for maintenance early, preferably as a core member of the maintenance team. Plan for backlash. October 16, 2009 21
  • 22. Avoid Toxic Technical Debt Every project encounters a time when a bug must be fixed or a new feature added. You can “do it right”, “take a shortcut” or implement an “evolutionary dead end”. You’ll be under pressure to get it “done” quickly. As with most architectural issues there is a trade-off involved. There's a hidden cost to making these quick and dirty fixes. Remedy in the near term. Martin Fowler, Bob Martin October 16, 2009 22
  • 23. Think About Performance Early Often performance, fault tolerance, uptime and maintenance are over looked by product owners. Often introduced very late in the project’s lifecycle. Start small and start early. Understand the theoretical achievable performance. You need to know the kinds of changes that lead to a degradation in performance. When you encounter performance problems, you can focus on the most recent changes. You can easier understand the costs as a result. Cameron Purdy - “10 Patterns for Scaling Out Java Applications” October 16, 2009 23
  • 24. Realize The Interface is the System Too many good products are hidden behind poor user interfaces. Users don’t care about your chosen technology platform. User-interface experts should be involved at an early stage. UX should be an integral part of the decision-making process. October 16, 2009 24
  • 25. Communicate Architectural Trade Offs You can't have it all. It is virtually impossible to design an architecture that meet expectation all the time. Trying to fulfill each and every requirement creates an unstable architecture that excels at nothing. You need to be able to convey actual reality. October 16, 2009 25
  • 26. Avoid tick-the box Culture Often Product Owners will be driven by short term benefit. This often delivers little by way of value to end users. But might reward a Product Owner for reaching their targets. You need to think differently, challenge the status quo and bring different ideas to your project. Adding features that a user does not need simply because the competition has them, brings no value to the user and hardly is a competitive differentiator. October 16, 2009 26
  • 27. Fail Early: Learn from Mistakes Success is relative and short lived. But failure is a near-constant. Things will not all work out as expected. Learning will not happen from failure but how you analyze it and what you ultimately learn. The quicker this happens, the sooner you learn “It ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!” – Rocky Balboa(2006) October 16, 2009 27
  • 28. Prefer Principles, Convention over Personal Opinion and Taste Start by describing the principles that were followed.  This is easier for those tasked with understanding and implementing the architecture.  Architecture that’s clear and principle orientated is easier to empower developers and ensure consistency. Disagreements are resolved with more reasoned discussion to occur without issues being personalized. It also helps to communicate and reason an architecture to those unfamiliar with a given a technology. After all those with limited technical skill sets might have little to contribute technology wise. But principles they can contribute to. Michael Harmer - “97 Things Every Software Architect Should Know” October 16, 2009 28
  • 29. Thank You! Questions ? October 16, 2009 29