Thoughtful Software Architecture

Episode 2: Thoughtful Software Architecture

There is nothing more expensive and wasteful than sending thought-less software to production. In this episode, Andrew and I discuss why the underlying software architecture should never be overlooked. It is critical to your success in scaling and providing a great user experience.

HostsFahad Shoukat and Andrew Wolfe from Skiplist.

Outline

What is Software Architecture?

  • "Business enablement."

  • Kubernetes is open source software for running docker containers - this is enabling companies' missions to move forward.

  • Great software architecture bolsters the mission of an organization.

  • Architecture seniority: synthesizing more of the company systems internally as a the architect moves from junior to senior. How much fits in their head?

What is Software Design? (4:22)

4:22- Differentiating and defining

  • Architecture is what we're building and design is how we're building it.

  • Architecture is how things communicate together and work/look as a system.

  • Design is looking at each individual component and how it works tactically.

  • Nouns vs verbs.

Meaning of Thoughtful Architecture (5:31)

5:31- Depth around "thoughtful"

  • Building the most simple system as possible.

  • And one that other people can build on when the time comes.

  • Anticipating what product managers will ask the system to do, for instance, six months to six years from now.

  • Martin Fowler and his principles of software architecture, especially: abstract what changes.

  • What is going to change? What's dynamic? What's changed the most (from both product and engineering perspectives)?

  • Make conscious decisions about what kind of technical debt risk you're introducing to your system/company when altering archicture or adding paradigm-changing features.

Documentation of Systems (14:49)

14:49- Communicating to the future with documentation

  • Writing something down helps make things stick and it exposes flaws.

  • Has a huge impact on the risk profile of an architecture or system.

  • Why does the industry do this so poorly?

    • People don't value documentation

    • If they did, project execution, handoff, and maintenance would be much easier and less expensive.

  • A lack of craftsmanship really hurts the industry as a whole; causes bad code.

  • Simple over complex thinking.

Best Ways to Integrate for Achieving Thoughtful Software (20:35)

20:35- How do we put this all together?

  • Viewing vendors as partners.

  • We see our customers as our partners.

  • We leverage their domain experts and knowledge to collaborate for great results.

What about Cloud Services? (22:46)

22:46- How should we think about providers and components?

  • Amazon Web Services (AWS) is the most complete solution.

  • Azure and Google Cloud have different approaches.

    • They're prescriptive

    • They make hard tech more accessible.

    • Google's approach is very much developer-first.

    • Azure's emphasis is clearly on the enterprise and providing and tremendous experience.

  • Cost and network speed; Google is the best for sure.

  • Look at needs and pick wisely.