Wow!!!
I started this newsletter around random SaaS thoughts that I have been having after encouragement from several different people, forces, and inspiration. Imagine my surprise, last week, when I realized that issue number 10 would be put to bed on my birthday 10-10. My first name is Jim and J is the 10th letter of the alphabet. Not sure what all that means, but I’m certain the universe is trying to tell me something, what it is I am not sure.
Thanksgiving Feast
In a few months those of us in the USA will be celebrating Thanksgiving and gathering for possibly the first time with our extended families since the pandemic began. One of my favorite stories around Thanksgiving goes like this. A friend of mine was asking her mom how to cook Thanksgiving Ham. The mother said the first step was to cut off the ends before it was placed into the pan and put in the oven. She made it seem like the most important step. The daughter asked why cutting off the ends was so important and what purpose did it serve. After several calls to various aunts, uncles, and many others, someone finally thought to call the grandmother who was getting on in years and was now living in assisted living. When they finally got a hold of her, she told them that she cut the ends off so the ham would fit in her pan. The moral of the story is to examine why you do the things you do. Is it because that’s the way they’ve always been done or is it because it’s really necessary?
Multiple Environments, Development, Staging, Pre-Production, and Production, Oh My
I get this one might be sacrilege to some, but if you have a small enough team, and are moving fast enough using just one environment is all you need. Ensuring that your teams are not bogged down with many environments (development, integration, pre-production, and production) to ensure the software they are delivering is free of bugs is usually a false economy. I’ve never seen an organization that can move from one of the lower-order environments (Development, Integration, etc) to Production without something going sideways.
When doing these updates, the trick is always in the balance of delivering new features, against breaking things that are already shipped.s. With adequate testing, robust microservice architecture, and well-defined and validated interconnectedness, you should be able to move fast with just a production environment when you start. With the right use of feature hiding to mask the work you are doing right now, you should be able to move fast with just one environment and save your teams from the drag of having to push software through many different environments. Getting the hang of architecting and delivering your system this way will allow you to go as fast as possible, while also maintaining quality for the features you eventually release to your end users. In other words, that ham will be cooked just right without having to cut off the ends.
T-Shirt like sizing around Small, Medium, and Large vs Hours for Feature Scoping
I have been around countless projects where people will spend hours debating the number of hours features will take to implement. In far too many cases, which is another article for the future, we have no idea how long some new capability will take. Rather than spending a ton of time thinking about the hours to completion, how about just coding it against the metrics of small, medium, or large? This gives us the opportunity to decide if the opportunity cost of working on that thing is worthwhile when measured against the return on investment expected for the creation and delivery of the feature. It is so easy to spend hours or even weeks creating something that will never return the cost of creating it in the first place.
1 Tip:
Really think about why you are doing something and decide if it is adding or subtracting value from your processes.
Use the simplest scoping methods possible to decide how long something will take.
Thank You
Jim ‘The Designatic’ Tyrrell
Having only one environment is an interesting proposal. But from my point of view it requires at least:
1. All the necessary stuff for testing locally or using any box environment.
2. One established git model for managing the different features in progress. One environment does not mean only one git branch. Having a dev, qa and production branch is still necessary.
3. Regarding database depending on the type of component having a qa database could be useful.