Developing for use, not functionality

A well known method for developing software is to aim for the need of the user, not the functionality that could be “nice to have”. A small part of my day job is participation in a development team making software for the construction industry. We often discuss what will be best for the user instead of designing technically “perfect” solutions. I try to bring this focus into my own side projects, even when developing small applications for myself – i.e. when i’m the only user.

When developing for yourself, having the user constantly present when developing the application, it should be very easy to make only valuable functionalities, perfectly fit for the intended use. Nevertheless, this is not the case. I constantly keep delving into minor technical details, forgetting the reason for making the function or refactoring. This results in me spending much of my development time doing stuff, that is not always that important. Basically a quite ineffective process.

As a developer, you have to dive into some of the technical details of your applications. For me, this is a great part of the pleasure of developing software. Getting into the details and knowing the nitty-gritty parts of the technology is where i’m in “flow”. This means i have a bias towards these details, and also makes it difficult to “keep on track”.

Improving workflow

For this reason, i’m currently working on improving my workflow when developing my own projects, so i keep on track, and make most of my development time relevant. This should help make the best use of my time, which is limited with a full time job + family. Hopefully, it will make those hours, where i’m working into the detailed stuff, be spent on subjects, that actually delivers valuable features in the end.

From an overall view, this means to reverse my typical development flow. Often i jump right into coding, reading previously written code or reading documentation on the technology i’m currently working on. This is even more true, when i’m in the middle of developing a feature, that takes several days to complete. Then it can be easy to “jump right in” where i left of last. This though, is where i forget the purpose and direction of my work. It has helped a lot using a kanban board like Trello, but this often only help keeping focus on the concrete function i’m working on, and not the details of what i’ve done, what i wanna do, and what logic should be developed and why.

The following posts will explore different methods for improving my process, making the user – my own needs – in the forefront of development, and make sure my limited time as developer is creating meaningful and valuable software tools.

Leave a comment