Most people don't need a tech savant. As that becomes more apparent as it becomes a game of legos putting blocks together rather than having to plastic cast mold every block yourself, I expect mean salary to drop.
Most people don't need a tech savant. As that becomes more apparent as it becomes a game of legos putting blocks together rather than having to plastic cast mold every block yourself, I expect mean salary to drop.
Look at services like FreshBooks and Basecamp. The engineering effort to implement comparable solutions used to be immense; now you can buy into online services for less than the price of lunch, with no long-term contracts.
Similarly, look at open source solutions like WordPress. An afternoon with a $5 hosting account and a few plugins will get a site that would have cost you $100K+ in 1998 feature-wise.
I'm also amazed at how often a few minutes searching for an app will get me something that fits the need perfectly - and costs less than $4.
The complexities of twiddling with memory have been replaced with the complexities of making a ton of different systems work together in a sane way.
Today you have to know STL, auto/smart/shared pointers, all kinds of right casts, you have to know boost (a huge code base) and on top of that you are expected to know C++0x (or how is it called?) with its lambdas, autos and stuff, while still understanding the whole "classic" C++.
(But at least nobody cares about MFC and ATL anyway)
And don't forget templates of templates of templates which crept into many code bases. And 64-bit (or ARM) is now reality which you should account for.
If anything, you have to know ten times more in C++ in 2012 compared to 2002.
About a decade ago I did a lot of MFC/C++.
Form what I see here in Australia one of the reason nobody cares about MFC and ATL is for the last 5 years C++ has been pretty much dead on the Windows platform.
Over here in Oz C# and .Net are the kings of the Windows platform.
C++0x is easy to learn. For example, autos is just the ability to say "auto myFloat = 5.0;" and it will default to float.
Lambdas in C++ is fairly easy. right casts? trivial [especially with auto].
Templates of templates of templates are easy as well.
64-bit? ARM? The whole point of C\C++ is to make yourself not assembly. You shouldn't worry about 64-bit vs 32-bit as long as you use proper things.
Modern C++ vs second iteration standard C++ in the wild west days when I was first learning about it is an entirely different affair.
I also contest having to know boost - I work in some KDE projects and boost is only a dependency on around 1 in 4 that I have found. Though qt in many ways becomes the surrogate stack to learn.
So some jobs will always pay well; the average salary should go down if the average skill need goes down however. (Ignoring for the moment that some lesser skilled development jobs actually pay better as a result of demand)
use CGI;
Maybe this isn't the case in the middle of the country where businesses don't realize that a 10x programmer is easily worth 2x the salary of a brand new programmer.
Ruby may be easier to pick up than C++ but the entire web stack still requires quite a lot of knowledge. Especially when you start talking about scaling databases, distributed systems, fault tolerant cloud architectures, etc.