Interesting enough we are looking first at how the things are looking and after that how they are working. But, and there is a but; if the functionality is not alight with the design we will not buy, use, recommend that product. At least I will not do it.

I am looking now at a lot of ideas of the new development. (UI rules)

But first a little bit of history when it comes to software.

In the past we had a list of functionalities, understand them in the development team, create a Data Base, make an abstraction layer, create your MVC and then your data is displayed and used. After a while the design arrived and you rewritten your code in controller and in view. And, the a new UI was presented to the real users.

Now there is the other trend, have all the UI, then create your UI and Controller based on a mock and in the end create your backend and do the links.

I tried both and I work with both approaches, but there is a third approach that I really like and work with it for more then an year.

Have a vision, and make the base functions that you want to achieve. Create a list of scribbles and agree with a workflow. Then start creating your architecture and define your main component as flexible as possible and then iterate.

I truly believe that the iteration is the key. We add functionality to our product and improve it with evert iteration. Make it better and better and simpler and simpler with every step. Getting feedback is crucial and delivering it with little functionality, but perfect functionality I think is the key.

And back to the new ideas that UI rules the architecture and the development. I am not really convinces about it. You can build a beautiful car, but if the engine will not fit in it, then your beautiful car is useless. And, the other way around. You can have an incredible engine, but if you do not have a designer to make it shine, the incredible engine will not be a star.

I do believe in “team work” not in split work, the engineers need to work with the designers and with the business people to make sure everything works at every step. We can challenge our ideas in every iteration and make them alive after at the end of it.

Maybe in a small to medium mobile app the UI first can work, to have UI and then backend without a clear collaboration but, when it comes to a real enterprise application the things are working differently.