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.

Show Notes

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 architecture 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.

Build Thoughtful Software
Fahad Shoukat
Written by

Fahad Shoukat

Fahad has a B.S. in Electrical Engineering and an MBA. He brings over 15+ years in Business Development, Strategy, Sales, Product, and Marketing in various industries such as software development and Internet of Things (IoT). His experiences have led him on an unwavering pursuit to meet thoughtful people and build thoughtful software.