I’ve worked in software development for a few years. I once was responsible for Software Configuration Management for a system where, after auditing the requirements and code, performing the builds, and developing the installer, I actually burned the software onto CDs for delivery.
Today, many of our systems are in the Web or the Cloud, accessed through our browser. We rarely install software from a CD or DVD drive anymore; in fact, many of our systems don’t even have a DVD drive! As a result, the way we think about delivering software has completely transformed. Today’s paradigm is Continuous Integration (CI) and Continuous Delivery (CD), in which software can be immediately tested, confirmed, and even delivered as soon as a developer completes it.
This new mindset causes us to wonder: if new capabilities can be delivered continuously, as soon as they are ready, is the software ever truly done? Should we even think about “done” as a goal to reach for?
From a client’s point of view, I assume that yes, they want to know what “done” is, how much it costs to get to “done,” and when “done” is expected to happen. None of this is unreasonable, but it is informed by the old software paradigm rather than the new one. After all, we know that the requirements for “done” are often obsolete as soon as they are approved, and change will occur during implementation, causing “done” to be late, over budget, or worst of all, not what our client needs.
At Web Teks, we embrace the continuous model for software development, rather than the “done” delivery model. This allows us to embrace change rather than defending against it, collaborating with our clients to understand what the change means and how we will approach it. We continuously discuss a roadmap for their software, including not only enhancements suggested by users, developers, and other stakeholders, but also maintenance of the solution to minimize the accumulation of technical debt.
Does this mean that we don’t have deadlines and budgets, that there is never any sort of “done”? Of course not! We simply measure “done” at a more granular level. “Done” can apply to a new feature or to the fix for a single bug. Budget, timeline, and scope are taken together to set expectations, and we discuss these with our clients at least once a week.
When will your software be finished? We are happiest when the answer is “never.” Our goal is to partner with our clients to continue improving their software systems, embracing change as an opportunity for improvement and guiding technology decisions both tactically and strategically. We are inspired when our clients take our advice and excited when our clients are engaged in the process of planning and improving their systems.
Contact us today if you need to chat about your tech stack, website, apps, drone tech, digital transformation, or just need some tech guidance in your business!