One of the most powerful tools we have as developers is retrospection. That might seem obvious, but I can’t stress it enough. And not just learning from mistakes. I’m talking about expanding your knowledge based on new techniques, technologies, and projects you have the opportunity to encounter.
An iterative approach to software development enables continuous retrospection. In small doses, you can take what you’ve learned about the product or solution that you’re developing, and implement feedback or refactor. It’s an evolutionary approach towards creation. A way of learning from an action and improving on it in future endeavours. Something Pete McBreen wrote in Software Craftsmanship: The New Imperative encapsulates this idea,
“Through a very rapid crash-and-fix cycle the team managed to make the Gossamer Condor light enough to fly yet strong enough not to break while flying.”
It’s through these rapid iterations that us developers get to be most effective: responding to change, reacting to feedback, and steadily adding value. That’s how we gauge when Codevate is being successful in its ventures. Are we able to respond rapidly to change, can we quickly implement feedback, and is the product steadily gaining value?
By continuously reviewing and evaluating our work techniques and processes we can ensure that we’re working to the best of our ability. But this doesn’t just apply to developers. As a start-up, Codevate uses these techniques wherever it can. We’re continuously improving our techniques, and delivering excellent solutions with our clients.
To be clear, these ideas aren’t unique to how Codevate conducts itself. They’re present in Agile and Lean methodologies, and extended by the Software Craftsmanship manifesto. Although the Software Craftsmanship metaphor is what best describes how Codevate approaches software development, Agile and Lean methodologies are more applicable in the business paradigm.
For example, as a start-up business it is crucial that we make the right decisions. Even smaller decisions made early on can have a significant impact as time goes by. That said, it’s tricky to get things right first time, every time. This is where an iterative approach empowers us; through ongoing evaluation we can ensure that we’ve made the right decisions - whether it’s decisions about which technologies to use for a particular project, or which CRM we’ve decided to use.
An iterative approach provides the opportunity to reflect more often, affording us the flexibility to pivot when the need for change arises, and enabling us to steadily add value by building a product from the ground up. This can be extremely useful for software development, where there are usually a number of unknown factors, such as the best way to approach scalability, or the right technologies to use. This is why we’re always keen to approach a project using Agile/Lean methodologies, they give us the tools we need to deliver quality solutions every time.