One of the biggest challenges with the evolving complexity of software (and hardware) is how to effectively manage it.
I have been in IT for over 31 years and I have to agree that the complexity of software development has become a problem. Data handling in the .NET languages has become easier, but at the same time other programming chores have become far more complex with
additional layers of coding required to achieve the same results.
I believe that the KEEP IT SIMPLE formula should be applied to all software design. As an example, many years ago, I wrote a simplified interface for querying data on an IBM mini and the customer ended up writing over one hundred queries using this interface,
and with the standard interface they never even attempted to write one query. The problem was the initial learning curve. There appears to be a similar problem for programmers making the switch to the .NET languages. Microsoft might want to look at increasing
the simplification of the .NET languages by using the IDE to perform more hidden automated functions.