When I was studying, every time I started doing a programming exercise, I almost always started with the interface and everyone made fun of me (including myself). I knew it was wrong but I was just having fun because that's the way (uhu, uhu) I like it!
But what if it wasn't wrong? What if it was just another way of thinking and what if it was a better one?
If we start doing the architecture and then program the logic, our natural laziness will accommodate the interface to the system. If we do it the other way round, the system will accommodate our well thought interface.
Even when it's a kind of application in which the usability is not as important as the system's performance, making the system accommodate to the interface doesn't mean it's going to get slow and buggy, and in any case, the system should be optimized so that the user doesn't have to wait more than the absolutely necessary.
In the end, the user will only see the interface, and it doesn’t really matter how the system is implemented as long as it works the way it should and the user has a good response to his interaction.
Of course both ways have advantages and disadvantages and it all depends on the purpose of the application but I believe we should, if not start with the interface, at least have different people creating the interface and the system in order not to make the mistake of designing an interface that reflects the inner system.