b e y o n d a c c i d e n ta l a r c h i t e c t u r e
play

B E Y O N D A C C I D E N TA L A R C H I T E C T U R E @ P L A I N - PowerPoint PPT Presentation

@ P L A I N P R O G R A M M E R # O R E I L LY S A C O N B E Y O N D A C C I D E N TA L A R C H I T E C T U R E @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N B E Y O N D A C C I D E N TA L A R C H I T E C T U R E Welcome, and


  1. @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N B E Y O N D A C C I D E N TA L A R C H I T E C T U R E

  2. @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N B E Y O N D A C C I D E N TA L A R C H I T E C T U R E Welcome, and thank you for coming to my talk this morning. Today we will be discussing a bit about how to move our teams beyond accidental architecture.

  3. J A M E S T H O M P S O N Principal Software Engineer 
 Mavenlink @plainprogrammer 
 james@thomps.onl 
 By way of introductions, I am James Thompson. I am a Principal Software Engineer for a company called Mavenlink. We build project management software for professional services company and we are hiring for all skill levels in San Francisco and Salt Lake City. You can find me online fairly easily. So, please feel free to reach out if you have any questions, feedback, or the like to share.

  4. P U R P O S E & A G E N D A Improve our ability to cope with architectural change and encourage on-going intentionality D E F I N I T I O N S M I S U N D E R S TA N D I N G S R E A L I G N M E N T A P P R O A C H E S C O N C L U S I O N Before we get too far along I want to make sure everyone knows what we will be covering here and how we’re going to work our way through it. First, the goal and purpose I have is to improve our ability to cope with architectural change and encourage on-going intentionality. [CLICK] We will start with some definitions around the subject, including defining what I mean when I say Accidental Architecture. [CLICK] We will also explore ways that I think the role of the Software Architect can be misunderstood and rendered less e ff ective. [CLICK] Then I will try to provide a high level way for us to realign our thinking about the role of the architect. [CLICK] Then we’ll delve into approaches to achieving the realignment practically and specifically examine how they serve the goal of improving our ability to cope with architectural change and maintaining intentionality. [CLICK] Finally, we’ll conclude with some restatement and some recommended resources.

  5. I F Y O U H AV E Q U E S T I O N S Also, so that everyone has appropriate expectations. I am not going to be doing a Q&A portion as part of the presentation. I will be available following the presentation for anyone who wants to discuss, but I will have a handful of pauses in the presentation where I’ll encourage us all to engage with one another about the material and give some provide breaks to process what I’m presenting. You are all invited to reach out to me via email and Twitter, and my details will be placed along the bottom of the slides, so as you have thoughts you can send them along and I’ll do my best to get back to you promptly.

  6. I N T R O D U C E Y O U R S E LV E S

  7. D E F I N I T I O N S

  8. “ T H E I M P O R TA N T S T U F F. W H AT E V E R T H AT I S . ” — M A R T I N F O W L E R W H AT I S A R C H I T E C T U R E ? D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Software Architecture has a number of definitions floating around, and I’m not going to make a meaningful dent in that space. But, I do want to mentions the elements that I think are most relevant for my topic as it relates to what the important stu ff is, as Martin Fowler put it several years ago.

  9. P U R P O S E D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L First, I think Software Architecture must be tied to the purpose of a system, the why of its existence. A system that lacks purpose will always be in some state of decay or disarray. So, I think it is important that we recognize that Software Architecture, and the role of the architect is concerned with defining, promoting, and perpetuating the purpose of a given system. And, that means that the architect has a key role to play if and when the purpose needs to change.

  10. C O N S T R A I N T S D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Second, I think Software Architecture must be informed by and help communicate the fundamental constraints inherent to the system. This is where a lot of the translation from business to engineering takes place, and where trade-o ff s are most important to be aware of and managed. The architect has the burden and responsibility to discover, communicate and help their teams abide by whatever constraints are necessary, and sometimes to seek to change those constraints where possible.

  11. E N A B L E M E N T D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Finally, I think Software Architecture is fundamentally about enabling engineers to do their best work in an e ffi cient and thoughtful way. This gets to the place of the architect in removing constraints where possible, but also to the place the architect has in not being a bottleneck themselves. If the architect holds certain things too tightly they can stifle their projects in ways that hurt everyone. So, the architect must be aware that they are in a position to do both great harm and great good to the systems they oversee.

  12. W H AT I S A C C I D E N TA L A R C H I T E C T U R E ? D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Every system has an architecture. But, what distinguishes an accidental architecture? I think the primary criteria is the influence of circumstances winning out over intentionality. Every project tends to start with a certain amount of clarity and, as circumstances intrude that clarity can be undermined. And, if it is undermined to a certain point the architecture becomes accidental, as opposed to intentional.

  13. “When a system expresses more the circumstances about when it was made, rather than the purpose for which it was made.” D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Many, if not most, software systems will have some elements of Accidental Architecture just by virtue of how preferences, technologies and other facets of development change over time. But, when those incidental choices define how your teams work with and maintain the software as much or more than the purpose of the system as a whole, you’ve strayed into Accidental Architecture. I will share with you some examples next.

  14. W I T H C O N S T R A I N T S D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Many accidents of architecture emerge when constraints prevail over the expression of the system’s purpose. In a monolith, I’ve seen this happen when time constraints force a team to follow too closely the patterns of their framework, specifically Ruby on Rails, and neglect to consider more appropriate ways to separate the concerns of business logic from such things as persistence. Ruby on Rails makes it easy to concentrate logic in place that are convenient, but not desirable for long-term maintainability. In a microservice ecosystem this same tendency can be expressed with the perpetuation of God Services that tend to gather lots of behavior to themselves because consolidation is easy, or we build services that are too tightly coupled to each other.

  15. W I T H O U T C O N S T R A I N T S D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L But, Accidental Architecture can also emerge when we lack strong constraining influences like time pressures. We can prematurely abstract things and produce overwrought, over-engineered solutions where the abstractions and complexity we create are bake full of assumptions that can’t yet be responsibly justified. I’ve seen this happen when we assume that just one abstraction can meet too wide a variety of needs, and the complexity is turned into ridiculously detailed configuration. The wrong abstraction can be just as, if not more, expensive in comparison to duplication or no abstraction. So, it is important to not let a lack of constraints lead us to introduce more complexity than we need.

  16. I N T E R A C T W H E R E H AV E Y O U S E E N A C C I D E N TA L A R C H I T E C T U R E S ? D E F I N I T I O N S @ P L A I N P R O G R A M M E R # O R E I L LY S A C O N J A M E S @ T H O M P S . O N L Let’s take another brief time to interact and share with each other where we’ve seen accidental architectures arise in the systems we’ve worked on.

  17. M I S U N D E R S TA N D I N G S

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend