Email iconarrow-down-circleGroup 8Path 3arrow-rightGroup 4Combined Shapearrow-rightGroup 4Combined ShapeUntitled 2Untitled 2Path 3ozFill 166crosscupcake-icondribbble iconGroupPage 1GitHamburgerPage 1Page 1LinkedInOval 1Page 1Email iconphone iconPodcast ctaPodcast ctaPodcastpushpinblog icon copy 2 + Bitmap Copy 2Fill 1medal copy 3Group 7twitter icontwitter iconPage 1

Let’s start with a definition of refactoring in the world of software development, a concept practiced by others but formalised in Martin Fowler’s book ‘Refactoring: Improving the Design of Existing Code’: If you need help with software hire the best custom software developers. Code refactoring is the process of restructuring existing computer code – changing the factoring – without changing its external behaviour.

I’m not going to extol the virtues of software refactoring too much in this post because it’s been done by many better qualified people than myself. To summarise, improved code readability and reduced complexity which can improve source code maintainability are right up on the top of the list and are the basis for the fundamental cornerstone of good software development.

Can we apply similar principles to the user experience?

Well yes, we look for them here and we can adopt some of the principles of refactoring so as to contribute to maintainability and long term sustainability if we embrace the positive impact of making small, incremental improvements to the user experience without changing behaviour. I’ve emboldened the latter part because anything that changes the behaviour I would consider as a new story/feature.

How do we do that?

We start with a change of mindset by accepting we cannot possibly know everything about our product BEFORE we’ve put it in front of users. We embrace the idea that the product we’re creating is an experiment for learning and feeding what we’ve learnt into the evolution of the product. And we stop pretending we can predict the future with any certainty by rejecting huge upfront design activities.


Once your mind (and potentially that of your client) has been re-calibrated then you can adopt a different approach whereby a change to the user experience (or any other bit of the software) is not seen as a failure (to predict the future) but celebrated as a success (‘yay, we’ve learnt something’). Then you follow this up by establishing an approach that helps you learn and amend your design according to what you’ve learnt.


By identifying small areas where user experience can be improved, and making these improvements incrementally, we have a powerful accumulative impact on the digital products we create without taking huge risks. To achieve this we have to have a mindset and way of working that accepts we need to continually learn, adapt and the deliver incrementally. These are all huge steps toward creating better user experiences.