This editorial was originally published on Feb 18, 2013. It is being re-run as Steve is out of the office.
It's said that amateurs practice until they can get something right. Professionals practice until they don't get something wrong. That's the idea, and while professionals make mistakes, they make far fewer than those that don't approach their craft as a professional task.
Many of us in the data industry develop software in some way. Whether we write queries in T-SQL or build projects in .NET, we produce code to accomplish some task. I'd like to think that many of us improve our skills over time, preferably by practicing new techniques and learning from our mistakes. I know some people stick with the tried and true methods without gaining skill over time, which not only hurts one's career, but also doesn't give an employer a reason to value their work.
However the deployment of software, which encompasses more than the developer(s), doesn't improve in many cases. Deployment includes operational people's skills, scheduling dowtime with clients, possible even the briefing of support personel. However the whole process is often performed poorly. Deployments fail, or require more time than expected. People view them as a pain, and software deployment tends to happen less often than it could, resulting in a large software inventory.
There's a great quote from James Moore on how we can deploy software better: "...deployments are hard, but rather than long-winded planning, they need constant practice, testing and refining, and we could only do this by deploying early." Red Gate Software has learned that deploying more often results in the company gaining skill in deploying software, resulting in more successful software changes in applications.
The improvement you make in your software can bring tremendous value to your clients, but only if they can use those features in the software. Learning to push those changes out in a repeatable, professional manner is a great way to ensure your clients and customers trust you to deliver new features and enhancements that meet their needs.