Ok another word...
Ok another word...
I won't bother speculating why C++ became dominant (any more than I feel like rehashing VHS vs BetaMax), but I will say this: any language that needs a series of books explaining how NOT to use the language (lest you create obscure bugs) is an inherently flawed language.
With assembly there's an excuse - you have no boundaries (no pun intended). You realize you're operating on bare metal, or at least one step above it. But with C++ you have this belief that you have the illusion of power and safety, but the reality is you have a jumble of constructs and tools that can easily be used wrong (and often are by novices and intermediate developers).
I daresay you could teach an intermediate coder how to do OO in straight C and get better results than if they were trying to use C++.
And yeah, I'm in the camp of "Obj-C is better than C++". But then, I like Ruby, Lisp, Clojure, and Scala too. C++ really needs to die. Any further energy spent on C++ needs instead to be put into JVM and other abstraction technologies.
"Most employers do annual pay adjustments", you say...
The companies never really figure out what's going on. Your lead or immediate project manager may have a clue, but their management (all the way to the top) just doesn't get it.
Ironically, the argument for the huge CEO bonuses, even during the bailouts, was that "we have to pay this much to retain our 'talent'" (talent being the executives who brought the disasters upon these companies).
Face it. US styled (quarterly earnings per share centric) capitalism simply doesn't work long term.
I guess that means the US won't be in any hurry to leave now.
Get the kid off the computer and out in the real world.
Sign him up for martial arts, an indoor climbing club (even non-athletic people can do this), take him hiking.
It's easy, at any point in one's life, to sit down and focus on learning something technical (even though you do have to start very simple). However, it's much harder to become active and social later in life without starting early.
You think finding a job is hard now, when you have no experience. It can be as hard or harder once you DO have experience. Before I drone on about why it's hard to get a job with experience, here's my solution to both: Human Networking.
It's really surprisingly simple. The more people you talk to and get to know...
- the more people who may tell you when a position becomes (or is about to become) available
- the more people you can "seek advice" from about getting a job (thereby making them aware of your availability, skills, and interests)
- the more you can name-drop, or at least make reference to first hand
- the more you can hear and learn about what companies are like to work for, and whether you would really want to work there or not
I'm sure there are other benefits, but the first two listed are probably the most valuable.
So how do you meet these people? In the old days, pre-internet, people tended to congregate in different groups or clubs (Toastmasters being one of the popular ones). Now we have Meetup, which might have some active groups you can visit and get in with. There are also community groups, such as those focused on bringing and operating business within a community, volunteer groups, etc.
You can't really discount groups as not being applicable or beneficial until you get in and get to know people. Everyone knows someone, and people, in person, tend to be happy and willing to direct and guide others. So the guy you're volunteering with at Habitat for Humanity may have some great contacts in your field. At the very least he may have a contact that he knows has lots of tech contacts; and you're +1 already because you know this guy, and because you're doing meaningful volunteer work.
Lastly, seeing the internet as the primary tool for getting a job is a huge mistake. The internet, where jobs are concerned (and some other things), is a cesspool. Multiple posts for the same job, multiple "staffing firms" trying to fill the same spot (and using recruiters who previously were just somewhat non-technical, but now who are imported and often merely trained monkeys); positions which have been pulled or filled, but no updates/removals of the internet posts have been made; etc. etc.
Meanwhile, find something of interest, technical or otherwise (you never know where your good connection is going to come from), and get involved. If ballroom dancing is your fancy, go do that. Those people know people.
Now about the experienced seeking jobs... just be aware that so many jobs today are for positions that already existed. Bob did X, Y, and Z, and company is seeking someone with those exact skills. It's pretty unlikely that there are candidates with the exact skills required; thus it's very beneficial to know someone within the company, that way you can get the interview without being filtered out by a keyword-matching monkey.
Now that users can do almost anything (simple) on a computer or even their phone, they now expect that anything they can imagine (vaguely, inarticulately, even impossibly) should be easy to do.
Unless you're at one of the rare shops that's well funded and not directly dealing with users, you will likely be in a no-win position.
Deliver a flawless system and you go unnoticed. Instead, you get asked "can it do this ?"
Or worse and most likely, you step into a position with an existing product that you have to continue development of. It will be behind schedule, over budget, and a complete architectural disaster. What's more, it won't match what the users need because nobody bothered to dig deeply to find out what the users really needed (as opposed to what they initially said they wanted - there's a huge difference).
Am I bitter, yes. I'd rather be a lawyer. At least then I'd still be getting rich doing crap work.
What you describe does not surprise me, and in fact much of the blame does go all the way up the US management chain.
Ultimately the US business game is about quarterly earnings per share, and using stupid tactics like these help boost those numbers temporarily. Of course in the long run overall performance of the company suffers (and along the way, Americans have fewer job opportunities).
My personal experience with outsourcing people is that they simply cannot think outside the box. In fact, they cannot think beyond explicit instructions. For the level of energy it takes to adequately instruct an offshore worker, we can do the work ourselves. This is especially true with the more agile languages and toolkits these days.
New systems generate new problems.