Rocky got a nice post about why software is hard. In general, I agree with what he says in general, but I don't accept his numbers. Applications are not 98% / 2% (data entry vs complex stuff), they are more likely 80% / 20% for the simple cases, and 70% / 30% for the complex ones.
And the problem is not in data entry type of applications. Those are solved by access, you can get them done in minutes. If all you want is to take data from the user and store it as is somewhere. The problem is that usually you don't want to do this. You want to do interesting things to the data. Here is a simple scenario, negative sums should be painted in reds, and if the total are over 1000, the row should be in all caps and blinking. This is the part where you no longer do just plain data entry / data views. You are actually applying business rules along the way. And they can be as simple as "You must be a customer to place an order" to something as complex as checking if a particular action (entring more data, for instance) is valid.
The problem is that you can't seperate those cleanly in most scenarios. And as the time pass, we want to be able to make the application smarter and smarter. The simple issue of limiting the options in a combo box based on a different options selected so far is a business logic that usually cannot be expressed easily using most models that I have seen.
I really liked this quote: