SlideShare uma empresa Scribd logo
1 de 58
Organic,
not Chaotic:
How to grow
your Architecture

            Liz Keogh
            liz@lunivore.com
            @lunivore
Manager



      Architect             Architect



Dev               Dev         Dev
Analysis   Dev   Test   Release
Options have value.

   Options expire.

 Never commit early
unless you know why.
Chris Matts
Rework



Developers            Testers



    Deliberate Discovery skills
Less Rework



  Testers       Developers       Testers



Deliberate Discovery skills
Rework



Architects     Developers       Architects



   Strategic    Tactical         New
   plans        constraints      plans
Less Rework



Architects        Developers    Architects



  Architectural
  “tests”
In order to achieve a goal
As the stakeholder
I want some stuff.
In order to reduce security
  operations costs
As the VP of operations
I want users to use
  our single sign on.
Or, how do we know
 when we’re done?
1   1   1
            2 2 2
                    3 3 3
1

        1

        1

    2

    2

3

3
1

1

1

2

2

3

3
$$$$$$$$

     $$$$$$$$

     $$$$$$$$
                Shipped (1 year)
      $$$$$

      $$$$$

        $$
                              Deadline
$$
                Not Shipped
$$
$$$$$$$$   Shipped (2 months)
$$$$$$$$

$$$$$$$$
                  Not Shipped
 $$$$$

 $$$$$

           $$     Shipped (2 months)
  $$
                  Not Shipped
  $$
Liz Keogh
liz@lunivore.com
@lunivore
“Managing the Design Factory”,
Don Reinertsen

“Waltzing with Bears”,
Tom de Marco and Timothy Lister

“Domain Driven Design”,
Eric Evans

Mais conteúdo relacionado

Destaque

How to test the inside of your head
How to test the inside of your headHow to test the inside of your head
How to test the inside of your headLiz Keogh
 
Become Software Tester or Developer
Become Software Tester or DeveloperBecome Software Tester or Developer
Become Software Tester or DeveloperKMS Technology
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentLiz Keogh
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with CucumberBrandon Keepers
 
Assholes are killing your project
Assholes are killing your projectAssholes are killing your project
Assholes are killing your projectDonnie Berkholz
 

Destaque (7)

How to test the inside of your head
How to test the inside of your headHow to test the inside of your head
How to test the inside of your head
 
Agile101
Agile101Agile101
Agile101
 
Become Software Tester or Developer
Become Software Tester or DeveloperBecome Software Tester or Developer
Become Software Tester or Developer
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Assholes are killing your project
Assholes are killing your projectAssholes are killing your project
Assholes are killing your project
 
BDD in Action - building software that matters
BDD in Action - building software that mattersBDD in Action - building software that matters
BDD in Action - building software that matters
 

Semelhante a Organic, not chaotic

Designer vs Developer (Barcamp Memphis 2009)
Designer vs Developer (Barcamp Memphis 2009)Designer vs Developer (Barcamp Memphis 2009)
Designer vs Developer (Barcamp Memphis 2009)Steven Trotter
 
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UXMaximizing the impact of UX in an agile environment: Mixing agile and Lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UXJohn Whalen
 
Maximizing the impact of UX in an agile environment: Mixing agile and lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and lean UXMaximizing the impact of UX in an agile environment: Mixing agile and lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and lean UXBrilliant Experience
 
Feedback Loops
Feedback LoopsFeedback Loops
Feedback Loopscowboyd
 
Are Agile Projects Doomed to Half-Baked Design?
Are Agile Projects Doomed to Half-Baked Design?Are Agile Projects Doomed to Half-Baked Design?
Are Agile Projects Doomed to Half-Baked Design?theinfonaut
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile ArchitectureSteve Green
 
User-Centered Design at The Economist
User-Centered Design at The EconomistUser-Centered Design at The Economist
User-Centered Design at The EconomistDanny Setiawan
 
Personal kanban
Personal kanbanPersonal kanban
Personal kanbanAcquate
 
The Agile PMP - Pillar Technology
The Agile PMP - Pillar TechnologyThe Agile PMP - Pillar Technology
The Agile PMP - Pillar TechnologyMike Cottmeyer
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011TEST Huddle
 
You can do better! Improve your design process (UX Scotland)
You can do better! Improve your design process (UX Scotland)You can do better! Improve your design process (UX Scotland)
You can do better! Improve your design process (UX Scotland)Peter Boersma
 
How we Sort of Make Agile Work - A Case Study
How we Sort of Make Agile Work - A Case StudyHow we Sort of Make Agile Work - A Case Study
How we Sort of Make Agile Work - A Case StudyUXPA International
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Michael Lamont
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSmartBear
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyJoshua Randall
 
You can do better! (dsgnday)
You can do better! (dsgnday)You can do better! (dsgnday)
You can do better! (dsgnday)Peter Boersma
 
Improve your design process and expand your influence - UX Amsterdam
Improve your design process and expand your influence - UX AmsterdamImprove your design process and expand your influence - UX Amsterdam
Improve your design process and expand your influence - UX AmsterdamPeter Boersma
 

Semelhante a Organic, not chaotic (20)

Designer vs Developer (Barcamp Memphis 2009)
Designer vs Developer (Barcamp Memphis 2009)Designer vs Developer (Barcamp Memphis 2009)
Designer vs Developer (Barcamp Memphis 2009)
 
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UXMaximizing the impact of UX in an agile environment: Mixing agile and Lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and Lean UX
 
Maximizing the impact of UX in an agile environment: Mixing agile and lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and lean UXMaximizing the impact of UX in an agile environment: Mixing agile and lean UX
Maximizing the impact of UX in an agile environment: Mixing agile and lean UX
 
Feedback Loops
Feedback LoopsFeedback Loops
Feedback Loops
 
Are Agile Projects Doomed to Half-Baked Design?
Are Agile Projects Doomed to Half-Baked Design?Are Agile Projects Doomed to Half-Baked Design?
Are Agile Projects Doomed to Half-Baked Design?
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 
User-Centered Design at The Economist
User-Centered Design at The EconomistUser-Centered Design at The Economist
User-Centered Design at The Economist
 
Personal kanban
Personal kanbanPersonal kanban
Personal kanban
 
The Agile PMP - Pillar Technology
The Agile PMP - Pillar TechnologyThe Agile PMP - Pillar Technology
The Agile PMP - Pillar Technology
 
Scrum agile process
Scrum agile processScrum agile process
Scrum agile process
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
 
You can do better! Improve your design process (UX Scotland)
You can do better! Improve your design process (UX Scotland)You can do better! Improve your design process (UX Scotland)
You can do better! Improve your design process (UX Scotland)
 
How we Sort of Make Agile Work - A Case Study
How we Sort of Make Agile Work - A Case StudyHow we Sort of Make Agile Work - A Case Study
How we Sort of Make Agile Work - A Case Study
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the Ugly
 
Requirements the Last Bottleneck
Requirements the Last BottleneckRequirements the Last Bottleneck
Requirements the Last Bottleneck
 
Designer vs Developer
Designer vs DeveloperDesigner vs Developer
Designer vs Developer
 
You can do better! (dsgnday)
You can do better! (dsgnday)You can do better! (dsgnday)
You can do better! (dsgnday)
 
Improve your design process and expand your influence - UX Amsterdam
Improve your design process and expand your influence - UX AmsterdamImprove your design process and expand your influence - UX Amsterdam
Improve your design process and expand your influence - UX Amsterdam
 

Último

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Último (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

Organic, not chaotic

Notas do Editor

  1. Architects have the responsibility to ensure that the Enterprise can continue to deliver compatible software over long periods of time. Often they don’t code the frameworks or tools they use to ensure this, or if they do, development teams often don’t use them.Developers have the responsibility to deliver their particular project. Often teams of developers are asked to work weekends and overtime if it looks like they might not deliver. Devs are under pressure to get something working and out of the door, now, and rarely have time to help an Architecture team solve their larger, longer-term problem.
  2. We’ve been talking about incremental and Agile architecture for years. There are thousands of papers and blogs on the subject. So why doesn’t it work?
  3. The teams have radically conflicting goals!
  4. The teams are rewarded for meeting those goals – and not for meeting the other team’s!
  5. Each project is usually funded by some particular part of the business. No single department wants to pay to ensure that they can work effectively with other departments! So nobody pays for this or budgets for it. Paying the architecture team isn’t enough, because this has to be done as part of every delivered system and feature.
  6. Architects are still seen as hierarchically “above” software developers. Architects tell developers what to do, and developers do it (except they don’t’).
  7. Meanwhile, Lean and Agile are helping to create whole teams which work together to deliver something to the business. Because the traditional hierarchies are disappearing, Architects can no longer tell developers to “just do it”.
  8. Another problem is that by the time the architects have decided on the architecture they’d like, the development projects are often already underway. And when the architects tell the developers what to do, the developers tell them why that won’t work. In traditional software development, teams tried to make sure they got it right before they started work. Nowadays we know we can’t get everything right up front, so the development teams are assuming that some of what they do, at least, will be wrong. But are the Architects doing anything differently?
  9. Agile methodologies take advantage of fast feedback loops to get developers the learning they need to adapt to the things they find out are wrong. That’s great, except that how will you know architecture is working until a couple of systems are both built on top of it? Architectural feedback is by its nature pretty slow.Lean methodologies, however, ask us to look at the whole value chain – the production of software from beginning to end – and to make that whole value chain quicker. It does this by finding the slow feedback loops and making them faster (because software development is more like product development than a production line). So how can we make architecture faster?
  10. Once enterprise architecture is in place it’s really hard to change, compared to application software. It represents a significant commitment…
  11. … and you know how much I love Real Options, right? I hate commitments. As a developer, I have enough problem with the commitments I made just trying to implement an application, let alone take on board an entire enterprise! I don’t want to do that.(For those people new to Real Options, my favourite example is the Brickell Key awards at LSSC 2011. David Anderson and a bunch of valuable consultants had to get together to vote for 2 out of a shortlist of 6 nominees to win the award. The only time the consultants could get together was Tuesday, the day before the conference. The announcements for winners were going to be made on the Thursday. The lead time for getting the crystal trophies engraved was 4 weeks!So, David Anderson paid to get 6 trophies cut. It cost $500 extra; a lot less than the day rates of all the consultants. That’s Real Options thinking!)
  12. Imagine a project that you did recently – something reasonably chunky. How long would it take to do the same project again, with the same people, same technology and same requirements – just again?Many people think that it will take 20 – 40% less.
  13. This is because the team have already learnt what it is they need to do. They’ve discovered all the “gotchas”, small and large, have talked to the business to understand the requirements, and they can go faster as a result.
  14. Any project without risks has already been done by the same team before, so why are you doing it again? There’s always some differentiator for each project; something which makes it unlike the projects which have gone before.
  15. The newer the components of a project are, the more uncertainty it will have. Keeping options open is a good practice in those situations.
  16. This.
  17. In BDD, we put the testers first with their evil Deliberate Discovery skills that always break my code. Aha! Now I *know* where the gotchas are going to be – at least, the ones they can tell me about – so I’ll code better quality work so that we don’t run into that problem. At least not so much.
  18. We can do this process for anyone who traditionally takes on a gatekeeping role, even architects! Traditionally, architects are always adjusting their plans for the work that’s already been done.
  19. What if we could define “tests” that allow the developers to know whether their software will help the architects or not?
  20. This is a different version of the “As a… I want… So that…” template that Mike Cohn uses a lot and which came from the Connextra guys in London. Mike Cohn has said in the past that the “so that” is optional. I don’t believe it is. I like to put it first. Now we know what it is we’re trying to achieve.
  21. In any organisation, there are multiple stakeholders – not just users. In this instance, we show the VP of operations and his goals. Now we have a mechanism for juggling the needs of multiple stakeholders and making them apparent to others! They’re not user stories! http://lizkeogh.com/2010/02/02/theyre-not-user-stories/
  22. If all stories were aimed at users, we’d get rid of CAPTCHAs for a start. “As a user, I want a CAPTCHA so that… wait, no, I don’t!” We’d also get rid of ads. So who are the architectural stakeholders?
  23. The rules which apply to good application scenarios or tests also apply to architectural ones.
  24. This is the template which we normally use for BDD. Let’s look at this from an architectural POV.
  25. Here’s a scenario. Notice that this doesn’t really talk about the benefit of single-sign-on, or say how you’re going to do it. But it acts as a test to see if it’s working, and helps the developers understand what’s needed.
  26. This is a question I like to ask when I’m picking up a scenario for the first time.
  27. Oh, yes. Some people don’t have access to all the systems, so they should be refused access.
  28. This is the second question I like to ask. I like talking about pixies because then it gets people’s heads out of the software. Think about a message bus. If it were pixies carrying the messages, why would that be useful? What do the pixies achieve?
  29. Oh, we also need to log access for auditing requirements – the legal guys want it. (There’s another stakeholder.)
  30. It’s much more important to have the conversations around these things than it is to write them down, and more important to write them down than to design automated tests around them. Having said that, you might want to write performance tests, run security pen tests, etc. – and it’s OK to do it without the Given, When, Then format.
  31. In any architecturally complex system, the feature we’re building will only need part of that system. By building just enough for the feature, we can get information about whether our chosen architecture will suit our stakeholders’ needs while leaving our options open elsewhere in the system for the future.
  32. We code just enough of the architecture to get our feature working.
  33. Here’s how we’ve traditionally done software. We take a big bucket of requirements…
  34. We divide it into milestones…
  35. And then because we’re doing Scrum, we turn it on its side and split it up a bit finer…
  36. …then we call it a backlog. How is this any different from Waterfall?
  37. We normally do this because we think that a deadline is the risky part of the project. I find a lot of deadlines are purely political anyway. I don’t know about you, but I hate working weekends and evenings just so a PM can look cool because they got their project in “on time”!
  38. What if there was some aspect of the project that was differentiating? How little could we get away with doing just to get that one differentiating feature out of the door? Now we’re making money earlier, and if it turns out that our feature is too hard or it doesn’t rock the market, we haven’t invested huge amounts of money.
  39. This is a great book on just that.
  40. So let’s say that there’s one risky component in our architecture. One thing that we don’t know whether it’s going to work or be performant, etc. Do we really need to do all the other bits of architecture in order to check that one piece?
  41. In some situations, I’ve hard-coded the data directly into the app, just so that I can test some other part of it – like connecting to a legacy application, or testing message bus performance, etc. Getting data out of a database isn’t risky. We can always do that later! But now, I’ve left my options open to change that architecture too – so maybe I don’t have to get the data from a database after all!
  42. Sometimes we want to pay a bit extra to keep our options open. We need to gather audit information in case an audit is required. We need to capture customers’ email addresses – we don’t actually have anything to send them yet, but it seems like a nice option to have. Data integrity is basically about having options in the future, so it’s worth considering what optional data we might need.
  43. Dear Architects, if you’re writing a shared library for me to use, please keep it small and focused on my needs. If you start trying to wedge my needs and everyone else’s into a huge monstrosity of a library that suits everyone, you’ll find I’m using your library *and* going around it too. If you write one just for me, then write one just for me and the team next door, then grow it, it stands a better chance of having a nice clean usable interface and being suitable for real business requirements.
  44. I once talked to a manager in a company which had bought four other companies. Each one did something unique and special, which was why they had bought them. By trying to make all the four companies integrate their software in the same way, the purchasing company was about to make each of these others lose its differentiator – the valuable stuff!
  45. Eric Evans refers to the differentiator as the “core domain”.
  46. Eric Evans uses the concept of a cargo shipping company. If you ask the shipping department, cargo has height, weight, fragility, etc. If you ask the accounts department, cargo has a price, a customer and a billing date. If you ask the logistics guys, it has five legs, one of which is by sea. If you ask the legal department they’ll tell you who’s insuring it and at which point ownership changes. They each have some information they need to share, but they don’t need to speak each other’s languages – just a bit of each other’s languages. A translator between each of these “bounded contexts” may be faster to code and more maintainable than a huge data dictionary!
  47. The best approach for an architecture team is to get stuck in there. Go sit with the teams, ask them what’s easy and what’s hard, help them code and become part of the team yourself.