What Software Architects Do That Programmers DON'T

119.38k views1994 WordsCopy TextShare
Thriving Technologist
How does being a software architect differ from a typical programmer? In this episode, I share the 1...
Video Transcript:
it's really important If You're Going to Be an Effective software architect that you don't let the company you work for push you into being the lead developer on projects or just pitching in anywhere people need help because if you get sucked into writing code for just any old application or any old feature then you don't have time to really be an [Music] architect ever wondered what makes a great software architect or how do I get promoted to be one well over 20 years ago at 23 years old I was promoted to be a software architect
and I messed up pretty bad back then but I'd like to think I've learned quite a few things in the 20 years since so here are 10 aspects of the job of being a software architect that if you do them I think will not only help you increase the chance that you'll get the job J but actually do it really well the first thing that many software Architects are really good at is what I call zooming in and zooming out I had a manager at my first job right out of college and after a couple
years of working for him he saw something in me that told him that I might make a really good software architect and once he helped me get the promotion one of the things he told me that really sets people apart as a software architect is being able to look really detailed and deep at the code you're looking at knowing every single detail you know of what you're dealing with and not glossing over things but then when you need to coming way back up and making sure you look at the big picture of what you're doing
and not getting bogged down in the details so you'll find many programmers fall into one or the other Camp you'll find programmers that are really good at understanding all the most detailed and difficult parts of some aspect of the code and others that are really big picture and can really think about the overall solution or architecture as a whole but to be a really great architect you need to be able to know how to do both and when the best time is to do it the second thing that makes a really great architect is being
able to care about the domain now this doesn't just mean domain driven design you've probably heard of that really famous book from Eric Evans this actually means caring about the business that you work in and understanding its problem domain so for example if you worked like for a company that does shipping understanding all that you can about how that company looks at shipping what are all the different other business systems at that company and actually really doing a good job of trying to figure out how do we represent this problem domain in the software in
the best way possible [Music] the third thing software Architects are really good at that sets them apart from your average programmer is they're Masters at understanding tradeoffs what I mean by this is when you go to select a technology or figure out how to do some deployment aspect of your code or your picking an API of some sort there's often a lot of positives and negatives and some of the less experienced developers I've worked with will see some really positive aspects of the code but they won't look at everything else that's going to be impacted
if they choose that technology and so knowing how to look at all the variables that come into consideration training costs ease of use configurability complexity when you go to make a decision about software technology decisions and patterns and architecture is one of the biggest things that'll set you apart if you really want to consider becoming a software architect and the fourth thing that I think really great software Architects do that sets them apart from let's say a tech lead or a lead software developer is they're very humble about Gathering technology decisions what I mean by
this is some of the people who I've worked with who are not maybe the best choice for being a software architect will go out and find technologies that they really want to work on they go out and find Solutions and patterns and Frameworks that they are really excited about working with but they don't put enough consideration into the rest of the team and the rest of the company so a really great software architect when they go to make decisions about technology Investments they know how to talk to all their team members and they know the
history of their team members and the preferences of their team members and they take that into really strong consideration anytime they're making a a technology selection or decision the fifth thing that makes a really great software architect is they Embrace change they know that the decisions they're going to make about technology and the patterns they choose are not necessarily going to stay fixed or work for the entire lifetime of the project so they put just enough planning in up front and enough design to put some good architecture in place but they're really realistic and thinking
about the fact that once the team or you know whoever they're handing that architecture off to to sort of get started with begins to use it there's a really high likelihood that the decisions they made aren't going to solve every problem and they're not going to be suitable for every use case the sixth thing that makes someone a really strong candidate for an excellent architect is their masters of communication they know how to use diagrams to effectively convey both details or highlevel things about the software that they're building but they also now to talk to
a lot of different audiences the business people support people developers the CTO and Executives and they know how to communicate the architecture decisions in a way that helps each of those different types of people and each of those audiences really understand what's important to them and not get bogged down in all the details that might not even be related to what's important for them to support the architecture the seventh thing that a really strong great architect knows how to do is to be aware of the infrastructure they know that when you choose technology to use
eventually it's going to run in a production environment it's going to have real users hitting that software exercising it using it and they don't think about last whether the technology they picked is going to perform well they actually consider that at the very beginning so a really strong architect is usually very interested in devops Technologies Cloud AR architecture and Cloud platforms and services or whatever kind of you know Hardware or software infrastructure is needed to run the application and it's one of the biggest things I see when a programmer does not care too much about
that they may like to choose technology and mess around with Frameworks and apis but I wouldn't consider them quite yet at the point where they really would make a great [Music] [Applause] architect [Music] the eighth thing that a really strong software architect will do is they're a very strategic coder now what I mean by that is they don't just write software for any given piece of code that a team or a company needs they actually protect their time and they make sure they don't get sucked into working on features let's say for the software in
instead they're always working on architectural code on some of the projects I've worked on as an architect I'd often come up with patterns or initial code or or initial Frameworks you know combining stuff together and give them to a team and sometimes along with the documentation and everything else I would provide I would help that team with a little bit of code to kind of get going but it's really important if you're Going to Be an Effective software architect that you don't let the company you work for push you into being the lead developer on
projects or just pitching in anywhere people need help because if you get sucked into writing code for just any old application or any old feature then you don't have time to really be an architect the ninth thing a great software architect does is they consider the scale of the application or the services or the company that they're making architecture decisions for if you're working at a company and they're going to have at most a th users if they're really successful in their Market choosing microservices and really sophisticated cloud architectures is actually going to cost that
company a lot of money for the return on investment not just the money to you know pay for all the services but all the engineering thought overhead that everybody has to now grapple with to maintain that application at the same time if you're working on at a company where they're going to have millions and millions of users you know something at the at the scale of a Fang or just below it making decisions that are appropriate for you know getting the code working simply and having a really nice framework to program in but don't really
meet the performance needs of the application is going to get you in just as much trouble so you know whether you're choosing how your app's going to be tested you're choosing monitoring platforms you're choosing how to integrate various different libraries together I think some of the best Architects I've worked with and what I've tried to get at least better at myself is to know how to ask questions of the business and gather data let's say from existing business systems let's say they're you know rewriting a product or they're introducing a new product but they have
existing users and be able to interpret that data and know you know what is the true scale that we're expecting to have for this application and how do I actually mimic that before we roll it out to production to make sure it doesn't fall apart once people are using it and the 10th final thing really great software Architects do is they're sensitive to the costs every architectural decision you make has an implication to cost for your company it might cost them in terms of Licensing fees that's pretty obvious if the software costs something but it
also costs in that depending on how hard it is to troubleshoot they may have to pay let's say support Engineers more money to support the product for the company they may have to pay more for just the engineers to develop the software if the development experience is really complicated they may have to pay for custom work done by let's say outside Consultants or third-party firms if it becomes too complicated to integrate it and you can't figure it out and I've been there and now you have to get some really high- paid expert to make sure
you can use the technology so really great Architects I think one of the things that sets them apart is they'll really be realistic about hey every technology decision I make it's not for free do you agree or disagree with this list of what I think is important to be a really great software architect what are some of the things about being a great software architect that I haven't mentioned leave me some comments and let me know about it until next time [Music] thanks [Music] [Applause] [Music] [Applause] [Music] [Applause] [Music]
Related Videos
Is Tech Lead the WORST Job For Most Programmers?
24:29
Is Tech Lead the WORST Job For Most Progra...
Thriving Technologist
202,317 views
This Is Why Managers Don't Trust Programmers...
28:04
This Is Why Managers Don't Trust Programme...
Thriving Technologist
255,775 views
5 Design Patterns That Are ACTUALLY Used By Developers
9:27
5 Design Patterns That Are ACTUALLY Used B...
Alex Hyett
285,434 views
How to Become a Great Software Architect • Eberhard Wolff • GOTO 2019
43:09
How to Become a Great Software Architect •...
GOTO Conferences
154,030 views
Get ahead of 99% of software engineers in JUST a few minutes per day
5:53
Get ahead of 99% of software engineers in ...
Scott Stern
14,352 views
Linus Torvalds: Speaks on Hype and the Future of AI
9:02
Linus Torvalds: Speaks on Hype and the Fut...
SavvyNik
223,877 views
What does larger scale software development look like?
24:15
What does larger scale software developmen...
Web Dev Cody
1,439,910 views
The Primeagen on "Developer Excellence" | Laracon US 2024 at Dallas, TX
13:24
The Primeagen on "Developer Excellence" | ...
Laravel
159,896 views
Microservices are Technical Debt
31:59
Microservices are Technical Debt
NeetCodeIO
492,369 views
Why Most Programmers DON'T Last
18:56
Why Most Programmers DON'T Last
Thriving Technologist
311,505 views
What Software Architecture Should Look Like
19:13
What Software Architecture Should Look Like
Continuous Delivery
83,376 views
Your Project Is FAKE Agile, What Now?
23:03
Your Project Is FAKE Agile, What Now?
Thriving Technologist
32,668 views
A Philosophy of Software Design | John Ousterhout | Talks at Google
1:01:40
A Philosophy of Software Design | John Ous...
Talks at Google
481,629 views
Top 6 Most Popular API Architecture Styles
4:21
Top 6 Most Popular API Architecture Styles
ByteByteGo
925,294 views
Why Entry Level Jobs Demand Years Of Experience
18:13
Why Entry Level Jobs Demand Years Of Exper...
Damon Cassidy
614,746 views
How To ACTUALLY Get Your Boss To Listen
18:39
How To ACTUALLY Get Your Boss To Listen
Thriving Technologist
32,350 views
DON'T Become a Software Engineer - Do THIS instead
14:17
DON'T Become a Software Engineer - Do THIS...
Tech With Soleyman
46,639 views
40 Years Of Software Engineering Experience In 19 Minutes
19:10
40 Years Of Software Engineering Experienc...
Continuous Delivery
88,585 views
5 Signs of an Inexperienced Self-Taught Developer (and how to fix)
8:40
5 Signs of an Inexperienced Self-Taught De...
Travis Media
716,983 views
Why Tech Consultants Have Management's Ear (And You Don't)
31:22
Why Tech Consultants Have Management's Ear...
Thriving Technologist
20,965 views
Copyright © 2025. Made with ♥ in London by YTScribe.com