How to Think Like an Architect - Mark Richards
Summary
TLDRThe video discusses the importance of thinking like a software architect for developers and other software practitioners. It explains that architectural thinking isn't limited to architects only but involves a perspective that helps in creating more effective software systems. Thinking like an architect involves understanding business drivers to determine architectural characteristics (e.g., performance, scalability), expanding one's breadth of knowledge beyond current expertise, and being capable of identifying and analyzing trade-offs in software architecture. The presenter uses examples such as decision-making in event-driven architecture to illustrate common trade-offs between scalability, performance, data integrity, and so on. Practical advice such as the '20-minute rule' for self-education on technical breadth is shared, and the potential pitfalls of over-evangelizing technologies, which can obscure important trade-offs, are discussed.
Takeaways
- 💡 You don't need to be an architect to think like one, and this mindset helps build better systems.
- 🌥️ Different people view the same problem from different perspectives, highlighting the importance of an architectural viewpoint.
- 🔄 Everything in software architecture involves trade-offs, making decision-making complex and contextual.
- 📊 Understanding business drivers is essential to translate them into technical requirements and architecture characteristics.
- 🛠️ Developers should broaden their technical knowledge beyond what they know to enhance problem-solving.
- ⏳ Adopt the '20-minute rule' to invest in expanding your technical breadth daily.
- ⚖️ Be cautious of over-evangelizing technologies, as every tool or framework has its trade-offs.
- 🧗♂️ Adopting architectural thinking can set developers on a rewarding career path without changing roles.
- 📝 Characteristics worksheets can help identify and align architectural needs with business goals.
- 🎓 The transition from developer to architect involves shifting focus from depth to a breadth of technical knowledge.
Timeline
- 00:00:00 - 00:05:00
Thinking like a software architect offers developers advantages, such as building more effective systems and advancing in their careers. The speaker discusses the significance of viewing problems from an architectural perspective, using the metaphor of clouds being viewed differently by meteorologists, artists, and IT professionals.
- 00:05:00 - 00:10:00
Understanding architectural thinking is essential for all developers, regardless of their role. The speaker illustrates a scenario involving message and event-driven architecture, highlighting the trade-offs between sending full payloads and key-based events, emphasizing the importance of scalability, contracts, and potential complications like stamp coupling.
- 00:10:00 - 00:15:00
The speaker explains the complications of stamp coupling, bandwidth issues, and multiple systems of record in message-driven architecture. The choice between full payload and key-based events involves various trade-offs. Recognizing these allows developers to better analyze and make architectural decisions, understanding that software architecture is about trade-offs.
- 00:15:00 - 00:20:00
Thinking like an architect involves understanding business drivers' importance, seeing more solutions, and analyzing trade-offs. The speaker emphasizes the need to align business needs with architectural characteristics such as scalability, availability, and performance, translating business concerns into architecture requirements.
- 00:20:00 - 00:25:00
The challenge of architectural thinking involves translating business needs into architectural characteristics like fault tolerance and reliability. The speaker uses a translation engine metaphor, discussing how to identify which architectural characteristics are important and how they'd support business objectives like user satisfaction and time to market.
- 00:25:00 - 00:30:00
The speaker illustrates the translation of business requirements into architectural characteristics, emphasizing the role of architects as translators. Important business-driven characteristics might emerge from domain knowledge, requirements, and conversations with stakeholders.
- 00:30:00 - 00:35:00
Architecture involves a breadth of knowledge, requiring architects to be aware of diverse solutions. The speaker discusses technical breadth versus depth, encouraging expanding knowledge to understand various solutions, tools, and techniques. This can help in providing more appropriate solutions to problems.
- 00:35:00 - 00:40:00
Discussing the knowledge triangle, the speaker illustrates different phases in a career's knowledge base: junior developer, senior developer, etc., with a shift from deep knowledge of fewer things to broader knowledge of more things, essential for architects to see more solutions.
- 00:40:00 - 00:45:00
The speaker shares methods to expand technical breadth, such as attending conferences and using resources like InfoQ and ThoughtWorks Radar. The "20-minute rule" involves dedicating daily time to learning new things, contributing to growing technical knowledge and perspective.
- 00:45:00 - 00:50:00
Highlighting the importance of analyzing trade-offs, the speaker emphasizes understanding that all architectural decisions involve trade-offs. Developers often know the benefits but may overlook trade-offs. Thinking architecturally means balancing trade-offs against business needs.
- 00:50:00 - 00:58:31
The speaker advises avoiding the out-of-context trap and over-evangelizing technology by understanding contextual relevance and being aware of trade-offs. Architects must balance emotions about technologies with objectivity. This allows for effective architectural thinking and decision-making.
Mind Map
Video Q&A
What is architectural thinking in software development?
Architectural thinking involves seeing and solving problems with an architect's perspective, considering trade-offs, business drivers, and high-level solutions.
How can developers benefit from thinking like an architect?
Developers can create more effective and well-built systems, make informed decisions, and accelerate their career growth by adopting an architect's perspective.
What are the three core components of thinking like an architect according to the video?
Understanding business drivers, expanding knowledge breadth, and analyzing trade-offs are the three main components.
Why is understanding business drivers important for architectural thinking?
Understanding business drivers helps translate them into architectural characteristics like scalability or performance, ensuring the system meets business needs.
What is the '20-minute rule' suggested in the video?
The '20-minute rule' suggests spending 20 minutes daily on self-education regarding technical knowledge to broaden one's knowledge breadth.
Why should architects avoid over-evangelizing technologies?
Over-evangelizing hides trade-offs associated with a technology, which can lead to overlooking potential disadvantages or context in decision-making.
What are architecture characteristics?
Architecture characteristics are elements such as performance, scalability, and fault tolerance, which guide system architecture to support business needs.
How can technical breadth affect an architect's ability to solve problems?
A broad technical knowledge enables architects to see more solutions to problems, leading to more appropriate and effective system designs.
View more video summaries
Putting on the helmet of salvation
Mind Management By Kalimasada Akademi Crypto
The Intersection of Architecture and Implementation - Mark Richards - DDD Europe
Wall Street Warriors | Episode 6 Season 1 "Size Does Matter" [HD]
Wall Street Warriors | Episode 5 Season 1 "Written in the Stars" [HD]
Wall Street Warriors | Episode 4 Season 1 "Work Hard, Play Harder" [HD]
- 00:00:00[Music]
- 00:00:12you don't have to be a software
- 00:00:16architect
- 00:00:18to think like a software architect
- 00:00:21and this gives you several advantages
- 00:00:24first
- 00:00:26a more effective and well-built system
- 00:00:29even as a developer
- 00:00:31and also a good head start on a really
- 00:00:35fun and rewarding career path so that's
- 00:00:38what I want to show you in this Keynote
- 00:00:41you don't have to be an architect to
- 00:00:43think like an architect but what does
- 00:00:44that even mean
- 00:00:46so I want to start by showing you
- 00:00:49these clouds what are these
- 00:00:53well they're clouds
- 00:00:55but it's very fascinating that because
- 00:00:59to different people
- 00:01:01these clouds represent different things
- 00:01:04to a meteorologist
- 00:01:07they look up at the sky at those clouds
- 00:01:09and they see all the cloud types and
- 00:01:11they know what the weather patterns and
- 00:01:12what to expect maybe as an artist you
- 00:01:16look up at those same exact clouds and
- 00:01:19you're picturing a beautiful dramatic
- 00:01:21scene
- 00:01:23of course all of us are nit
- 00:01:26so when we look up at the sky and see
- 00:01:28those clouds yeah we kind of think of
- 00:01:31cloud-based deployments The Internet of
- 00:01:33Things
- 00:01:35what does this mean
- 00:01:38when I showed you those clouds
- 00:01:41everybody sees them
- 00:01:43with a different eye
- 00:01:45a different perspective
- 00:01:48and that's what I want to show you about
- 00:01:50architectural thinking
- 00:01:53what does it mean to think like an
- 00:01:55architect to to see a problem
- 00:01:59with an architect's eye an architect's
- 00:02:02point of view
- 00:02:04well we're going to answer that question
- 00:02:05and that's what my keynote is all about
- 00:02:08first want to actually just show you why
- 00:02:12thinking like an architect is important
- 00:02:14regardless
- 00:02:17of your role
- 00:02:20so let's say we're in a situation where
- 00:02:23we're doing some messaging or events
- 00:02:25driven architecture and what you see
- 00:02:28here on the far right hand side is an
- 00:02:31order placement service and it's going
- 00:02:33to send a message to payment and
- 00:02:36inventory and so once I place an order
- 00:02:39I have to pay for it and we have to
- 00:02:41decrement inventory and of course we
- 00:02:42have a database
- 00:02:43and so you have a choice to make as a
- 00:02:46developer hmm
- 00:02:49well when I send that order
- 00:02:51should I include all of that order
- 00:02:54payload all 45
- 00:02:57different attributes
- 00:02:59or
- 00:03:00should I only send just the key because
- 00:03:04with a full day to payload of course I
- 00:03:06insert the data I send all of that
- 00:03:09message over
- 00:03:10and payment and inventory have all the
- 00:03:12data now
- 00:03:14but I wonder I've got another Choice
- 00:03:17what about key based you see I still if
- 00:03:21I'm processing that order I still insert
- 00:03:23that order into the database but now I
- 00:03:26only send the key out in that message or
- 00:03:30event
- 00:03:31well payments and inventory both receive
- 00:03:33that but now they have to query the
- 00:03:35database in order to get the information
- 00:03:37they need
- 00:03:40so what do we do
- 00:03:42well let's see obviously says the
- 00:03:45developer the full event payloads the
- 00:03:48right choice because we get much better
- 00:03:50scalability and performance
- 00:03:54I don't have to go to the database this
- 00:03:56is one of the ways of creating scalable
- 00:03:58systems and high performance systems
- 00:04:02so this is the Clear Choice
- 00:04:05yeah says the architect but um but what
- 00:04:08about what sort of contract are you
- 00:04:11going to use is it going to be a strict
- 00:04:13contract with a schema or are all 45 of
- 00:04:16those attributes going to be a loose
- 00:04:18contract with just something like Json
- 00:04:19are you going to pass an object in that
- 00:04:22message
- 00:04:23um and how are you going to manage it
- 00:04:25how are you going to version it
- 00:04:27when you make changes because you don't
- 00:04:29want to break everything
- 00:04:31oh yeah that's right yeah and what are
- 00:04:34you going to do about stamp coupling and
- 00:04:36bandwidth issues that are going to occur
- 00:04:38with this and the developer says what
- 00:04:41are you talking about
- 00:04:44stamp coupling as a form of coupling
- 00:04:46where you pass all of the information to
- 00:04:50a particular service but it only uses a
- 00:04:53few pieces of it maybe even one or two
- 00:04:55attributes that's called stamp coupling
- 00:04:57and two problems occur change and
- 00:05:01bandwidth issues let me show you what I
- 00:05:03mean if I change this contract
- 00:05:06and change a field that payments and
- 00:05:09inventory are not using well of course I
- 00:05:12have to change
- 00:05:13but that might facilitate a change in
- 00:05:16payment and inventory as well even
- 00:05:19though I don't care about that field
- 00:05:22that's what stamp coupling is about but
- 00:05:25there's also bandwidth issues because
- 00:05:26you see that entire order is 500 KB
- 00:05:32so 500 KB is being sent to both payment
- 00:05:35and inventory payment only needs 350 KB
- 00:05:40inventory only needs 50 KB
- 00:05:43so I'm unnecessary unnecessarily
- 00:05:46utilizing bandwidth I don't need
- 00:05:50cloud-based environments this could get
- 00:05:53quite expensive
- 00:05:56oh and there's another problem by the
- 00:05:59way
- 00:06:00um and of course at this point the
- 00:06:02developer starts getting really
- 00:06:03frustrated but it keeps going what about
- 00:06:05multiple systems of record because if
- 00:06:07you're passing the entire payload of
- 00:06:09that message over there that means every
- 00:06:11one of you
- 00:06:13have a copy of that
- 00:06:15and you're not even looking at the
- 00:06:17database where the true system of record
- 00:06:18is so if I make changes to that order
- 00:06:21it may be everywhere you might not have
- 00:06:23the latest copy so that might produce
- 00:06:25data Integrity issues as well
- 00:06:28oh
- 00:06:30you know so the developer says hmm you
- 00:06:33know these are really good points
- 00:06:36you know you've kind of convinced me
- 00:06:37maybe a key based event payload would be
- 00:06:42better
- 00:06:42I mean after all I wouldn't have to
- 00:06:44worry about stamp coupling it's a single
- 00:06:47name value pair so there's really no
- 00:06:49well there's still a contract but I'm
- 00:06:51never going to change that I don't have
- 00:06:53bandwidth issues I don't have stamp
- 00:06:54coupling
- 00:06:56and you're right I have a single single
- 00:07:00system of record I get better data
- 00:07:02Integrity you know you make really good
- 00:07:03points maybe I should use the key based
- 00:07:06and what happens
- 00:07:08the developer now comes along or the
- 00:07:10architect comes along and says yeah but
- 00:07:12what are you going to do about
- 00:07:12scalability and performance now
- 00:07:15this is why thinking like an architect
- 00:07:18is important
- 00:07:20because of our first law of software
- 00:07:23architecture
- 00:07:24and that is that everything in software
- 00:07:27architecture is a trade-off
- 00:07:30and being able to think like an
- 00:07:32architect and see things with an
- 00:07:34architect's eye allows you to better
- 00:07:37analyze these kind of trade-offs to
- 00:07:40actually make the right decision to find
- 00:07:42and seek out
- 00:07:44those pros and cons
- 00:07:47okay
- 00:07:49so let's come back to thinking like an
- 00:07:51architect what's involved in thinking
- 00:07:53like an architect being able to apply
- 00:07:57architectural thinking
- 00:07:59to your daily job
- 00:08:01regardless of your title or role
- 00:08:06it really involves Three core things
- 00:08:10the first is regardless of your role to
- 00:08:14be able to understand the importance of
- 00:08:17those business drivers in the
- 00:08:18translation
- 00:08:20to whatever those architectural
- 00:08:21characteristics are
- 00:08:23do you need High scalability
- 00:08:26do you need High availability high
- 00:08:28performance High agility High
- 00:08:30responsiveness
- 00:08:32what are those attributes or
- 00:08:34characteristics of the architecture that
- 00:08:36are important because we are
- 00:08:38implementing
- 00:08:39that architecture we should probably
- 00:08:41know those
- 00:08:43number two thinking like an architect is
- 00:08:46also expanding your breadth of knowledge
- 00:08:51to be able to see more solutions
- 00:08:54to the problem
- 00:08:57and also thinking like an architect is
- 00:09:00being able to identify and analyze
- 00:09:03various trade-offs these are the three
- 00:09:06main components of actually seeing a
- 00:09:09problem
- 00:09:10with an architect's eye
- 00:09:13as opposed to a developer's eye oh you
- 00:09:15still have to see things with a
- 00:09:17developer's eye of course especially
- 00:09:18when you're faced with a particular
- 00:09:20algorithm or problem or design problem
- 00:09:22within your code
- 00:09:24but it's also seeing the problem
- 00:09:26architecturally as well let's take a
- 00:09:29look at all three of these and see how
- 00:09:31they all work and let's take a look at
- 00:09:32what are the most foundational pieces of
- 00:09:35what it means to see things like those
- 00:09:37clouds with an architect's eye because
- 00:09:41this is what the business is concerned
- 00:09:45about
- 00:09:45regardless of the type of system that
- 00:09:48you're building
- 00:09:50the business is concerned about things
- 00:09:52like user satisfaction time to Market
- 00:09:54competitive Advantage mergers and
- 00:09:56Acquisitions Regulatory Compliance all
- 00:09:59of these things are big concerns of
- 00:10:01theirs
- 00:10:02thinking architecturally
- 00:10:04is translating these concerns
- 00:10:07into exactly what the architecture needs
- 00:10:11to support this is our language
- 00:10:14we translate those into things like oh
- 00:10:16fault tolerance reliability
- 00:10:18recoverability responsiveness
- 00:10:20performance availability
- 00:10:23and that's what we need to build into
- 00:10:25the architecture
- 00:10:28to support those business needs
- 00:10:30that's seeing it with the architect's
- 00:10:32eye
- 00:10:33but there's a problem here
- 00:10:36because it's a problem of being Lost in
- 00:10:38Translation
- 00:10:40you see language of an architect is
- 00:10:42talking all about fault tolerance
- 00:10:45the language of the business is talking
- 00:10:48all about user satisfaction
- 00:10:50and the problem is
- 00:10:52these two rarely meet because no one
- 00:10:54knows what anybody's talking about
- 00:10:57and this involves another aspect of
- 00:11:00thinking architecturally
- 00:11:02that brain of an architect
- 00:11:05becomes like a translation engine
- 00:11:08so if this is that important which it is
- 00:11:12because these architectural
- 00:11:14characteristics
- 00:11:15become the foundational aspect of any
- 00:11:19system or product
- 00:11:22so if we don't know these
- 00:11:25how can we possibly build a system how
- 00:11:27can we possibly make decisions
- 00:11:31okay so you've convinced me yeah we need
- 00:11:33to know these but how do I know which
- 00:11:35ones I mean I've never really thought
- 00:11:37about this and I'd really like to as a
- 00:11:39matter of fact on Monday when I kind of
- 00:11:41go back to work I might want to start
- 00:11:42thinking about these so where do they
- 00:11:44come from
- 00:11:45they come from one of three places
- 00:11:48a lot of times they come just from the
- 00:11:51domain
- 00:11:52I mean the business domain for example
- 00:11:55we're building a new stock trading
- 00:11:57system to buy and sell stock
- 00:12:00well I don't need
- 00:12:02to go through a lot of analysis to know
- 00:12:04that system has to be fast
- 00:12:07high performance
- 00:12:10High data integrity
- 00:12:13so sometimes we could just extract these
- 00:12:15from the nature of our business a lot of
- 00:12:18times they're in requirements or user
- 00:12:21stories but the user story does not
- 00:12:23State we require High elasticity no the
- 00:12:27user story looks like this we have to
- 00:12:28support 20 to 200 000 concurrent users
- 00:12:31and everything in between and it could
- 00:12:33be immediate need
- 00:12:35so those requirements or user stories
- 00:12:38are not spelling out that exact illity
- 00:12:42or architecture characteristic it's up
- 00:12:44to us to interpret and know what that is
- 00:12:47but it's interesting
- 00:12:49in almost every system or product I've
- 00:12:52worked on
- 00:12:53the most valuable place
- 00:12:56to find out what's important is actually
- 00:12:59just using your ear and listening to the
- 00:13:02business
- 00:13:05let's actually do this this will be fun
- 00:13:07so here's an example
- 00:13:10thinking architecturally is that trans
- 00:13:12translation engine that we have in our
- 00:13:14mind
- 00:13:15so let's say that the business says oh
- 00:13:18yeah user satisfaction is absolutely the
- 00:13:20most important thing we build our
- 00:13:23company on user satisfaction
- 00:13:25so what happens
- 00:13:27we translate that to a characteristic
- 00:13:30now this one's easy user satisfaction
- 00:13:33ability
- 00:13:35is it funny you could take any word and
- 00:13:37just add the word illity after it and
- 00:13:39all of a sudden you've got a new
- 00:13:40characteristic
- 00:13:41how about markability
- 00:13:44hmm wonder what that means well that
- 00:13:47one's easy too because I love drawing on
- 00:13:49slides I love drawing on whiteboards and
- 00:13:51so markability is the ability to like a
- 00:13:54lot of drawings
- 00:13:56there was one particular client
- 00:13:58engagement I was on where we had fun
- 00:14:01making up architecture characteristics
- 00:14:04we would take the characteristics of
- 00:14:07somebody on the team
- 00:14:08and use their name and make an entity
- 00:14:10for example take the person on the team
- 00:14:13I mean who is the glue on the team I
- 00:14:16mean they just bring everything together
- 00:14:18so if we needed high amiability that
- 00:14:21means we need High cohesion we need this
- 00:14:23system to work together uh maybe you've
- 00:14:26got somebody
- 00:14:27um sebastiani who's maybe a a
- 00:14:29perfectionist everything has to be
- 00:14:32absolutely perfect
- 00:14:33well that's sebastiani ability
- 00:14:36the ability to have everything
- 00:14:37absolutely the highest level of data
- 00:14:40integrity and correctness in that system
- 00:14:41it's kind of a fun exercise you should
- 00:14:43try it you can make up any word but it's
- 00:14:46not really user satisfactionability no
- 00:14:49this requirement or need comes into our
- 00:14:52translation engine
- 00:14:54and out comes all those things the
- 00:14:57architecture needs to support
- 00:14:59performance agility so that we get bug
- 00:15:03fixes Fast Fixed fast things like
- 00:15:06scalability availability security
- 00:15:08testability so we don't introduce bugs
- 00:15:10recoverability so I don't lose my work
- 00:15:12these are all things that make users
- 00:15:15happy
- 00:15:16and if our architectures don't support
- 00:15:18these users will not be happy this is
- 00:15:21that whole thing about seeing a
- 00:15:23particular problem
- 00:15:25with an architect's perspective
- 00:15:27how about time to Market
- 00:15:30that's the most important thing
- 00:15:32so we feed that into our little
- 00:15:33translation engine
- 00:15:36and out comes all the things that the
- 00:15:38architecture needs to support
- 00:15:40maintainability testability
- 00:15:42deployability these are things that we
- 00:15:46as not only architects
- 00:15:48but Developers
- 00:15:51need to focus on
- 00:15:53that's what we need to support
- 00:15:55let's do one more mergers and
- 00:15:57Acquisitions oh boy yes we're we're
- 00:16:00constantly acquiring new companies
- 00:16:02okay that one's easy resume ability yes
- 00:16:05because my job will be replaced okay now
- 00:16:08like I said you can make up any word
- 00:16:12no we feed this in and what do you
- 00:16:14suppose it's interesting think about
- 00:16:16this one for a second
- 00:16:18mergers and Acquisitions undergoing very
- 00:16:20heavily in your company constantly
- 00:16:23buying up other companies merging with
- 00:16:25other companies you're an architect
- 00:16:26you're a developer
- 00:16:29what's on your mind about this let's
- 00:16:31just Ponder this one for a little bit
- 00:16:33hmm
- 00:16:34would that matter
- 00:16:38yeah it would
- 00:16:40as a matter of fact a lot of things are
- 00:16:42we leveraging standards it's going to
- 00:16:44make it easier for us to communicate
- 00:16:45with other systems that we have to
- 00:16:47interoperability how open or closed are
- 00:16:51our systems how scalable are they
- 00:16:53because if we merge with another company
- 00:16:56we possibly have just doubled
- 00:16:59our customer base
- 00:17:01think about that can our Systems Support
- 00:17:04that extra customer load that extra user
- 00:17:08load the capacities in our database
- 00:17:10connection pools virtual machines
- 00:17:14that's a big one on that
- 00:17:17all right so this is one of those kind
- 00:17:20of translation engines one of the
- 00:17:22reasons this is so important
- 00:17:23it's because these these characteristics
- 00:17:26when we see these help us qualify and
- 00:17:29make decisions this is the star rating
- 00:17:32chart from our book fundamentals of
- 00:17:33software architecture
- 00:17:35and we can kind of utilize this if
- 00:17:39and only if
- 00:17:41we know
- 00:17:43our characteristics
- 00:17:46which architecture style should you use
- 00:17:48microservices of course no
- 00:17:52which of these eight should you use
- 00:17:55I I I I don't know what can I base that
- 00:17:58on oh what's important to you oh
- 00:18:01scalability is exactly what we need we
- 00:18:04have to be highly scalable
- 00:18:06well this kind of chart using
- 00:18:09qualitative analysis allows us to kind
- 00:18:11of look for the areas that have five
- 00:18:13stars that means it's really well
- 00:18:15supported if the architecture doesn't
- 00:18:18support scalability
- 00:18:21it doesn't matter how much you do from a
- 00:18:24physical operational standpoint
- 00:18:27you won't be able to scale
- 00:18:30so consequently we look at this chart
- 00:18:32and say huh which architectures tend to
- 00:18:34scale better than others and we find of
- 00:18:36course micro Services event driven and
- 00:18:39space-based architecture
- 00:18:42are really good choices
- 00:18:44the layered architecture with one star
- 00:18:46is not
- 00:18:48how do we know this
- 00:18:50architectural thinking
- 00:18:53being able to see a problem and this is
- 00:18:56what an architect sees
- 00:18:58I don't see class Styles I don't see
- 00:19:00methods I don't see algorithms design
- 00:19:03patterns oh what I see floating in front
- 00:19:06of my face are all of these
- 00:19:08characteristics and those are my driving
- 00:19:10forces to make decisions
- 00:19:14now a resource that you could actually
- 00:19:15use oh and by the way yeah let's do
- 00:19:17another one let's say that's constant
- 00:19:19Simplicity we're a startup
- 00:19:22don't have a lot of money
- 00:19:25we don't want to add a lot of complexity
- 00:19:27at the very very start of our life as a
- 00:19:30company
- 00:19:31those are our most important things
- 00:19:35we do qualitative analysis We compare
- 00:19:37the quality of one thing to another and
- 00:19:40we find hmm
- 00:19:41I'm guessing maybe we shouldn't do micro
- 00:19:44Services first maybe let's start with a
- 00:19:48monolith
- 00:19:49any one of these three and then migrate
- 00:19:52as soon as we find out if this idea is
- 00:19:54going to work and we start growing
- 00:19:56yeah these are guidelines these are
- 00:19:58guide posts
- 00:19:59so one of the tools that I could offer
- 00:20:02you that you can use is this
- 00:20:04characteristics worksheet and this is
- 00:20:06what I use at work
- 00:20:08this is what I use on my Consulting
- 00:20:11engagements to help identify these
- 00:20:14driving forces
- 00:20:16so you can download this from my website
- 00:20:18under resources and it's in PDF
- 00:20:20PowerPoint and keynote format change it
- 00:20:23if you want to that's fine but this
- 00:20:26allows you to start looking at and by
- 00:20:28the way that there's three pages because
- 00:20:29they show definitions I show definitions
- 00:20:31of each of these kind of core
- 00:20:33characteristics and I also have a lesson
- 00:20:36lesson 112 on my software development
- 00:20:38our software architecture Monday to show
- 00:20:41kind of how this works anyways it's a
- 00:20:44really useful tool for starting to say
- 00:20:46you know I think I'd like to start doing
- 00:20:48that I'd like to start thinking like an
- 00:20:51architect and I'm going to see if I can
- 00:20:53come up with what characteristics on the
- 00:20:55current product I'm working on are
- 00:20:58important and are we really supporting
- 00:21:00those
- 00:21:01and do we have the right architecture in
- 00:21:03place guess what by doing those three
- 00:21:05things
- 00:21:06you know what you all are doing
- 00:21:09exactly the same thing an architect
- 00:21:12would do
- 00:21:14thinking like an architect you don't
- 00:21:16have to be an architect to think like an
- 00:21:19architect
- 00:21:20so here's the bottom line of this part
- 00:21:22one right here
- 00:21:23you cannot and this is what I maintain
- 00:21:26you cannot do this
- 00:21:29create an architecture
- 00:21:32unless you have these
- 00:21:35otherwise how are you going to make a
- 00:21:38decision
- 00:21:40what's needed this looks like an
- 00:21:42interesting design but does it satisfy
- 00:21:44the needs of the application the domain
- 00:21:47and The Business
- 00:21:50all right that's
- 00:21:51part of thinking like an architect
- 00:21:53having those foundational aspects that
- 00:21:56drive all the rest of your decisions
- 00:21:58even at an implementation level knowing
- 00:22:02these and knowing that scalability is
- 00:22:04that important and qualifying it will
- 00:22:07allow you to think about the designs of
- 00:22:09your code
- 00:22:10with scalability in mind as well or
- 00:22:13availability or fault tolerance
- 00:22:15okay
- 00:22:17the next part though about thinking like
- 00:22:19an architect is expanding what's known
- 00:22:21as our technical breadth the amount of
- 00:22:24things we know
- 00:22:26because as an architect you see a
- 00:22:28problem
- 00:22:29I have to see and visualize in my mind
- 00:22:32the possible solutions
- 00:22:34but what if you only know one particular
- 00:22:37solution it might not be the right one
- 00:22:40so it turns out that this is called a
- 00:22:43triangle of knowledge and there are
- 00:22:45three types of knowledge that exist in
- 00:22:47the world let's scope it down to
- 00:22:49technology knowledge that would be a lot
- 00:22:51better
- 00:22:52um well way up here at the top
- 00:22:55is the stuff that you know
- 00:22:57these are things you do every day you
- 00:22:59know them so well that you could
- 00:23:01actually get up on stage here
- 00:23:03and talk about them it'd be a little
- 00:23:05scary but you could
- 00:23:07but right below that is a bigger area of
- 00:23:10knowledge called the stuff that you know
- 00:23:12that you don't know
- 00:23:15this means you know or are familiar
- 00:23:17about something
- 00:23:19but you have no idea how to use it
- 00:23:22um close your programming language is a
- 00:23:24good example I'm sure most if not all of
- 00:23:27you have heard about closure it's a
- 00:23:28programming language that uh boy you
- 00:23:31gotta love parentheses if you're going
- 00:23:32to use it it usually uses the atomic
- 00:23:34transactional memory all this kind of
- 00:23:35stuff
- 00:23:36but how many of you can code
- 00:23:39enclosure not it that's a good example
- 00:23:43of something that you've heard of that
- 00:23:44you know that you know nothing about but
- 00:23:47you're familiar with it
- 00:23:48but the biggest area of knowledge that
- 00:23:51exists is this bottom large Blue Area
- 00:23:54this is the stuff that you don't know
- 00:23:57that you don't know
- 00:23:59this is all the possible solutions tools
- 00:24:03products patterns that would be the
- 00:24:06perfect fit perfect fit for what you're
- 00:24:08doing and you don't even know it exists
- 00:24:12so one of the
- 00:24:15well I'll call it a game of life
- 00:24:19is to take stuff that you've never ever
- 00:24:23heard of that bottom area of the
- 00:24:25triangle stuff that you don't know that
- 00:24:27you don't know
- 00:24:29and move it into the stuff that you know
- 00:24:32you don't know
- 00:24:35how do you do this talk with people say
- 00:24:37oh I haven't heard of that before what
- 00:24:39is it and now you suddenly have it in
- 00:24:42your second level of knowledge
- 00:24:44it's going to conferences like this
- 00:24:47and challenging yourself to say well I'm
- 00:24:49a react programmer so I'm going to do
- 00:24:51all react talks
- 00:24:53now the proper way to take advantage of
- 00:24:57conferences like this is to attend a
- 00:25:00talk of something you've never heard of
- 00:25:03it's fantastic way to learn about a
- 00:25:06possible tool a technique a solution
- 00:25:09that you may not use now
- 00:25:12but it's in your brain
- 00:25:15and you'll pull it out sometime and say
- 00:25:16wait a minute I remember I was at gids23
- 00:25:20and I remember I was walking along in
- 00:25:22the the exposition Hall there and I was
- 00:25:25like what is this product okay that's a
- 00:25:27two or three minute conversation
- 00:25:29you have now taken something that you
- 00:25:31didn't know that you didn't know and say
- 00:25:34oh now I know what it does
- 00:25:36okay then
- 00:25:39either something because we are all
- 00:25:41technologists that pique your interest
- 00:25:43something that you get really excited
- 00:25:45about or your boss says starting next
- 00:25:47week we shall be using closure oh
- 00:25:50that's when you take something that you
- 00:25:52know you don't know
- 00:25:54and you move it into something now that
- 00:25:57you know
- 00:25:58but there's a cautionary tale here
- 00:26:00everybody
- 00:26:02watch out for this top part of the
- 00:26:05triangle
- 00:26:06because the stuff you know is the stuff
- 00:26:09you have to maintain
- 00:26:12and if you like working 24 hours a day
- 00:26:15if you don't have kids if you have no
- 00:26:17life and no friends don't worry about it
- 00:26:20but if you do
- 00:26:22you can't do it all because if you don't
- 00:26:25maintain that it suddenly trickles down
- 00:26:28like teardrops all the way back down
- 00:26:31into something that now you know you
- 00:26:33don't know
- 00:26:34about 10 years ago it was mostly
- 00:26:36programming in the Scala language I
- 00:26:39started the Boston Scala users group
- 00:26:41that's all I was doing at client sites
- 00:26:43with Scala I loved it
- 00:26:46that was 10 years ago
- 00:26:48now
- 00:26:50I would be lucky to be able to start a
- 00:26:53scholar class file it's something I
- 00:26:55chose not to maintain so it dripped back
- 00:26:57down so just a cautionary tale be
- 00:27:00careful okay
- 00:27:01well let's do an interesting exercise
- 00:27:04because of this
- 00:27:07the stuff you know
- 00:27:09is called technical depth
- 00:27:12we all need technical depth including me
- 00:27:17a seasoned architect
- 00:27:19we all need technical depth but that's
- 00:27:22stuff you know plus the stuff that you
- 00:27:24know you don't know is considered
- 00:27:26technical breadth
- 00:27:28and here's the key point
- 00:27:31thinking like an architect
- 00:27:33starting to make more effective
- 00:27:36decisions
- 00:27:38create better software systems
- 00:27:41and start propelling your career
- 00:27:43into that Tech lead and into that
- 00:27:46architect position
- 00:27:48means to exactly Focus right here
- 00:27:53and that's hard
- 00:27:55it means focusing
- 00:27:57on technical depth with a sacrifice I'm
- 00:28:00sorry technical breadth
- 00:28:02with a little bit of a sacrifice of
- 00:28:04technical depth
- 00:28:05start broadening your horizons okay
- 00:28:10well let's actually play this game
- 00:28:12what we're going to do is we're actually
- 00:28:15now that we understand this triangle of
- 00:28:16knowledge let's have some fun with it
- 00:28:19let's take a look at the brain
- 00:28:22of a junior developer
- 00:28:24then let's take a look inside the brain
- 00:28:26of a senior developer
- 00:28:29then we're going to take a look inside
- 00:28:30the brain of a junior architect
- 00:28:33and finally a senior architect
- 00:28:35this is going to be an amazing journey
- 00:28:38so now that we understand that levels
- 00:28:40are trying the levels of knowledge let's
- 00:28:42open up the brain
- 00:28:44to a junior developer
- 00:28:46this is what a junior developer's
- 00:28:48knowledge triangle looks like typically
- 00:28:50notice what is the biggest part of this
- 00:28:53triangle
- 00:28:54it's the stuff that you don't know that
- 00:28:57you don't know sure I am a Java
- 00:29:00developer what do you do Java
- 00:29:03what do you know Java
- 00:29:05okay
- 00:29:07notice my technical breadth is pretty
- 00:29:11small
- 00:29:12and that's fine that's appropriate
- 00:29:14because as a junior developer I am hired
- 00:29:17for my technical capability
- 00:29:20on that particular technology
- 00:29:23this is good this is what it should look
- 00:29:25like but what happens are you ready
- 00:29:27watch this as we move from a junior
- 00:29:30developer to a senior developer
- 00:29:34did you notice what happened to the
- 00:29:35triangle
- 00:29:36I want to do that again because this is
- 00:29:39going to start morphing like this wait a
- 00:29:40minute let me go backwards one
- 00:29:42are you ready watch the shape of the
- 00:29:45triangle here we go Junior developer
- 00:29:48starts going into a senior developer
- 00:29:49five or six years experience
- 00:29:52and what do you notice happen
- 00:29:54the stuff you know
- 00:29:56increases
- 00:29:58multiple platforms multiple languages
- 00:30:00multiple patterns multiple tools
- 00:30:01multiple techniques multiple Frameworks
- 00:30:03the list goes on
- 00:30:05and as a matter of fact that you notice
- 00:30:07what part of the triangle got smaller
- 00:30:10the stuff you know you didn't know that
- 00:30:12you didn't know
- 00:30:13but notice our technical breadth
- 00:30:16still not strong
- 00:30:19and that's okay
- 00:30:21because we are focused on a technology
- 00:30:24solution to a problem
- 00:30:26but you get that big break
- 00:30:29and all of a sudden now
- 00:30:31yes your first opportunity as an
- 00:30:33architect
- 00:30:34you become a junior architect
- 00:30:37you ready I'm going to transfer now this
- 00:30:39is what your brain starts to look like
- 00:30:42did you notice what happened as you move
- 00:30:44into and step into
- 00:30:47an architect position
- 00:30:49what happened
- 00:30:50you sacrificed some of that stuff you
- 00:30:54know
- 00:30:55that expertise
- 00:30:57to broaden the stuff that you know you
- 00:31:01don't know
- 00:31:02as an architect you're starting to look
- 00:31:04at 10 different caching Technologies not
- 00:31:08just redis for example what are the
- 00:31:13different caching tools and Technologies
- 00:31:14what do they support what are the pros
- 00:31:16what are the cons oh I may not know how
- 00:31:19to code at any of these that's fine
- 00:31:21but as an architect I know the
- 00:31:23trade-offs of each of these hey which
- 00:31:25one would probably be the most
- 00:31:27appropriate solution for our particular
- 00:31:29problem
- 00:31:31now final Journey you start
- 00:31:34developing your careers in architect you
- 00:31:37start getting that senior architect kind
- 00:31:39of position that Enterprise architect
- 00:31:40and this is what your knowledge triangle
- 00:31:43now starts to look like
- 00:31:45notice we haven't done much with our
- 00:31:47technical depth
- 00:31:49but we've significantly broadened the
- 00:31:51stuff that we know we don't know
- 00:31:55so this is kind of one of those key tips
- 00:31:59tricks to managing
- 00:32:02your entire career
- 00:32:04regardless of where you are in it
- 00:32:08did you just graduate from school
- 00:32:10cool focus on the technology that you're
- 00:32:13interested in that's all you should do
- 00:32:16and you could use this transition
- 00:32:18to kind of map out where you should
- 00:32:21probably be in these various knowledge
- 00:32:23pieces
- 00:32:24well Mark this is absolutely fabulous
- 00:32:28this is really cool
- 00:32:30I wish I had as much time as you
- 00:32:33to be able to go research and do stuff
- 00:32:35and kind of learn things I don't know ah
- 00:32:38yeah no I'm stuck 12 hours a day coding
- 00:32:41Java
- 00:32:42ah let me show you how to do this
- 00:32:45so isn't it interesting if we look at
- 00:32:47the difference between a developer's
- 00:32:49head and the way they see things and an
- 00:32:52architect's head
- 00:32:53and the way they see things
- 00:32:55it's all about that middle area
- 00:32:59the more you know
- 00:33:01about stuff you don't know
- 00:33:04the more you're going to be able to find
- 00:33:07solutions to problems that are the most
- 00:33:10appropriate solution
- 00:33:13okay
- 00:33:14so how do you do this
- 00:33:16how do you start gaining that technical
- 00:33:18depth
- 00:33:20this is exciting
- 00:33:22well what are the ways to do it is a
- 00:33:24conferences like this or just start
- 00:33:27going
- 00:33:28to some of these resources that are free
- 00:33:32and let me show you three that I
- 00:33:33typically use the first one I go to
- 00:33:36quite often is a info queue infoq.com
- 00:33:41uh now I'm going to show you this in a
- 00:33:43little bit but every uh about two times
- 00:33:46a week I get an email with all these
- 00:33:48different things that are trending all
- 00:33:49these different Technologies
- 00:33:51um it's a really really good go-to place
- 00:33:54for architecture for all these kind of
- 00:33:56things
- 00:33:58technology you name it uh the second
- 00:34:00place that I sometimes go to are the
- 00:34:02d-zone ref cards now not necessarily
- 00:34:05d-zone
- 00:34:07um in my experience d-zone is kind of
- 00:34:09Hit or Miss but the ref cards are really
- 00:34:12useful because I don't have a lot of
- 00:34:14time when I was in college back in the
- 00:34:17turn of the century
- 00:34:20uh I did not have time to read War and
- 00:34:23Peace or Homer's Iliad or Odyssey I had
- 00:34:27other things to do hang out with my
- 00:34:28friends just go hiking around and stuff
- 00:34:30so what did I do
- 00:34:33I leveraged something called Cliff Notes
- 00:34:35now here's Monarch notes but these were
- 00:34:37little booklets
- 00:34:39that just gave you a summary the
- 00:34:42highlights of those epic novels yeah I
- 00:34:45could I could read that in an afternoon
- 00:34:47and so
- 00:34:51so that's what I did most of the time
- 00:34:53now I'm going back and reading all those
- 00:34:56wonderful epic novels but at the time I
- 00:34:58wasn't interested
- 00:35:00and so those little tiny booklets Cliff
- 00:35:03Notes Monarch notes really helped me to
- 00:35:06participate in the class to really gain
- 00:35:08the understanding of those books without
- 00:35:10having all the details that I didn't
- 00:35:12really care about
- 00:35:13oh what did I just describe
- 00:35:17ref cards
- 00:35:19yeah these are two to six page cards
- 00:35:21that talk about a particular technology
- 00:35:24just the right exact level
- 00:35:28for me as an architect
- 00:35:30say what is it why is it here what are
- 00:35:34the good things and what are the bad
- 00:35:35things about it yeah so those are those
- 00:35:38are pretty useful to gain that technical
- 00:35:40knowledge without having to go too deep
- 00:35:42oh you can study what hazelcast is all
- 00:35:44about you don't have to go and code it
- 00:35:46you can understand uh different
- 00:35:48languages you don't have to go and code
- 00:35:50them
- 00:35:51you just have to understand what they do
- 00:35:53why they're there how do they
- 00:35:55differentiate themselves from all the
- 00:35:57other 25 programming languages I could
- 00:35:59choose right now yeah another place to
- 00:36:01go
- 00:36:03is a thoughtworks technology radar which
- 00:36:06by the way just came out Tuesday this
- 00:36:08comes out twice a year all these are
- 00:36:10free
- 00:36:11this whole stuff is all available to you
- 00:36:14and the thoughtworks technology radar
- 00:36:16twice a year are most of the luminaries
- 00:36:20in the field Neil Ford is one of those
- 00:36:21James Lewis Martin Fowler I mean these
- 00:36:24are folks who have a pulse on the
- 00:36:26industry
- 00:36:27they show you what things are trending
- 00:36:29what things aren't
- 00:36:31it's a really great resource now here's
- 00:36:34a little test for all of you go to the
- 00:36:37thoughtworks radar you think oh I I
- 00:36:38don't need that I already know what's
- 00:36:40happening in the field I already know
- 00:36:41everything I know everything
- 00:36:44I will guarantee you
- 00:36:46they'll show 20 things that are trending
- 00:36:48in the industry I will guarantee you
- 00:36:52maybe you've heard of four of those
- 00:36:56yeah what a humbling experience it's
- 00:37:00like this is something they're saying to
- 00:37:02adopt and I've never heard of it
- 00:37:04what is that that's something that I
- 00:37:07don't know that I don't know
- 00:37:08I probably should know it
- 00:37:11not be an expert but just know it these
- 00:37:13are three really good resources oh
- 00:37:15there's a lot of other good resources to
- 00:37:17use as well but these are just three I
- 00:37:18can offer up to you
- 00:37:20now I can go back and say huh
- 00:37:23what do these look like well let me show
- 00:37:25you the three levels of knowledge now
- 00:37:27this might be a little hard to see on
- 00:37:29the screen here but this is uh I'm going
- 00:37:30to zoom in but this is a snapshot of my
- 00:37:32email and this is let me Zoom it in just
- 00:37:35a little bit
- 00:37:36um this is what it looks like so when I
- 00:37:38get my email it has a black a dark
- 00:37:40header line
- 00:37:41with a laundry list of buzzwords
- 00:37:47and I look at that I take a look at that
- 00:37:48and all of a sudden I start to see
- 00:37:50things like oh plastic arm what is that
- 00:37:55plastic arm is it like
- 00:37:57an actual arm it's plastic
- 00:38:00I've never heard of that before ha
- 00:38:02something that you don't know that you
- 00:38:05don't know
- 00:38:05bottom level of the triangle
- 00:38:08it happens to be
- 00:38:10fabric based microchips
- 00:38:13for all sorts of haptic sets and all
- 00:38:15this really cool stuff okay how about
- 00:38:17this
- 00:38:18um solid.js well we can ignore that
- 00:38:21right because every day another new
- 00:38:23JavaScript framework comes out so just
- 00:38:25forget that yeah yeah never mind yeah so
- 00:38:27that that's that's Way Beyond all three
- 00:38:30levels of knowledge that's stuff that
- 00:38:31you could throw away okay that's the
- 00:38:33trash can okay but all this other stuff
- 00:38:35Apache Pinot what does that mean the
- 00:38:38Apache Foundation is now making wine
- 00:38:40Apache Chardonnay is really good
- 00:38:44but Apache Sauvignon is also buried yeah
- 00:38:47what in the world's Pino it's there
- 00:38:49um stuff like this you know uh AWS
- 00:38:52proton oh yeah we're we're an AWS shop
- 00:38:54what's proton
- 00:38:56I I I I don't know should we be using it
- 00:38:59I don't know these are things you've
- 00:39:02never heard of this is the value of
- 00:39:05these resources you see a buzzword
- 00:39:07that you've never heard of before
- 00:39:10spend a couple of minutes to see what it
- 00:39:12is
- 00:39:14that's all you need to do
- 00:39:16and now all of a sudden you say
- 00:39:18proton where were you six months ago oh
- 00:39:22it's been out longer than that where was
- 00:39:24I six months ago
- 00:39:25if they would have solved all our
- 00:39:27problems we could have shaved five
- 00:39:29months off our project that's the value
- 00:39:32of architectural thinking of expanding
- 00:39:35that breadth of knowledge
- 00:39:40mark
- 00:39:41this is really cool
- 00:39:43but I don't have time for this
- 00:39:46I wish I had as much time as you to kind
- 00:39:48of just click on these and peruse these
- 00:39:51and all this well let me give you a
- 00:39:53little secret I don't either
- 00:39:56I work between 12 and 15 hours a day
- 00:39:59seven days a week
- 00:40:00I don't have time for this
- 00:40:02so here's my technique I kind of created
- 00:40:05something
- 00:40:06called what well at least what I call
- 00:40:09the 20 minute rule
- 00:40:12and here's what I do
- 00:40:15I spend 20 minutes a day
- 00:40:18just 20 sometimes more but at least 20
- 00:40:21minutes a day
- 00:40:25on me on my career on myself
- 00:40:29to expand my technical breadth
- 00:40:33oh I may go to info queue I may just
- 00:40:35create a list of words I've never heard
- 00:40:37of and that's going to queue up for
- 00:40:39tomorrow which I may look at two or
- 00:40:41three of those
- 00:40:42now here's the other secret though
- 00:40:47when do you do this
- 00:40:48oh launch that'd be a good time yeah how
- 00:40:51many of us get to take lunch seriously
- 00:40:53no yeah after after work this would be a
- 00:40:57good time to do it uh-huh
- 00:40:59yeah how many of you have families
- 00:41:01yeah you get home after a hard day and
- 00:41:03your spouse goes here I'm going out
- 00:41:07and you look at your child and go what
- 00:41:09did you do today
- 00:41:10yeah you're not going to spend 20
- 00:41:12minutes learning about proton no
- 00:41:15here's the trick
- 00:41:17first thing in the morning
- 00:41:20now
- 00:41:21let me qualify that
- 00:41:23what's the very very first thing you do
- 00:41:26when you wake up in the morning and but
- 00:41:27by the way I'll answer that first you
- 00:41:30get that blessed cup of coffee or tea
- 00:41:33yes
- 00:41:34okay what's the very very very next
- 00:41:38thing you do
- 00:41:39when you sit down at work whether it be
- 00:41:41at your home office or whatever
- 00:41:44email check email and your day is over
- 00:41:49you start getting involved it's like oh
- 00:41:51it's like oh no I've got a meeting in 10
- 00:41:53minutes oh we've got a production outage
- 00:41:54right there oh yeah never okay so
- 00:41:58my day looks like this I get that
- 00:42:00blessed cup of coffee or tea
- 00:42:04and then I spend 20 minutes enjoying
- 00:42:07that nice hot beverage well I work on me
- 00:42:12my career
- 00:42:15my architectural thinking my technical
- 00:42:17breath
- 00:42:18if I could spend 30 awesome but 20 is
- 00:42:21good
- 00:42:22most articles are designed for seven or
- 00:42:24ten minutes my videos of software
- 00:42:27architecture Monday on purpose are 10
- 00:42:28minutes so you can do other things
- 00:42:30during the 20-minute rule as well try it
- 00:42:33out
- 00:42:34try it out because if you can't spend 20
- 00:42:37minutes in the morning on yourself
- 00:42:41then there's other problems that we need
- 00:42:43to discuss I'll be in the speaker's
- 00:42:45Lounge after the thing
- 00:42:51well there's one other aspect so give it
- 00:42:53a try give it a try download that
- 00:42:56architecture characteristics worksheet
- 00:42:58give it a try just see if you can start
- 00:43:00to think about what are the
- 00:43:02characteristics that's architectural
- 00:43:04thinking
- 00:43:06um expand your technical breath
- 00:43:08these are easy things that are free
- 00:43:11okay there's one more element that we
- 00:43:13can talk about and that's analyzing
- 00:43:15trade-offs this is another thing of
- 00:43:17thinking like an architect I need to
- 00:43:19channel my friend Rich hickey who
- 00:43:22created closure
- 00:43:23and here's a quote that's quite
- 00:43:25controversial but it's quite funny and
- 00:43:28sometimes sometimes quite true and he
- 00:43:30says this
- 00:43:33developers know the benefits of
- 00:43:35everything
- 00:43:36and the trade-offs of nothing
- 00:43:39and I've seen it I mean it's not always
- 00:43:41true I have worked with development
- 00:43:43teams and developers who do know about
- 00:43:46trade-offs
- 00:43:47but a lot of us get excited about a
- 00:43:49particular technology a framework a tool
- 00:43:52a language
- 00:43:54and we only see the good stuff we don't
- 00:43:56see the bad stuff
- 00:43:58yeah so let's see about analyzing
- 00:44:01trade-offs because this is another way
- 00:44:02of thinking like an architect okay
- 00:44:05so here's our first law again and we
- 00:44:07keep bringing this up because it's so
- 00:44:09important
- 00:44:10everything in software architecture is a
- 00:44:13trade-off
- 00:44:14and the structural aspect of software
- 00:44:17architecture and the structural aspect
- 00:44:20of Building Systems
- 00:44:21there are no best practices
- 00:44:26how can you possibly say you should all
- 00:44:28focus on performance
- 00:44:30oh we don't care about performance no
- 00:44:33that's not a best practice you should
- 00:44:34always use microservices yeah we're a
- 00:44:37small startup shop
- 00:44:38I mean challenge yourself
- 00:44:40Neil and I have that's how we came up
- 00:44:42with the law yeah now I qualified it to
- 00:44:45say the structural aspect because there
- 00:44:47are some best practices in architecture
- 00:44:50one of them
- 00:44:52always collaborate with your development
- 00:44:55team and stakeholders yeah if you don't
- 00:44:57it'll fail
- 00:44:58yeah that's a best practice but it's the
- 00:45:00process part of architecture I use
- 00:45:03architecture decision records to justify
- 00:45:05my architecture decisions that's a best
- 00:45:08practice
- 00:45:09but within a structural aspect
- 00:45:12no there's none
- 00:45:14so follow-up question in our second book
- 00:45:17architecture the hard parts and that is
- 00:45:20okay then
- 00:45:22so what happens when there are no best
- 00:45:23practices
- 00:45:25this everybody is why architecture is
- 00:45:29hard
- 00:45:33it's because
- 00:45:34we don't have that many guideposts
- 00:45:36because it's all 100 contextual
- 00:45:40so how do we make decisions this is one
- 00:45:43of the things an architect does this is
- 00:45:45architectural thinking analyzing
- 00:45:47trade-offs well not surprisingly how did
- 00:45:50them do we make a decision A or B uh
- 00:45:54I guess we could flip a coin no I have a
- 00:45:56better idea understand the business
- 00:45:58drivers first
- 00:46:00what's important to the business and
- 00:46:02they say time to market the most
- 00:46:05important thing we've got a lot of
- 00:46:06important things but that one's way up
- 00:46:08at the ceiling
- 00:46:09all right all right so we understand
- 00:46:11that do you remember the first section
- 00:46:14what do we do with that information
- 00:46:17yeah exactly doesn't matter if you're
- 00:46:19not an architect
- 00:46:21you say huh so they need speed to Market
- 00:46:23well I wonder what that means that kind
- 00:46:25of translates to architectural
- 00:46:27characteristics about maintainability
- 00:46:30testability the ease of incompleteness
- 00:46:32of testing and also deployability the
- 00:46:35ceremony of deploying our software the
- 00:46:37frequency and the overall risk
- 00:46:40it's all three of these that give us
- 00:46:42time to Market oh it doesn't matter how
- 00:46:44fast you can find the change and make it
- 00:46:46as a developer if it takes you six weeks
- 00:46:48to test
- 00:46:50good luck
- 00:46:53if you're wondering by the way
- 00:46:56um
- 00:46:57if you don't believe me about these
- 00:46:58three
- 00:46:59what is the fastest possible way
- 00:47:02in the world to get your changes
- 00:47:04released to your customers fastest way
- 00:47:07in the world
- 00:47:11don't test
- 00:47:13make the change release make the change
- 00:47:15release make change release
- 00:47:18yeah is that time to Market
- 00:47:20no that's killing your company
- 00:47:24yes so the point is it's all three of
- 00:47:27these we need that ease of and
- 00:47:29completeness of testing because as we
- 00:47:30move faster we want to make sure we're
- 00:47:33not introducing more and more and more
- 00:47:34and more bugs into the system we will
- 00:47:37lose it doesn't matter how fast we can
- 00:47:39be it's all three of these
- 00:47:41we take this information
- 00:47:43and then we do this huh
- 00:47:46I have a decision to make what do I do I
- 00:47:49look at the pros and cons
- 00:47:51and I try to boil them down and simplify
- 00:47:54them
- 00:47:55and this is what it ends up to be
- 00:47:57performance versus maintainability
- 00:48:00that's what it boils down to single
- 00:48:03service three services single Services
- 00:48:04faster three services this is gives us
- 00:48:07better maintainability pick one it's
- 00:48:09almost like cap theorem we can't really
- 00:48:10do both of these
- 00:48:12well how do we make a choice obviously
- 00:48:14performance
- 00:48:15oh I better not get on that soapbox
- 00:48:18thank God pre-optimization of
- 00:48:20performance could even be a keynote oh
- 00:48:22boy yeah because think about it as a
- 00:48:24developer
- 00:48:25we want things to be fast
- 00:48:28that's what our primary focus is on our
- 00:48:30mind
- 00:48:30that's seeing things with a developer's
- 00:48:32eye a developer's perspective we want
- 00:48:35fast code
- 00:48:38seeing things with an architect's eye
- 00:48:40says yeah we got to make our code fast
- 00:48:43but hold on a second
- 00:48:45what's most important to the business
- 00:48:48well if we can tie them back to the
- 00:48:51architecture characteristics we see that
- 00:48:53maintainability is actually on that list
- 00:48:56and if we tie it back to the business
- 00:48:58need we see that time to Market would be
- 00:49:01much better if I can make maintainable
- 00:49:03code in other words break apart my
- 00:49:05services
- 00:49:06and so do you see
- 00:49:08by going backwards now
- 00:49:10I can actually make a decision and say
- 00:49:14that's why we're going to break apart
- 00:49:16our services
- 00:49:18it's going to be slower
- 00:49:20but time to Market is more important to
- 00:49:22the business
- 00:49:23that's what the architecture has to
- 00:49:25support that is modern trade-off
- 00:49:28analysis this is now seeing decisions
- 00:49:31that you need to make with an
- 00:49:33architect's eye and architect's point of
- 00:49:35view
- 00:49:36okay well let's try this out
- 00:49:39let's actually show I want to show you a
- 00:49:41couple of tips the first pro tip is this
- 00:49:44watch out for something called the out
- 00:49:46of context trap as a matter of fact this
- 00:49:48is out of context anti-pattern when
- 00:49:51we're starting to analyze trade-offs
- 00:49:53let me show you what I mean
- 00:49:55so
- 00:49:56I'm wondering of a query I can't decide
- 00:50:00whether I should use a shared library or
- 00:50:03a shared service
- 00:50:05for all my shared functionality this is
- 00:50:07a developer decision something a
- 00:50:10developer is probably going to make
- 00:50:12where do I put all of those calculators
- 00:50:14that are shared all of my utilities my
- 00:50:17utility.cs my utility.java my utility.py
- 00:50:20what do I do with all that code hmm
- 00:50:24well I don't know oh wait a minute I
- 00:50:27just attended gids23 and I attended this
- 00:50:30keynote about analyzing trade-offs
- 00:50:33that would be a good start
- 00:50:37so let's actually do this
- 00:50:39so what I'm going to do is create a
- 00:50:41scorecard
- 00:50:42and I'm going to start looking at the
- 00:50:44pros and cons of each of these
- 00:50:46so
- 00:50:47heterogeneous code that's the first one
- 00:50:49which works better well heterogeneous
- 00:50:52code does not work well with shared
- 00:50:54libraries because if I've got five
- 00:50:56platforms I've got five copies of that
- 00:50:59shared Library five copies of the code
- 00:51:01but with a shared service
- 00:51:04doesn't matter if you're even in a
- 00:51:05Mainframe call me it's in one place
- 00:51:08oh score one for shared service ah but
- 00:51:12what about high code volatility our code
- 00:51:14changes all the time
- 00:51:16well in a shared Library what's going to
- 00:51:18happen
- 00:51:19I'm going to continue to version until I
- 00:51:21reach that Max version number that's
- 00:51:22supported and all of you even if you're
- 00:51:25not using the utility are going to have
- 00:51:27to retest and redeploy
- 00:51:29and rebuild
- 00:51:31every single week
- 00:51:34that's a lot of churn oh that's not
- 00:51:36going to work but what happens with a
- 00:51:38shared service that code changes all the
- 00:51:40time yeah it just changed the podium
- 00:51:42yeah I just changed the podium yeah you
- 00:51:44guys all just use it
- 00:51:47okay what about the ability to version
- 00:51:49things though
- 00:51:52shared library now has a check mark this
- 00:51:55gets a plus one yeah it's hard diversion
- 00:51:58runtime changes
- 00:52:01but I converge in a dll or a jar file or
- 00:52:04a gem
- 00:52:05that's not hard
- 00:52:07actually it is
- 00:52:08fallacy number nine of distributed
- 00:52:10computing
- 00:52:12what about overall change risk
- 00:52:14yeah if I make a change to that Podium
- 00:52:16that's our shared service right there
- 00:52:17and I really messed something up
- 00:52:21I've just now broken every single one of
- 00:52:23you
- 00:52:24because it's hard to version that's a
- 00:52:26runtime change in production once I
- 00:52:29deploy that service all of a sudden boom
- 00:52:31boom boom boom everybody's like hey why
- 00:52:33are you all leaving the uh tutorium uh
- 00:52:36oh because that change made the speaker
- 00:52:38go away and uh and also you can't hear
- 00:52:41me is or the microphone and so it's a
- 00:52:44lot more risk
- 00:52:46But Eric but with shared libraries I
- 00:52:49have backwards compatibility I have
- 00:52:50agility
- 00:52:51then cat needs a change immediately okay
- 00:52:53then cut type type type here you go
- 00:52:55version 2.3.4 done
- 00:52:58I gave that to him just now
- 00:53:01the rest of you YouTube 2.4.2
- 00:53:05backwards compatibility and Agility
- 00:53:08because now we have to start now all
- 00:53:10changing at some point but what about
- 00:53:13the operational characteristics things
- 00:53:15like performance things like fault
- 00:53:17tolerance scalability
- 00:53:19these are all bad in a shared service
- 00:53:24at this Podium fell to the ground no
- 00:53:26longer available neither are any of you
- 00:53:29yeah all of a sudden if all of you and I
- 00:53:32think I did this yesterday on stage here
- 00:53:33all of a sudden ask me a question all at
- 00:53:35once
- 00:53:36I'm going to get overwhelmed and just
- 00:53:38curl up on the stage and to a ball and
- 00:53:41start crying
- 00:53:42um yeah these are the problems it's
- 00:53:44going to be slow to go all the way from
- 00:53:46the front there especially with all
- 00:53:47these Pathways to ask me a question if
- 00:53:50you want to ask me a question to
- 00:53:51communicate with me you have to actually
- 00:53:52come onto the stage and shake my hand
- 00:53:54that's going to take forever
- 00:53:57not with a shared Library
- 00:54:00do you see a clear winner here
- 00:54:04yeah count up the check marks and we
- 00:54:07find this is why using a shared library
- 00:54:11is a best practice
- 00:54:15hopefully now you know I'm teasing
- 00:54:18because there is no such thing as a best
- 00:54:20practice
- 00:54:21this everyone is an anti-pattern
- 00:54:25avoid it like the plague this is called
- 00:54:29the out of context trap what's my
- 00:54:31context me Mark Richards personally this
- 00:54:35is my context well we have Services
- 00:54:37written in four different languages so
- 00:54:39we're using polyglot programming and
- 00:54:41we're not really concerned about
- 00:54:42performance or scalability no our
- 00:54:45biggest issue and our product right now
- 00:54:47is managing changes
- 00:54:50to Shared functionality that occur
- 00:54:52frequently that's my problem
- 00:54:55oh what happens if we go back to the
- 00:54:57scorecard
- 00:55:00that's plus two to zero
- 00:55:04yeah that's how we make the choice
- 00:55:07we apply the context
- 00:55:09and now a shared service is better even
- 00:55:12though it has more X's I don't care
- 00:55:14about those X's now a lot of you
- 00:55:17probably use scorecards and you do
- 00:55:19waiting so you say well this one's
- 00:55:21weighted higher than this one well go
- 00:55:23ahead and do that but if you don't care
- 00:55:25about it wait it at zero
- 00:55:28and then count it up because it has no
- 00:55:30bearing for our context
- 00:55:33so that watch out for this kind of of of
- 00:55:35problem okay here's another Pro tip
- 00:55:40but this one's hard
- 00:55:43try to avoid not try to avoid there is
- 00:55:46no try it's do or not do
- 00:55:49avoid over evangelizing any particular
- 00:55:52technology framework solution something
- 00:55:56you found
- 00:55:58we get all excited about something oh I
- 00:56:02found I found grpc Google's remote
- 00:56:05procedure call
- 00:56:06it's the best thing I've ever seen I
- 00:56:08could get 10 times more than 10 times
- 00:56:11better performance in our system our
- 00:56:13system's too slow I found the solution
- 00:56:15grpc oh 10 times performance increase it
- 00:56:19is it's wonderful it's exciting it's
- 00:56:21great
- 00:56:22try to avoid that
- 00:56:25why
- 00:56:26because of the first law of software
- 00:56:29architecture everything in software
- 00:56:31architecture
- 00:56:32is a trade-off
- 00:56:34and the problem is
- 00:56:36you all get very excited about it and
- 00:56:38what have I just done by evangelizing
- 00:56:42I have just hidden
- 00:56:44all of the trade-offs
- 00:56:46and they're there
- 00:56:48no one's finds them no one sees them no
- 00:56:51one knows they're there because we're
- 00:56:52all excited because I evangelized
- 00:56:54something I got excited about it I made
- 00:56:56you excited about it
- 00:56:58this is a very dangerous thing you know
- 00:57:02why architects
- 00:57:04are always grumpy
- 00:57:05they always have a frown they're always
- 00:57:08walking around like this
- 00:57:10because we can't get excited about
- 00:57:12anything
- 00:57:13because everything has a trade-off it's
- 00:57:15a very depressing place to be yes oh
- 00:57:20all right
- 00:57:21um
- 00:57:22so that everyone is architectural
- 00:57:24thinking that's seeing things with an
- 00:57:28architect's eye an architect's point of
- 00:57:30view which will help you start
- 00:57:33accelerating your career
- 00:57:35into kind of that architect position
- 00:57:37because you're already acting the role
- 00:57:40you're already doing it
- 00:57:42get the practice now
- 00:57:44before all of a sudden you get handed
- 00:57:47the golden keys of architecture and say
- 00:57:50I'm not sure what I'm supposed to be
- 00:57:52doing here and now I'm way over my head
- 00:57:55practice it now but even if that's not
- 00:57:58your career aspiration
- 00:58:00maybe you want to know what we stay a
- 00:58:01developer that's cool too
- 00:58:03but now using this stuff you can create
- 00:58:06more effective
- 00:58:07and more efficient
- 00:58:09and more correct
- 00:58:11software Solutions as a developer
- 00:58:16all right wonderful well thank you all
- 00:58:19so much
- 00:58:20thank you
- 00:58:20[Music]
- software architecture
- architectural thinking
- trade-offs
- business drivers
- technical knowledge
- software development
- career growth