First Principles for Software Development
This is an open invitation…or perhaps a challenge to the product development world to bridge the gaps between people, process and tools. I believe we do amazing work today but I also believe we can do more and do it better!
I worked as a tools consultant for a while and although not surprising, it was amazing how consistently our customers looked to tooling as a magic bullet (hint…it’s not, and some of the best implementations failed when the customer couldn’t understand that). Tools are not the answer in and of themselves. I do however believe, that if we are clear on how we want our teams to work and why, a good set of tools can make best practices self-evident and easier to follow!
The following foundational tenets are presented as a starting point for discussion. There is so much to read on these subjects but I’ve never found a collection that lays out exactly what the key areas are, provides a range of non-dogmatic views in each area, and ultimately leads to a clear actionable plan to put them in place (with tools!). And so I, like so many others, simply pieced it together bit by bit throughout my career and never really looked back and said “if only I knew then what I know now”. Until now…
My plan is to write a series of articles further breaking each of these down. Ultimately I want to show people how these values can be embodied in a way that makes them visible to the entire company so I’m building a demo instance that brings them to life.
Great tools will use minimal fields and the right automation/integration to streamline communication rather than replace it!
Right Thing, Right Time, Right Person
Great tools can be tailored to show the right data to the right person at the right time. Each team might have their own workflow but they also need a single view to quickly see where others need their help.
Feedback Loops That Scale
The number of lines of communication in a company increases exponentially with each additional person making it harder and harder to know what’s truly happening. Great tools will not only trace ideas from inception to delivery but also separate the signal from the noise. A developer’s comments are a foreign language to an executive.
When people can’t easily see the whole system and how their current work fits in, their only choice is to hand it off down the line. This results in work for the sake of work. Great tooling shows everyone the whole picture at all times and enables the right people to choose the right work.
Clearly Visible Priorities
Everyone is trying to get something done and when you can’t see your priorities within the broader context of everyone else’s priorities it is natural to advocate hard for what you need. When executives can’t see the entire system, this advocacy naturally increases total Work In Progress (WIP) which results in everything taking longer than it should. Great tooling makes these conflicts visible and guides healthy prioritization.
Roadmaps vs. Timelines
Roadmaps show where you are going and timelines are only viable when applied to the well-defined, executable pieces of work that help you get there. Great tooling has both roadmaps and timelines and does not merge the two concepts into one. They make it easy for everyone to see, and therefore to discuss what should be where.
Design Strategy & Execution
Design teams sit at the intersection of strategy and execution. During strategy, they turn ideas into pictures, bringing clarity and helping drive shared understanding. When ideas are selected for execution, they can further define exactly how that idea should be built. This attention to detail saves the dev teams from more expensive and time-consuming rework.
Business-led Product Mindset
The shift from waterfall to agile reflects a shift from assuming we already know how we will achieve the end result to a mindset that we will iterate and improve to get there.
As our teams continue to embrace agile though, the business never stopped asking “when”. Remember that their goals are ultimately our goals and dates may be needed.
The key is to be clear where we are able to give dates with a reasonable degree of confidence and to provide flexible options outside of that. As the business pivots in response to the market we can allow them to reprioritize those options as needed. It is then our responsibility to break down those top priorities as quickly as possible and give dates!
I hope you found these tenets to be a useful starting point. I look forward to sharing some detailed thoughts on each and invite you to reach out and talk to me about any of these ideas!