What Software Architects Do That Programmers DON'T

00:12:51
https://www.youtube.com/watch?v=IwrvE-wHm84

Resumo

TLDRThis video breaks down ten aspects essential for becoming a successful software architect. Key skills include the ability to "zoom in and out," balancing detail with the big picture, and understanding the business domain to represent it optimally in software. Architects must be adept at recognizing trade-offs when selecting technologies, understanding that these choices can have broad implications. They need to embrace change, accepting that some of their initial architectural decisions may not be permanent. Effective communication is crucial, allowing architects to convey complex designs to diverse audiences including business leaders and developers. They should prioritize strategic coding and avoid being pigeonholed as lead developers, ensuring they remain focused on overarching structures rather than minute details. Great architects are tactically aware of infrastructure needs, understanding how these influence software in production environments. Additionally, they must consider the application's scale to ensure appropriate design, all while being sensitive to the costs associated with each architectural decision, such as licensing fees and support expenditures. These attributes together distinguish outstanding software architects from their peers.

Conclusões

  • 🏗️ Zooming in and out is crucial - understand both details and the big picture.
  • 💡 Care about the business domain for effective software representation.
  • ⚖️ Master trade-offs to make informed technological choices.
  • 📈 Be open to change as initial decisions may evolve.
  • 🗣️ Communication is key among various stakeholders.
  • 🔧 Be aware of the infrastructure needs for the software.
  • 🧑‍💼 Avoid being solely a coder; focus on architecture.
  • 📊 Scale is important; choose appropriate system designs.
  • 💵 Consider the costs of architectural decisions.
  • 🤝 Engage with team preferences to make collaborative decisions.

Linha do tempo

  • 00:00:00 - 00:05:00

    To be an effective software architect, it's crucial not to get sidetracked by being pushed into leading development roles or handling random coding tasks, as it takes time away from focusing on architecture. The speaker shares his early experience of being promoted to a software architect at 23, despite initial failures, and emphasizes the importance of skills like zooming in and out between detailed code work and overarching system architecture, caring about the business and understanding its domain, and making informed trade-offs in technological decisions. The ability to humbly gather input from team members for technology choices and embracing changes in technology and patterns are also highlighted as key architect qualities.

  • 00:05:00 - 00:12:51

    The speaker continues by emphasizing the importance of communication, knowing the infrastructure, and strategic coding for a software architect. Effective architects communicate clearly with different stakeholders using tools like diagrams, and they are aware of infrastructure considerations from the start. They strategically manage their coding workload to focus on architectural necessities rather than getting entangled in regular development tasks. Additionally, they consider the scale of applications to ensure appropriate architectural decisions are made. Finally, they are sensitive to costs, recognizing that every architectural decision affects financial implications for the company, from licensing fees to support and development costs.

Mapa mental

Vídeo de perguntas e respostas

  • What is an important skill for a software architect?

    One important skill for a software architect is the ability to zoom in and out, managing both the details and the big picture.

  • Why should software architects avoid being lead developers?

    Software architects should avoid being lead developers to focus on strategic architectural decisions rather than getting bogged down in code.

  • What does caring about the domain mean for a software architect?

    Caring about the domain means understanding the business problems and creating software that represents this domain effectively.

  • How can software architects be masters of trade-offs?

    Software architects must assess all variables like cost, complexity, and flexibility when making technological decisions.

  • Why is change acceptance important for software architects?

    Accepting change is crucial because initial architectural decisions might need alterations as projects evolve.

  • Why is communication a crucial skill for software architects?

    Effective communication is vital for conveying detailed and high-level architecture to different audiences within the organization.

  • How does infrastructure awareness impact a software architect's decisions?

    Awareness of infrastructure ensures that technology choices align with production environment constraints and requirements.

  • Why should software architects avoid always being the coder?

    They should focus on creating architectural frameworks and guidelines rather than being pulled into coding minor features.

  • How should software architects consider scale in their decisions?

    Architects must understand the expected scale of users to decide on suitable architectures like microservices or simpler models.

  • Why is cost sensitivity important in architectural decisions?

    Every decision impacts costs, including software licensing, support, and operational expenses. Architects must balance these costs effectively.

Ver mais resumos de vídeos

Obtenha acesso instantâneo a resumos gratuitos de vídeos do YouTube com tecnologia de IA!
Legendas
en
Rolagem automática:
  • 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]
Etiquetas
  • Software Architecture
  • Software Architects
  • Software Design
  • Technical Leadership
  • Coding vs Architecting
  • Communication Skills