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

Agile engineering practices – a short overview
Agile engineering practices – a short overviewAgile engineering practices – a short overview
Agile engineering practices – a short overview
Serhiy 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 testing
Frank Lee
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming Presentation
ThoughtWorks
 
Test driven development
Test driven developmentTest driven development
Test driven development
Shalabh Saxena
 
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_wp
Cristiano Caetano
 

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

200808 AIM Walking Skeleton
200808 AIM Walking Skeleton200808 AIM Walking Skeleton
200808 AIM Walking Skeleton
Troy Young
 

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

Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
Uwe Friedrichsen
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010
Stephanie Magleby
 
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
Svetlin Nakov
 
[I3 d]04 interactivity
[I3 d]04 interactivity[I3 d]04 interactivity
[I3 d]04 interactivity
jylee_kgit
 
The "Evils" of Optimization
The "Evils" of OptimizationThe "Evils" of Optimization
The "Evils" of Optimization
BlackRabbitCoder
 
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
Manu 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 Grails
Steve Pember
 
Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009
bosc
 

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

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

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