Many of you may find the following situation familiar:
UX Designer: Could you improve this view so that when you make a selection here both of these charts are updated?
Software Developer: Hmm… No, I can’t.
UX Designer: Could you make change X (which looks like it would be pretty straightforward) that would improve the UX of this view enormously?
Software Developer: That’s completely impossible because we didn’t design our framework to acommodate that use case. I could do it but we would need to make a major re-architecture and re-design of our application that would affect all these other views. There are also these 300 things with higher priority right now.
Well, I know I do. Particularly on the developer side of things.
Something, some change, some improved interaction that is perceived as simple and easy like changing the location of a button ends up being technically infeasible or too costly. Software development is an art/science of trade-offs where a combination of requirements lead to decisions that optimize an application for certain types of changes and make other types of changes impossible or too costly. Sometimes we design ourselves into a corner.
I know that perceived as easy is not a very specific description but changing the location or a button, or the position of a form, shouldn’t require an application re-architecture. When we design systems that are so inadecuate or resistant to handle change we have failed.
So, I started this new project where I worked both as a UX designer and Software Developer.
I had the situation above very present as I had often discussed it with a UX designer friend. My intention was to apply a lot of Lean UX principles and techniques to our project and design a system that was very flexible. A system that would allow use to continuously learn about our users and apply whatever we learnt to make our application better. A system where User Experience would be a driver and not an afterthough.