A Software Architect’s role is to contain complexity and an Engineer’s role is to manage optionality, but what is a Product Owner’s role? To perform at your best you must understand your value creation responsibilities. In this episode we’ll explore the primary responsibilities of key roles in software development, the three crucial values that provide significant boosts in morale and productivity, the meaning of technical empathy, foundational principles of leadership and more.
On today’s episode I am joined by Jeff Doolittle, a Software Architect who has designed software systems for over 25 years. Jeff is a transformational leader providing developer leadership and mentorship to software professionals. He holds an undergraduate degree in Business Administration, and a Master of Arts in Transformational Leadership. As co-founder and CTO first of a boutique software consultancy, then as CTO in a SaaS start-up serving the Agriculture industry, he has gained deep and broad industry experience. In his free time he plays guitar and spends time with his family. Jeff’s ongoing mission is to channel his expertise, experience and energy toward his driving passion: to help make good software professionals great!
Connect with Jeff
Show Notes and useful resources:
- The Software Crisis - Edward Dijkstra
- Conway’s Law: Organizations design systems that mirror their own communication structure
- Software Fundamentals: Collected Papers by David L. Parnas - including the topic of Information Hiding
- Righting Software - Juval Löwy
- John Ousterthout - A Philosophy of Software Design
- Software Engineering Radio Podcast
- Thinking in systems by Donella H. Meadows
- Jeff’s Tao of Software Architecture: An Introduction Article
- Jeff’s Software Leadership Distilled Article
- Jeff’ Leadership Style Matrix Article - Discussing Authoritarian, Familial, Managerial, and Transformational leadership styles through the lens of Empowerment and Clarity
- Mermaid.js, GraphVis, PlantUML - Tools to build documentation
- As a product owner you should ask yourself these questions: How do I operate outwardly? How do I operate inwardly? You must encapsulate the team so that the signal to noise ratio maximizes the productivity and efficacy of the team.
- Engineering managers shield the engineering team from the noise of business, they manage the business expectations
- A Software Architect’s job is to manage complexity in technology and manage noise in tooling, design and tech.
- Document architecture decisions using an “ADR” - Architecture Decision Record and commit directly to source code
- Create “value streams” that make it easier to create the next incremental unit of value than it was to create the previous one
- Features are compositions of capabilities that emerge from the composition of those capabilities
Building something cool or solving interesting problems? Want to be on this show? Send me an email at firstname.lastname@example.org
Podcast produced by Unfiltered Build - dream.design.develop.