I like to compare the software development process to a good Golf swing. Golf is a game of inches. Your swing makes the difference between a good story at the 19th hole or the walk of shame in the bushes on the 7th. Consistency and repeatability is everything in Golf, and it is everything in Software development. Developing muscle memory so that you know that every hit of the ball will be straight and long takes a lot of training, practice, and perseverance if it is to ever result in a low score. The same is true for developing software. So, let’s talk a bit about the Software Development process….and yes, the Golf analogy will be painfully used throughout.
Practice One Way
You need to have a plan. You need to know when you are able to release. What's the pass rate of your test cases? How many blocking issues do you have? Are you doing Agile Development or Waterfall? Do you care about metrics before you ship? These and many other questions are important, but you need to pick something and go with it. Use a process EVERY time in a consistent way. Don't just make stuff up as you go along. Have a plan. Know what you are doing.
Slow Down Your Swing
I know. You're in a rush and the software needs to get out the door…now, now, NOW. Who cares if it's Christmas tomorrow; customers need that update under the tree! Really? Is this really true? Probably not…but come hell or high water it's crunch time. No one can get away from the "Quality Triangle": Quality, Cost, or Speed: pick two. I believe slowing down may actually be a better choice in the end, despite what the bean counters say. A good process can be slower, but at least you know what direction you’re going and how to get there. Software Development should look effortless to an outside observer. Be an Ernie Els, not a Charles Barkley. Just sayin'.
Practice, Practice, Practice
Fancy talk for training. You're not going to get anywhere if your process is not used—and used by everyone—a lot. Have tools in place. Have workflows in place. Make people use them. Have dry runs for new hires…heck, have them for experienced people as well. Use this time to think things through. I know you're not going to follow #2 (or more accurately, you’ll be forced to ignore #2). Under the pressure of a release, all your practice and preparation will pay off. You'll just know what do to because you've built up the muscle memory by practicing the process.
Get Good Equipment
I once worked for a company that used Excel spreadsheets to track test results. Don't do this. You don't see Tiger Woods hitting the links with 14 bread sticks in his bag, so why on earth would you use a spreadsheet for tracking test results or bug reports. Get the right tools. Maybe—just maybe—the reason you don't hit the deadline all the time is because you have the wrong set of tools. Maybe the reason you're stuck in the office on Christmas Eve is because it takes a week to extract test results for the CEO's monthly report when it should take 5 minutes. There are 3rd party vendors out there creating ways to do it better than you. Tools. Get them. Your designers and testers will love you for it, and so will your nerves.
Develop a Routine
What's the cadence of your development cycle? Do you even have one or are you inconsistent with your releases? Can you visualize what happens in your organization the minute you have software requirements in your hand? This is about getting into a comfort zone when the development process starts. Much like your routine of arriving at the course, hitting some balls, and approaching the first tee, get a routine going so that everyone gets "in the zone" the moment the project starts.
If you're serious about Software Development, forget about meeting deadlines. I know…an absolutely shocking thing to say, but you're putting the cart before the horse if all you think about is a release date. Much like Golf, consistency is the key and without it you'll always find yourself slicing.