The best interiew process I ever went through was pretty much like this. Of course they first check the CV, then a regular interview, and when that went well, I got a programming assignment. Something very simple, but in a framework I wasn't familiar with. Had about a week to do it in my own time, could contact them with questions, and at the end, I presented my code to the devs, who asked questions. Afterwards, the devs vote by email.
I haven't heard of a better way to do it yet.