Picking the right architecture and sticking to it
Background threads, async communication and vaadin
Keeping business logic out of your UIs