A: My background is in software development, I’ve been working in various roles for around 25 years now. I started off as a programmer and then moved into management and consulting. Before founding CodeFirst I was working as a consultant helping companies setup and improve the processes of their development teams. It was a natural progression to expand the services I could offer as an individual consultant into a full fledged company so together with some long standing colleagues I founded CodeFirst.

Q: What do you consider the best approach to a new software project?

A: I think start small. Use mocks, prototypes and the minimal viable product approach. It’s a lot easier and cheaper to make changes at this stage than to a half built system later on. Involve all the stakeholders in the project as early as possible and get their feedback on the prototypes. Use an agile approach for the project development where possible. Continuous delivery is great for forming a feedback loop with stakeholders and end users. At CodeFirst we release a new build every week. It really helps to reduce rework and time lost with any incorrect assumptions.

Q: Graham, why is it so important to stay on top of technical debt in software development?

A: Given how quickly technology changes it is often surprising how long the lifecycle of a software system is. Some systems are still in use decades after the initial delivery. Even some ‘temporary’ software solutions thrown together can end up in production use as a critical business system for many years. Business requirements are constantly changing so these systems are constantly being changed and added to. Technical debt on longer ongoing projects can be a killer. Ongoing development heaping feature on top of feature without refactoring eventually creates an unmanageable code base. This then leads to a complete rewrite. By staying on top of technical debt this can be avoided. Allocating a percentage of the software maintenance budget to refactoring and code hygiene can save big in the long term. It avoids the need for a costly rewrite and makes it easier for developers to make future changes so they are more productive.

Q: Do you have any tips for managing developers?

A: It is important to hire the right developers. Generally I think it works out cheaper to employ the best developers possible. I’ve seen development teams with a large number of only junior level developers. The results were not good! Its not a problem to have junior developers on a team but there must be experienced high-level developers on the team as well to provide guidance on process and architecture. I would say a single rock star developer in top 1% is worth at least five junior inexperienced developers. He doesn’t get paid 5x the salary so he is a bargain!

Good developers don’t need to be micromanaged and a team should be left to self-organize. Forget time management and concentrate on deliverables. At CodeFirst we all agree at the start of each week what will be delivered that week. Everyone in the team knows what others are working on and we estimate all tasks as a group. At the end of each week we review as a group and discuss any issues or improvements we can make for the next week.

A: Our clients vary from large multi-nationals to smaller businesses. We don’t specialize in any particular industry although currently a lot of our projects seem to be in either healthcare or logistics for some reason!