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.
What is Software Architecture?
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.
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 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.