Is your software development not going as smoothly as you would like?

Is your software development not going as smoothly as you would like?

The first thing that you need to do is to start benchmarking it. There are several ways to do that. Measure the number of defects in every release, the code quality (code analysis), the number of reported errors, or simply the number of tasks that you manage to finish in every release. It's important that you do not take any action or put any value on the metrics. They are just to establish a baseline, not to criticize the development.

Without metrics, it's impossible to measure improvements.

Next, you need to decide what kind of improvement you want to focus on. Code quality (implement suggestions made by code analysis tools) or product quality (focusing on the number of bugs experienced by users).

The former helps to increase the development pace in the long run while the latter helps to increase the development pace in the short run.

If you choose code analysis, always start focusing on issues regarding modularity (reduce coupling and increase cohesion). That prevents unrelated things to break when changing features. Next focus on reducing complexity and class and method sizes. That makes it easier to understand things (and things that you understand tend to break less).

If you need quicker results, focus on product quality. You can achieve that by doing two things:

1. Automate tests. Focus on higher-level tests (i.e. not unit tests) like UI tests or system tests. Make sure that the feature that you are building is fully covered (main flow and all things that the user can do wrong). Once done, these tests will also make sure that the feature does not break in the future (i.e. regression tests).

2. Automate error detection. If you find errors earlier, fewer users are affected by the errors.

Many companies focus on code analysis and use unit tests (low-level code tests). That works for new applications, but the investment cost is usually too high for applications that have lived a few years.

In applications that have lived a few years, it's much more cost-efficient to start with automatic tests and detect errors earlier. Once the number of errors has been reduced, also start to improve the code quality.

Remember. Measure each change that you make. Do not implement too many changes in one go. It's hard to measure the effect when implementing many changes at once and the dev team needs to ease into every change.