00:00:00
it's really important If You're Going to
00:00:01
Be an Effective software architect that
00:00:03
you don't let the company you work for
00:00:05
push you into being the lead developer
00:00:09
on projects or just pitching in anywhere
00:00:11
people need help because if you get
00:00:13
sucked into writing code for just any
00:00:16
old application or any old feature then
00:00:18
you don't have time to really be an
00:00:23
[Music]
00:00:28
architect
00:00:32
ever wondered what makes a great
00:00:34
software architect or how do I get
00:00:36
promoted to be one well over 20 years
00:00:39
ago at 23 years old I was promoted to be
00:00:42
a software architect and I messed up
00:00:44
pretty bad back then but I'd like to
00:00:47
think I've learned quite a few things in
00:00:49
the 20 years since so here are 10
00:00:51
aspects of the job of being a software
00:00:54
architect that if you do them I think
00:00:57
will not only help you increase the
00:00:58
chance that you'll get the job J but
00:01:00
actually do it really well the first
00:01:03
thing that many software Architects are
00:01:05
really good at is what I call zooming in
00:01:09
and zooming out I had a manager at my
00:01:12
first job right out of college and after
00:01:14
a couple years of working for him he saw
00:01:17
something in me that told him that I
00:01:18
might make a really good software
00:01:20
architect and once he helped me get the
00:01:22
promotion one of the things he told me
00:01:24
that really sets people apart as a
00:01:27
software architect is being able to look
00:01:30
really detailed and deep at the code
00:01:32
you're looking at knowing every single
00:01:35
detail you know of what you're dealing
00:01:37
with and not glossing over things but
00:01:40
then when you need to coming way back up
00:01:43
and making sure you look at the big
00:01:45
picture of what you're doing and not
00:01:47
getting bogged down in the details so
00:01:49
you'll find many programmers fall into
00:01:51
one or the other Camp you'll find
00:01:54
programmers that are really good at
00:01:56
understanding all the most detailed and
00:01:59
difficult parts of some aspect of the
00:02:01
code and others that are really big
00:02:03
picture and can really think about the
00:02:06
overall solution or architecture as a
00:02:08
whole but to be a really great architect
00:02:11
you need to be able to know how to do
00:02:13
both and when the best time is to do it
00:02:17
the second thing that makes a really
00:02:18
great architect is being able to care
00:02:21
about the domain now this doesn't just
00:02:23
mean domain driven design you've
00:02:25
probably heard of that really famous
00:02:27
book from Eric Evans this actually means
00:02:31
caring about the business that you work
00:02:33
in and understanding its problem domain
00:02:36
so for example if you worked like for a
00:02:38
company that does shipping understanding
00:02:41
all that you can about how that company
00:02:43
looks at shipping what are all the
00:02:45
different other business systems at that
00:02:47
company and actually really doing a good
00:02:49
job of trying to figure out how do we
00:02:51
represent this problem domain in the
00:02:54
software in the best way
00:02:58
possible
00:03:00
[Music]
00:03:06
the third thing software Architects are
00:03:08
really good at that sets them apart from
00:03:11
your average programmer is they're
00:03:13
Masters at understanding tradeoffs what
00:03:16
I mean by this is when you go to select
00:03:18
a technology or figure out how to do
00:03:20
some deployment aspect of your code or
00:03:23
your picking an API of some sort there's
00:03:26
often a lot of positives and negatives
00:03:29
and some of the less experienced
00:03:31
developers I've worked with will see
00:03:33
some really positive aspects of the code
00:03:36
but they won't look at everything else
00:03:38
that's going to be impacted if they
00:03:39
choose that technology and so knowing
00:03:42
how to look at all the variables that
00:03:44
come into consideration training costs
00:03:47
ease of use configurability
00:03:50
complexity when you go to make a
00:03:52
decision about software technology
00:03:54
decisions and patterns and architecture
00:03:56
is one of the biggest things that'll set
00:03:58
you apart if you really want to consider
00:04:01
becoming a software architect and the
00:04:03
fourth thing that I think really great
00:04:06
software Architects do that sets them
00:04:09
apart from let's say a tech lead or a
00:04:11
lead software developer is they're very
00:04:14
humble about Gathering technology
00:04:16
decisions what I mean by this is some of
00:04:20
the people who I've worked with who are
00:04:22
not maybe the best choice for being a
00:04:24
software architect will go out and find
00:04:27
technologies that they really want to
00:04:28
work on they go out and find Solutions
00:04:31
and patterns and Frameworks that they
00:04:34
are really excited about working with
00:04:35
but they don't put enough consideration
00:04:37
into the rest of the team and the rest
00:04:40
of the company so a really great
00:04:43
software architect when they go to make
00:04:45
decisions about technology Investments
00:04:47
they know how to talk to all their team
00:04:49
members and they know the history of
00:04:51
their team members and the preferences
00:04:53
of their team members and they take that
00:04:55
into really strong consideration anytime
00:04:59
they're making a a technology selection
00:05:00
or decision the fifth thing that makes a
00:05:03
really great software architect is they
00:05:06
Embrace change they know that the
00:05:09
decisions they're going to make about
00:05:11
technology and the patterns they choose
00:05:14
are not necessarily going to stay fixed
00:05:16
or work for the entire lifetime of the
00:05:19
project so they put just enough planning
00:05:21
in up front and enough design to put
00:05:24
some good architecture in place but
00:05:27
they're really realistic and thinking
00:05:29
about the fact that once the team or you
00:05:31
know whoever they're handing that
00:05:32
architecture off to to sort of get
00:05:34
started with begins to use it there's a
00:05:37
really high likelihood that the
00:05:38
decisions they made aren't going to
00:05:40
solve every problem and they're not
00:05:41
going to be suitable for every use case
00:05:44
the sixth thing that makes someone a
00:05:46
really strong candidate for an excellent
00:05:48
architect is their masters of
00:05:50
communication they know how to use
00:05:52
diagrams to effectively convey both
00:05:55
details or highlevel things about the
00:05:58
software that they're building but they
00:05:59
also now to talk to a lot of different
00:06:02
audiences the business people support
00:06:05
people developers the CTO and Executives
00:06:08
and they know how to communicate the
00:06:10
architecture decisions in a way that
00:06:12
helps each of those different types of
00:06:14
people and each of those audiences
00:06:16
really understand what's important to
00:06:18
them and not get bogged down in all the
00:06:21
details that might not even be related
00:06:23
to what's important for them to support
00:06:24
the architecture the seventh thing that
00:06:27
a really strong great architect knows
00:06:29
how to do is to be aware of the
00:06:31
infrastructure they know that when you
00:06:33
choose technology to use eventually it's
00:06:36
going to run in a production environment
00:06:38
it's going to have real users hitting
00:06:41
that software exercising it using it and
00:06:44
they don't think about last whether the
00:06:47
technology they picked is going to
00:06:48
perform well they actually consider that
00:06:50
at the very beginning so a really strong
00:06:54
architect is usually very interested in
00:06:56
devops Technologies Cloud AR
00:06:59
architecture and Cloud platforms and
00:07:01
services or whatever kind of you know
00:07:03
Hardware or software infrastructure is
00:07:05
needed to run the application and it's
00:07:07
one of the biggest things I see when a
00:07:09
programmer does not care too much about
00:07:11
that they may like to choose technology
00:07:14
and mess around with Frameworks and apis
00:07:17
but I wouldn't consider them quite yet
00:07:19
at the point where they really would
00:07:20
make a great
00:07:21
[Music]
00:07:27
[Applause]
00:07:28
architect
00:07:33
[Music]
00:07:40
the eighth thing that a really strong
00:07:42
software architect will do is they're a
00:07:44
very strategic coder now what I mean by
00:07:48
that is they don't just write software
00:07:50
for any given piece of code that a team
00:07:53
or a company needs they actually protect
00:07:56
their time and they make sure they don't
00:07:58
get sucked into working on features
00:08:01
let's say for the software in instead
00:08:04
they're always working on architectural
00:08:06
code on some of the projects I've worked
00:08:09
on as an architect I'd often come up
00:08:11
with patterns or initial code or or
00:08:14
initial Frameworks you know combining
00:08:16
stuff together and give them to a team
00:08:19
and sometimes along with the
00:08:20
documentation and everything else I
00:08:22
would provide I would help that team
00:08:24
with a little bit of code to kind of get
00:08:26
going but it's really important if
00:08:29
you're Going to Be an Effective software
00:08:30
architect that you don't let the company
00:08:32
you work for push you into being the
00:08:36
lead developer on projects or just
00:08:38
pitching in anywhere people need help
00:08:40
because if you get sucked into writing
00:08:43
code for just any old application or any
00:08:45
old feature then you don't have time to
00:08:47
really be an architect the ninth thing a
00:08:51
great software architect does is they
00:08:54
consider the scale of the application or
00:08:56
the services or the company that they're
00:08:58
making architecture decisions for if
00:09:01
you're working at a company and they're
00:09:02
going to have at most a th users if
00:09:05
they're really successful in their
00:09:07
Market choosing microservices and really
00:09:11
sophisticated cloud architectures is
00:09:13
actually going to cost that company a
00:09:15
lot of money for the return on
00:09:17
investment not just the money to you
00:09:19
know pay for all the services but all
00:09:21
the engineering thought overhead that
00:09:23
everybody has to now grapple with to
00:09:26
maintain that application at the same
00:09:28
time if you're working on at a company
00:09:29
where they're going to have millions and
00:09:31
millions of users you know something at
00:09:33
the at the scale of a Fang or just below
00:09:35
it making decisions that are appropriate
00:09:38
for you know getting the code working
00:09:40
simply and having a really nice
00:09:41
framework to program in but don't really
00:09:44
meet the performance needs of the
00:09:45
application is going to get you in just
00:09:47
as much trouble so you know whether
00:09:49
you're choosing how your app's going to
00:09:51
be tested you're choosing monitoring
00:09:53
platforms you're choosing how to
00:09:55
integrate various different libraries
00:09:57
together I think some of the best
00:09:59
Architects I've worked with and what
00:10:00
I've tried to get at least better at
00:10:02
myself is to know how to ask questions
00:10:05
of the business and gather data let's
00:10:07
say from existing business systems let's
00:10:09
say they're you know rewriting a product
00:10:11
or they're introducing a new product but
00:10:12
they have existing users and be able to
00:10:15
interpret that data and know you know
00:10:17
what is the true scale that we're
00:10:19
expecting to have for this application
00:10:21
and how do I actually mimic that before
00:10:23
we roll it out to production to make
00:10:25
sure it doesn't fall apart once people
00:10:27
are using it and the 10th final thing
00:10:30
really great software Architects do is
00:10:33
they're sensitive to the costs every
00:10:35
architectural decision you make has an
00:10:38
implication to cost for your company it
00:10:41
might cost them in terms of Licensing
00:10:43
fees that's pretty obvious if the
00:10:45
software costs something but it also
00:10:47
costs in that depending on how hard it
00:10:49
is to troubleshoot they may have to pay
00:10:52
let's say support Engineers more money
00:10:55
to support the product for the company
00:10:57
they may have to pay more for just the
00:10:59
engineers to develop the software if the
00:11:01
development experience is really
00:11:03
complicated they may have to pay for
00:11:06
custom work done by let's say outside
00:11:08
Consultants or third-party firms if it
00:11:11
becomes too complicated to integrate it
00:11:13
and you can't figure it out and I've
00:11:15
been there and now you have to get some
00:11:17
really high- paid expert to make sure
00:11:19
you can use the technology so really
00:11:22
great Architects I think one of the
00:11:24
things that sets them apart is they'll
00:11:26
really be realistic about hey every
00:11:29
technology decision I make it's not for
00:11:31
free do you agree or disagree with this
00:11:34
list of what I think is important to be
00:11:36
a really great software architect what
00:11:38
are some of the things about being a
00:11:40
great software architect that I haven't
00:11:42
mentioned leave me some comments and let
00:11:44
me know about it until next time
00:11:48
[Music]
00:11:57
thanks
00:12:02
[Music]
00:12:07
[Applause]
00:12:08
[Music]
00:12:19
[Applause]
00:12:21
[Music]
00:12:31
[Applause]
00:12:32
[Music]