It depends on what your needs are. If you are building a simple application, then MVVM/MVC are overkill. However, if you are building a complex mission-critical application then good design/abstraction is absolutely important...for testing, maintenance, and scalability reasons. Often, this involves the very frameworks/patterns that you dislike. My current company processes several thousand foreclosures and evictions per day. Bugs are simply not an option, as any mistake on a foreclosure and/or eviction can be costly. Unit tests are mandatory. The only proper way to fully test an application through unit tests is abstraction.
Keep Up with TechRepublic