Software Release — Trust Your Gut
When looking for a Senior Level __________, often the industry is filled with people who have 5 years of experience and want to have that title. Or there are people with 15+ years experience, who should probably have that title. After interviewing them, either candidate, you might find that either of them could be qualified for that title, but a lot are not. So what makes the difference?
For me, it is “Trust Your Gut.” They have learned to trust their guts and do something about it. With in the context of Continuous Confidence, a huge principle is applied: Trust Your Gut!
So what do I mean? I mean, don’t release code that you don’t feel confident about. Take the time to become confident about it. Take the time to break work up, or add more testing or do something to make things feel better.
Often, when dealing with the Software Development Life Cycle, we provide a disservice to our employees and our customers. We attempt to map a process to our developers that is so rigid, that we expect them to follow it so as to become the most confident we can on paper. May I submit that slowness in releasing comes mainly because we don’t allow our people to use and develop their soft skills?
Time and time again, I have seen more and more shops under pressure trying to force developers to a time line. They practice Agile Software Development, which encourages sprints and estimates, then the product owner attempts to force a developer to abide by their estimates. Things get overly tense and people start working long hours. All the while, the Senior Engineers and others are feeling that something isn’t right, but are told, that doesn’t matter.
Do you want to release higher quality code with less bugs? Do you want to go faster and release more often and more features? Let your engineers practice their soft skills.
By now, the industry standard for code release, is this mythical unicorn called Continuous Integration. In some way, once “big enough”, companies are turning to practice Continuous Integration. However, there are mixed results. Too often, we take what another shop is doing and try to implement their processes into our environment. This fails to some degree, either partly or entirely.
So what can you do? Stop focussing on the outcome and start trusting your gut. Ask yourself: why am I not confident about our releases? Take principles from Continuous Integration and apply confidence to them.
Some shops don’t have automated tests. Ok. So start there. Some feel that their test suite is flakey in areas or doesn’t have enough coverage in certain areas to account for feeling confident to release. Ok. Start there.
Do not, for the love of all fluff animals in the hundred acre woods, do not try to get 100% code Coverage. You will never make it, and if you do, by some miracle, your confidence will not be any greater.
Test What You Change
The Confidence in a release is not upon the code previously written, but is upon the difference of the Code behaving the way it should. If you test, only what you change, then it is a lot easier to ascertain whether something will break or not.
What is contrary to that? REALLY BIG RELEASES!
Do you release multiple times a day, or do you release once a year? How many lines of code change over a year? In a modest shop, hundreds of thousands of lines. How many change in a story? A lot less, or at least they should be.
If we release more often, while testing our changes, in the right way, our confidence that we didn’t break things goes way up. Now we feel confident in releasing.
Continue asking, do you feel confident in releasing code now that all the tests are passing. Trust your gut. If it doesn’t feel right, ask, what do I need in order to feel confident? Automate that, and repeat. Slowly you find, over time, that your shop will start to come alive.
Trust your people. Trust yourself. Trust your guts!