Career planningThe immortal choices aren't
In response for my previous post, Eric had the folowing comment (well, tweet):
I guess some baskets last longer or some eggs don't seem to rot e.g. C, C++, SQL, Java*, etc
And that is true, in some sense of the word. In other words, there isn't any expected shortage of C or C++ opportunities anywhere in the medium to long future. The problem is that this isn't the same language, framework or enviornment over time.
In the late 90s / early 2000s I was deep into C++. I read Effective C++ and More Effective C++, I gone through the entire STL with a fine tooth comb, and I was a pretty enthusiastic (and bad) C++ developer. But let assume that I was a compotent C++ dev in the late 90s.
What was the environment like at the time? Pretty much all 32 bits, STL was still a hotly debated topic. MFC and ATL were all the rage, and making the C++ compiler die via template meta programming was extremely common. COM and Windows DNA were all the rage.
Assume that you freeze the knoweldge at that time, and skip forward 15 years. Where are you at?
Modern C++ has embraced STL, then moved beyond it to Boost. In Windows land, MFC and ATL are only used for legacy stuff. COM is still there, but you try to avoid it. And cross platform code isn't something esoteric.
Now, I stopped doing C++ a few years after getting starting with .NET, so I'm pretty sure that the kind of changes that I can see are just the tip of the iceberg.
In short, just because the title of your job didn't change doesn't mean that what you did hasn't changed considerablely. And choosing safe (from a job prospect) programming language and sticking to it, knowing that you can always rely on that is a pretty good way to perfom career suicide.
On the other hand, I know people looking for Cobol programmers...
More posts in "Career planning" series:
- (24 Jul 2015) The immortal choices aren't
- (22 Jul 2015) The age of least resistance
- (27 Oct 2014) Mine
- (23 Oct 2014) Disaster recovery
- (22 Oct 2014) What is your path?
- (20 Oct 2014) Where do old devs go to?
Comments
The choice isn't between learning nothing and learning some new tech. It is between learning something completely new and refreshing existing knowledge of something you already know that is still in demand like C/C++. Demand for C++ is pretty strong, as strong as shiny new things like Go. I expect that learning the newer bits of C++ for a competent programmer would be reasonably easy if done over an extended period. Learning something like Go would be a lot harder. You'd still be able to build the same types of systems at the end of the process with either tool in probably about the same amount of time. You'd likely be paid about the same salary as either a Go programmer or a C++ programmer. You could make the argument that learning Go would make you a better programmer. And that might be true, but in the end in a C++ shop nobody is going to care one way or the other.
C++ is extremly powerfull in controling the hardware (memory, CPU, anything) while still giving you a pretty high level of abstraction, on the other hand C# (or a another language over a powerfull VM) is extremly powerfull in solving chalenging design problems effectively due to the added higher order capabilities (extensive runtime metadata, runtime code generation, unified type system). While it's true you can do anything in C++ for some classes problems there are orders of magnitude of effort diference between a managed language and C++.
So what does this mean for a career?
It means, if you want to be where the excitement will be in ten years, then always target a last gen (or next gen) language or framework starting today.
There may be lot's of C++ shops and projects out there, but the number of new ones that are not nieche is scary low these days, expecially for a general purpose language, and that's got to say something.
Jack, I was commenting specifically about the "learn something that doesn't go away in 5 years" tweet. And in a broader sense, the wish of some people to "let me learn this one thing, and never change again"
Pop, I would strongly disagree about C++ only used for new stuff. In 2014, github had 78,878 C++ repositories. http://adambard.com/blog/top-github-languages-2014/
Looking at the trending C++ projects: https://github.com/trending?l=cpp
You see some infrastructure (vm, emulators, shells, games, etc) but a lot of applications as well (IM, code editors, OCR, etc).
Comment preview