In Software, Progress is Better Than Perfection
One of the favorite parts of my job in Microsoft Azure is working every day with our users and customers. Our users are solving some of the toughest business and technical problems in the world, and seeing how architects and engineers are pushing their businesses forward is very enlightening.
However, sometimes I see users end up in a different kind of challenge - stagnating on which technology to use to solve a problem. This can often turn into a tail-spin, where concern for making the wrong choice prohibits delivering any value to the business or customer.
It’s an incredible time to be in software: open source technology means any developer can tap into the collective knowledge of their peers; frameworks seem to be sprouting left-and-right; and the cloud has put incredible compute capabilities a few keystrokes away. But this variety of choice and ever-changing landscape can leave many wondering if they are making the right choice in technology.
Should I be using Docker containers for everything? I’m used to building MVC web apps, does that mean my sites will pale in comparison to Angular 2 or React.js SPAs? Should I host this using a VM on IaaS, or will this fit in a PaaS offering? Should this be Azure Service Fabric, or Azure Serverless? BizTalk or Logic Apps? I think you get the idea.
These questions have merit – to a point. The problem comes when you spend so much time debating the right technology, you fail to deliver any value to the end-user. It’s the classic pitfall of analysis-paralysis. If there’s one thing I’ve seen time and time again, it’s that delivering something is better than delivering nothing. It’s ok to build on what you are most familiar with. It doesn’t really matter if you use a saw or an axe to chop down a tree, as long as the tree ends up on the ground at the end of the day.
Take time to learn new technologies - and have the courage to use an emerging technology when it seems to be the best fit. But don’t sacrifice delivering value for a desire to always use the ‘latest-and-greatest’ shiny thing.
Progress beats perfection - because at least you can ship progress.