Sorry, I was responding to the next post down, which said, "Lie and then learn the language before you get found out."
You are really right, you have to pick the right domain in which to become an expert. But you can use some good tools to pick the domain: how many jobs are there with that domain (the more the better), what is average salary for domain experts, and so on. Even if you are not in a good bargaining position with your current boss, you will be with the next.
The next thing is, you need to prove your expertise, and this is where blogging / screen-casting comes in. To the maximum extent permissible by your company, you have to 'give your knowledge away' through blogging etc. This then proves without a doubt your expertise. It is a new world. Those who give away their knowledge win.
I have, I think, a good nose for what a good domain is, and which domains 'stink'. You have to develop your own nose.
No, I didn't lie. I made no statement about my JavaScript skills before getting the job. I did make statements about being able to do the job in JavaScript. I knew about the performance gains in the V8 / Chakra JavaScript engines, and I knew that even though I would need to write some somewhat complex code, the JavaScript engines could handle it.
I got the contract for three reasons. First, I am a domain expert in a pretty technical area. I know about software development, and I am also an expert in another field. That is another story, see below. Second, through long, painful practice, I have become a good writer / speaker / screen-caster. I can present well. In the process of applying for the job, I recorded several screen-casts that explained exactly how I would go about solving the problem. Those screen-casts were sent from person to person until the entire hiring team knew that I was the right person for the job. Third, I didn't have any questions about whether I could perform. I was confident of being able to pull it off, and in fact, I certainly did do so.
About being a domain expert - while at MS, I was a 'heat seeking missile'. I would only work on hot projects, and in each project I worked on, I learned more than almost anyone else on the team about how best to work with the technology. I had one manager who wanted me to work on a 'dog' project, and I just would not do it; I switched jobs to another group that had a project I believed in. Being a domain expert, in my opinion, is the highest ROI that a developer can make. Don't just be a code jockey. Be a code jockey and an accounting expert, or be a code jockey and a construction estimation expert, or be a code jockey and a compiler expert. This is how you pull off the 'feat of getting a job writing a large JavaScript program without any JavaScript experience.'
When you are working at a company, the idea is to make your best effort to be the deepest domain expert in that particular field in the entire company. If you are in accounting, read every available relevant book on accounting. If you are at a company writing software to do computational fluid dynamics, then really understand the math, the available theories about best practices, and so on.
Glad you like the rant
What I was responding to was the statement "If you think there's a glut of contract IT workers now, just wait.", and what I'm saying is that there is no glut. There *never* has been a glut of competent people. The summary basically says, oh no, some baby boomers are going to retire and work less and be contractors, and that if you think that the current glut (that is causing you to not have work) is bad, just you wait, because it is going to get worse to the tune of 10,000 workers retiring (and maybe becoming contractors, gasp) every day. WTF, who cares, be an employee, be a contractor, whatever, get whatever you can make the market pay, and don't whine about it. If you want more, do something about it. With regards to expectation of high wage, damn right, I expect. If someone wants me, they have to pay. If they want cheaper, I'll be happy to recommend some more junior developer. If someone else doesn't expect a high wage or benefits, and that is all they feel they are worth (retired or not), then that is probably what they are worth.
Regarding the tension between full-time employees vs. contract workers, the market will straighten this out. Adam Smith had it right. When I left (level 63), total salary plus benefits was $150k. Now I bill at a rate that is quite a bit higher per hour, even including benefits. Some people will opt for the security of having a blue badge, and consider that it is not worth the effort to be a consultant. I left behind a number of non-vested stock grants, and have since more than made up for that lost ground via higher billing.
Personally, I have a different problem. I *can't afford* to be a full-time employee. There are not many jobs that have a salary at > $200k (see the various salary surveys), and I can't afford to take a pay cut in order to be an employee. If you are going to stay at MS, even though MS pays 'better' than many other companies, it still takes a *huge* effing effort to get to >= $200k + benefits. As an aside, one of my friends (at GM level) has been at MS for maybe 20 years, and is finally at $350k, and when out drinking one night, he said that the amount of pain he went through to get to his level was so not worth it. Being a contractor is just an easier, happier life.
First of all, there is no glut right now of competent IT workers. I have lots of buddies (most elderly, so to speak, I'm 52) who have absolutely no shortage of work. I don't see it. I am a contract worker now - bill at a greater rate than I ever have in my life, and have more work than I know what to do with. I turn down 2 out of 3 contracts. I think that people who are not getting IT work need to hone their skills until they have jobs/contracts forced onto them.
I used to work at Microsoft - I never even *came close* to being stack ranked out. I am not saying that no one was ever incorrectly ranked at the bottom, but I never saw it. The people I saw at the bottom end of the stack rank - I could see the point that the managers were making. One dude was competent, but spent *way* too much time goofing off. And while Microsoft is mostly filled with competent people, make no doubt about it, there are plenty of semi-competent people there. There needs to be a system to get rid of the dead weight.
Now granted, I am not lazy. I am versed in OO and functional programming. I have developed many large projects in JavaScript, as well as C#. I have written books, written over 1000 blog posts, recorded over 150 screen-casts, and etc. I took a job writing a large system in JavaScript without knowing the language, then taught myself the language, including the functional programming / lamda / closure aspects in 3 weeks. I was 50 at the time. So don't whine about being old and not having the skills. If you don't have them, then get them. If you have them, then you probably have work. And if you have the skilz and don't have work, then blog / screen-cast, and you will have work in short order.
Successful and fortunate crime is called virtue. - Seneca