One of the challenges with software development is that non-technical people in organizations are the ones who solicit software projects. Business leaders, particularly those in marketing positions, demand software and also demand that the new software is not released until it is "done." However, name one person who actually believes that software reaches a done state where zero updates and upgrades are needed.
Go ahead, I'll wait.
Software is never done, it is only done "for now." Unfortunately, these marketers fear placing an unfinished product in the hands of consumers. I always hear, "If the software is not done then we're going to lose ground with our customers," or, "We can't launch an unfinished product because our customers are going to kills us." Well, the reality is that the customers are killing you for not having the software to begin with. Where does this mentality about needing a done product come from? I blame business schools and their MBA programs.
Business schools never discuss Information Technology (IT) solutions unless the business degree is focused on managing IT organizations. These schools indoctrinate students into thinking that products have only two states: (1) in development; (2) done. However, even physical products go through iterations. How many versions of the iPhone has Apple launched? How many Android phones has Samsung launched? Even soda manufacturers like Dr. Pepper and Coke dream up new ways to get their products in the hands of consumers. They reinvent the packaging, they dream up new volume sizes, and they test new flavors in the only arena that's meaningful--the marketplace.
I understand the criticism. Marketers tell me that they can go to a car dealership and buy a finished product. "The car is built and it functions." My reply is always the same, we're not building a car, we're building software.
I know, I know. It's an analogy. Well, the only reason for an analogy, in a business context, is to score points and win a political battle. The marketer's goal with this analogy is to get IT to commit to getting 100% of known requirements developed before ever launching the software.
So people always ask me, "Well then, what should we expect from software development?"
Well, let me give you this little analogy (and my intention is not to win a battle....well maybe just a little). It's simple. Software development is not like building a car, it's like creating a television show.
Television networks dream up an idea for a new TV show. They get some writers together and the writers pitch a pilot. That pilot is filmed and it's tested in the marketplace. The network gathers feedback and they either continue making episodes or they don't. Based on the feedback from the pilot the producers may change things. They may bring in new writers, change actors, increase or decrease production costs, etc. Pilot episodes are rarely good, but they are (hopefully) filled with potential. Compare the pilot episode of Friends to the final episode. Assuming you're a fan of Friends, you can see just how great the last episode, or even the last season of the show is compared to the first. Why? Because the writers have matured. The actors have developed relationships with one another. Numerous stories have been told and those stories linger over the actors in the minds of the viewers. The dialog is more refined, and the actors, after having years of developing their characters, deliver even the weakest lines with such flair and emotion. Even the production crew has improved the sets, the lighting, and their filming technique. The quality of the last episodes of a hit show like Friends could never be achieved in the first season.
Should television networks develop a new TV show, film 10 seasons of episodes, and release all 10 seasons at once? No executive worth her salt would accept such massive financial risk.
There's also another thing that happens during the life cycle of a TV series. The producers constantly gather feedback from the fans and they make minor adjustments to keep them engaged and loyal. The television networks know something your average marketer doesn't: the marketplace is the best indicator of success. Marketers need to accept that there's never "good and done" but only "good enough." Who cares if a button is too wide on screen? Release what you have and fix the button as soon as you can. Your customers will likely not even notice. If they do notice, you are now in a position to have a conversation with your customers. You can talk about your products. Your perceived negative position can be turned into a positive which allows you to foster an ongoing dialog with your customers.
This is why we do Agile Scrum. In Scrum, the customer is always at the center in everything we do. A good product owner and Scrum team are always challenging decisions to ensure every action provides value to the end user. Short sprint cycles allow us to release software and quickly make changes. We make changes because we gather valuable market research on what is actually in the market place. If we know we're releasing something that isn't quite right we can put a change in the backlog and give it a high priority. At most, that thing that isn't quite right will be in production for 2 to 3 weeks.
There's one other little unknown secret when it comes to innovation. Innovative products do not return ROI until well after they are released. If you're aiming for perfection at launch, you will never achieve it. Why? Because you don't know what perfection is, at best you can only guess because the market has not told you what they think is perfect. And the market is where the dollars exist. The market will always surprise you with what they find valuable. So stop trying to guess at perfection. Release your software and keep improving it.