Modern Software Development

XP and TDD seem to have fallen out of fashion lately. They can work well but it does have some strong requirements.

The actual aim is to have a system that you can extend quickly, safely and reliably. It requires each change to add some value to a system without breaking things. Feature flags can be used to maintain existing functionality that is being replaced. You want to add value for the users with each change.

Careful ordering of changes can help. Show the user the data that will be automatically checked in a later stage.

The codebase needs to be sufficiently covered by unit tests that you trust. If this is not the case start with Working Effectively with Legacy Code.

You need a readinably fast build cycle. It won’t do if you can’t find out what is happening within a few seconds of writing that line of code.

You need a fast repeatable deployment system so that you can get a feature deployed to a staging environment within 15 mins.

You need decent logging of both staging and production. Boring info messages are a great way to detect things that did not happen.

Thunk about the analytics before you deploy to production. Ask your Product people what questions they want answered in the day after the launch. Its amazing how much info can be captured by analysis messages in the form (name, id, datetime).

For example:

Start process for xxx

Email sent for xxx

Stock updated for xxx

Product shipped for xxx

The above are each 1 line of code but together allow a range of analysis to be built later.

Use the logs and analytics to listen to the system for feedback.

Allow the developers to see the production logs. Without this they are cut off from the most valuable feedback.

Understand that a Minimum Viable Product is not finished as soon as it launched. This should be the starting point for a range of improvements. Your users are going to do things with and to the system that you did not expect. Some of these will provide the best feedback you ever see.

My current engineering manger reports seeing “sorry I don’t know my quote number” as an entered quote number on a mandatory field. That could lead to you offering alternatives.

Leave a comment