Maximizing flexibility and minimizing rework in software development

Photo by Ivan Bandura

I recently wrote about why future-proofing as we generally think of it isn’t possible, and why the next best thing we can work towards is flexible software. I followed up by writing about how companies can successfully build a culture that aligns everybody to the software planning and development process, which improves how forward-looking your software might be.

Now in this third post, I want to talk about real-world, practical strategies that can help minimize how much time and effort is spent reworking software. Since we can’t actually “future-proof” anything we can’t completely eliminate rework, but we can do a few things to minimize it.

It’s important to understand that many of these principles require some extra up-front work. Just as you wouldn’t consider building a house without taking time to plan it first, you shouldn’t approach your software development without taking time for similar efforts.

Continue reading “Maximizing flexibility and minimizing rework in software development”

We’re all in this together: shared responsibility and incentive alignment in software development

Coworkers collaborating in front of a computer
Image by Lagos Techie

At any business where software is built, strategic decision-makers need to have a basic competence with technology and understand the principles of software development. This knowledge and understanding must be used by all decision-makers as they take an active role in software planning and development, not just those who write the software.

Despite how important this approach is, many companies that develop software for internal use are accustomed to separating “INFORMATION TECHNOLOGY” and “THE BUSINESS”, to the detriment of the company.

Dissolving these barriers and helping everyone actively participate in the development process can be the single biggest competitive advantage most companies have available to them. Producing value with software is hard, so being one of the rare companies that can do it will put you way ahead.

Continue reading “We’re all in this together: shared responsibility and incentive alignment in software development”

Future-proofing your software

Image by Tomasz Frankowski

For those of you working in software development, especially enterprise software, how many times have you been told you need to “future-proof” what you are building?

Or perhaps you have been the one making the request to future-proof something? Maybe you have been frustrated by how often the team says “For that feature, it’s going to take us a sprint to go back and extend some APIs to support it”. Or maybe the team starts talking about the process to migrate a database, and how much effort needs to go into doing it correctly.

For those who are in the second group, here is a dirty little secret known well by those in the first group: there is no such thing as future-proofing your software.

Continue reading “Future-proofing your software”