In engineering land, we continue to get better tools for building certain type of applications. Ruby on Rails has shown us the benefits of constrained thinking. A blog in 10 minutes! But Rails only excels at building one type of application, standard fare web apps, with loads of standard database-driven tables/forms.
It's very very hard to generalize programming. We have a long way to go still. Software gets the job done today, but often, it's not pretty and often fights against the user.