The Value is in the UI

Posted 1 month ago | Originally written on 30 May 2020

I've just been watching an interesting YouTube video in which a guy solves a sudoku puzzles starting off with very little. It's quite an interesting watch because you're given a front-row seat into observing someone making a discovery of something quite magical. I've always been fascinated with sudoku not least because I have a proclivity towards numbers though I've never devoted the time I would have liked to solve the fiendish kind. For these it helps to take your time and have pen and paper at the ready so as to write down ambiguous cases where cells can take no multiple values then pursue this as far as is needed to discover the solution.

What I found intruiging was that the guy in the video was using some very handy software which allowed him to make notes of any ambiguous cells as well as (and this was awesome) highlight cells with different colours. So one can easily use a colour to refer to a certain number (e.g. red for 3 etc.). This transforms the problem space to be so straightforward to work with so that the solver can concentrate on the solution and leave out the technicalitiies. I don't imagine that the software was very difficult to write. But what does it matter? Quite often the need for development sophistication leads developers off the path towards something that is not quite fit for purpose.

Which brings me to the point of this article: it's all about the UI. That's where the value lies. If you can build an application, however faithful to development standards it is in the backend, you MUST pay special attention to the frontend. After all, the user will never see the backend - that's for your to abstract away into the use you present. Of course, if your backend has poor performance then that becomes a frontend issue. But what I'm basically hammering on about is that if you had a strict time budget you should devote the majority of it on the front end; you can always refactor the backend to improve the developer experience (DX) but once you present it to your user then you really want it to receive instant acceptance.