2
Simon, while MVC forces you to think differently it is a new way of doing things and for good reason is the way of the future. You need to change your methods or be left behind. When working in a team it allows you to separate the different sections of code and have different programmers with different expertise work on their areas without affecting other stuff. With Xoops you can see its power with the use of a Templating system. The big difference between the current Xoops system and a true MVC is that Xoops still mixes the Model and Controller into the code where as with 2.6 there has been much progress in removing the View.
Unlike programming I am used to in the late 80's early 90's where you had to fit as much code into 16K of ram initially for a basic program, today's computers have much more space available. By separating out the code you are making maintenance on the program much easier and someone else reading the code much easier. Sure it will make more lines of code but this is not a bad thing. In this age of compilers and caching of code and such it doesn't matter. The compiler or cache engine will convert the code into a useable piece of code for its use. It won't care if you use MVP, Procedural, OOP or any combination.
And regardless of your view, "beautiful" Spaghetti code is still Spaghetti code that is hard to maintain and to understand. Another item that as programmers we hate to do is to document what we are doing or follow standards. These are inconvenient at the time and seem like more work. But in the end it saves you work on your debugging and later maintenance.
New programmers that have never had to worry about fitting their code into a small memory space are not likely to worry about such things but really, MVC is about maintainability, structural integrity, self documentation/simplifying of code and MVC code is generally much easier to reuse.
Another aspect of MVC code is that it allows the use of Unit testing. With Unit tests you can run code in the Model and the Controller without regard to how it will look and fully test the engine of your code and make sure it runs well. Any programmer that is worth their salt will embrace unit tests once they understand how they work and why they are a good thing. Again it seem like a waste but in the end things such as unit tests and MVC save LOTS of time during the Maintenance stage of a programs life cycle.
MVC is a very important progression in programming technology and if anything will likely be split out further with the addition of unit tests being standard. This and other new technologies such as "Agile development" and team based programming are the future and if you don't learn about them and embrace them you will be left behind as less experienced programmers and less talented will be able to program circles around you because they will have much more free time.
You have to get away from worrying about the length of code. There are also studies you can do about the complexity of code. There is a ratio that some development tools can do to determine how complex your code is. This can incorporate "creative" programming techniques that seem like a good idea at the time but can be difficult to figure out later. Just because you can combine everything into one line instead of 10 lines doesn't mean it is a good idea. Also as can be seen by module developers upgrading old PHP 4 based modules, spreading common code throughout your code base may seem like a good idea at the time but isolating it into classes and building an MVC type environment can actually make future upgrades much easier because all of the related code is in one place instead of spread out throughout the code.
When OOP came out there were some hardline programmers that said it was a fad. That procedural programming was the way to do things and OOP was stupid. It is more complex and harder to understand. But if we look today pretty much every language has moved to OOP and as much away from procedural as possible. There still exist languages such as PHP and some others that you can do both in but it is impossible for you to program in languages such as C# or Java without using OOP.