Microsoft’s Going Native 2012 was a great conference for C++ developers. There were talks by the movers and shakers of C++ including Bjarne Stroustrup himself. There were a few new topics, like the experimental work on Concepts by Stroustrup and Sutton.
And a new meme was forged by Andrei Alexandrescu.
Andrei is famous for his sound bytes, but this one really hit the nerve. There was a question during the panel discussion from a person who complained that, for some bizarre nonsensical reasons, the management of his company wouldn’t let him use STL. “Call your headhunter!” responded Andrei. The audience cheered and the tweetosphere lit up. It was not only a great comeback but also a serious piece of advice. We C++ programmers have much more power than we think.
So if you are feeling unhappy with your job because the management interferes with your productivity and creativity, you don’t have to take it any more. Good C++ programmers are in great demand, recession notwithstanding. I regularly attend Northwest C++ User’s Group meetings, and every month there is some recruiter buying pizzas for all 20-30 people (if you are living in the Greater Seattle Area, please come and have some pizza with us). If you have any doubts whether you are a good programmer, let me assure you: The fact that you are reading this blog is proof enough.
I’ve had the opportunity to talk to Bjarne Stroustrup about the value of a good programmer. Bjarne said that managers rarely appreciate the orders of magnitude separating good programmers from average programmers in terms of productivity and code quality. The managers don’t see the point in providing top-notch productivity tools nor do they understand the need for constant education (some of my programmer friends had to pay for the conference from their own pockets). In other words, they consider programmers a cheap commodity. If you are stuck working for one of those companies, call your headhunter!
No programming job should be boring. This is the magic of programming: Any boring repetitive task can be automated. It’s this process of automation, of finding meta-solutions, that makes programming exciting.
Chandler Carruth had an interesting talk about the progress of the Clang project. They have open-sourced their C++ front-end and made possible the creation of smart tools that can work on very large C++ projects. Large projects sooner or later enter the stage when maintenance is nightmare. Chandler demonstrated that it doesn’t have to be so. Instead of propagating a top-level modification by hand through millions of lines of code, you can write a short program that uses the C++ front-end to make exactly the modifications that are needed — more reliably than a human. This includes understanding and, if necessary, modifying macros.
Chandler’s group was also able to produce tools that not only figure out which includes are strictly necessary in each file, but also introduce forward declarations whenever possible. Java programmers are probably snickering, but for C++ this is a major breakthrough.
So if you are faced with a boring job and are not allowed to search for automated solutions, use STL, or upgrade an ancient compiler or build system — seriously, call your headhunter!
February 6, 2012 at 12:34 pm
I was watching some sessions via webcast – I liked the compassion of all the speakers!
The experimental concepts that Bjarne and Andrew were presenting looked really simple and promising to me. I wasn’t very engaged to the concept proposal before, but I sensed the hype around it. It’s always good to go back to the roots (which are even philosophical in the case of concepts :)) and exactly work out what’s needed.
static_if is a very interesting thing as well. I fear that it would make it difficult to discern whether code is runtime or compile-time code but more thinking eventually leads to good solutions. Nevertheless simple and straightforward…
February 6, 2012 at 8:50 pm
Would you advise a startup build out its mvp in c++ over other languages to attract that unhappy talent?
February 6, 2012 at 9:24 pm
Amazes me how C, C++ hang on after all these years and still actually has a good following with plenty of jobs.
February 6, 2012 at 10:15 pm
With a language as powerful and as complex (well, not complex, but large) as C++, there will probably always be a demand for talented C++ programmers.
What’s nice is that C++11 adds a lot of nice things that make us C++ programmers powerful AND productive 😉
February 7, 2012 at 12:53 am
Apple would be one such company that forbids stl, at least in WebKit. Most game companies also forbid it. Thought most of the objections can be overcome with things like intrusive_list which gets rid of many speed and bloat issues. Then again, that’s a relatively new feature.
February 7, 2012 at 2:14 am
Bartosz, why don’t you write more often? I am always longing to read something new from you. I know it’s off topic but just wanted to mention it here.
February 7, 2012 at 2:55 am
@pavanto: I guess that is a really contorted way to say “Thank you” in some universe 🙂
February 7, 2012 at 2:57 am
How typical is this situation – you ask your interviewer about best practices and standard libraries. The answer “yes – we use modern C++ best practices with standard libraries”. The reality of the situation – they’re using half baked company “standard” libraries which came from the 1990s, along with all the best practice coding standards of the same era.
I could call my headhunter – but then after working in 4 jobs in 5 years I come to expect that what my headhunter promises isn’t going to be the reality. Do I need to request code samples before I can believe anything they’re saying?
February 7, 2012 at 3:55 am
> the management of his company wouldn’t let him use STL
Was he a game developer, by any chance?
February 8, 2012 at 6:57 am
Hi Bartosz, Excelent article!!!
February 12, 2012 at 5:15 pm
I saw this from the front row. 🙂
And I agree with you and Andrei…
BTW, Great Great Post…
February 13, 2012 at 1:07 am
With all due respect, it is a bit irritating to hear all those “good advices” from people who are fullfiled in their lives and already forgot that life is not that peachy.
To make this short — “call your headhunter”. And how you are supposed to find a good, reliable headhunter in the first place? Because this is not a solution to the problem, it is exchanging the problem A with problem B exactly as hard one as the one before.
So I will take this post as propaganda, more than anything you need luck in life, because you can be assured on everything and anything, and when you sign the contract you will find for yourself if the job is good indeed or not. Only time proves the value of your choices.
February 13, 2012 at 2:05 pm
You’re right, Maciej, finding a good job offer may not be easy, depending on where you live. The call to arms was directed at C++ programmers who are stuck at lousy jobs and might not even realize that their situation is not normal and that it can be changed.
Of course before you quit your job, you should make sure that you know much more than is required for your current position and that you can easily accept new challenges. And if there aren’t that many programming jobs around you, you might consider relocation. This is not always an easy decision.
As for successful people giving “good advice,” I wouldn’t have written this blog if my only reference was myself. I have contacts with lots of C++ programmers and I follow their careers. There were times when our NWCPP meetings would start with a show of hands: Who’s currently out of job? The situation is totally different now. As I mentioned, recruiters are buying us pizzas just for the opportunity to announce job openings. So have heart.
February 14, 2012 at 12:09 am
Well, I wonder on what planet do you live, because I would like to live there too 🙂 I am looking for a job for quite a while, and I track both local and US offers (US — curiosity, because I cannot travel there freely) and what is very clear for me is that 99.99% jobs offers are disaster and even reading them is waste of time. Why? Because typical job offer is like this “C++ programmer wanted. Responsibility: working in a team of creative people; writing programs; debugging programs; finding ways to improve programs. Requirements: good C++ knowledge…” (this begs for Redundancy Department of Duplicated Information) and I don’t see such offers (imaginary) as “Programmer for visual recognition system. Requirements: fast learner, experience in VR or similar field…”. You see my point? If _I_ know that what really matters is ability to adapt to new challenges and to new data, and employer does not know that and instead rather focus on here&now, what more should I ask? Language should be least concern, because today’s hot topics are obsolete stuff of tomorrow, and what should be emphasised (but it is not) is the field of the job — so I click [next] and I keep clicking for what, 2 years now? 😉
February 14, 2012 at 9:01 am
@maclas: you should apply for some of those jobs. You may be surprised to find that employers are rarely looking for that exact candidate. They just want a good candidate and the ad weeds out those that THINK they aren’t good enough.
February 14, 2012 at 4:12 pm
@Maciej: You are positioning yourself as an image recognition specialist who happens to know C++. That’s a narrow niche and it might be hard to find a job with that description. I was speaking to hardcore C++ programmers who are willing to change specializations at the drop of a hat.
BTW, I am a high-enegy physicist who happens to know C++ but I realize that, outside CERN, I’d have a hard time finding a job matching my skill set.
February 16, 2012 at 12:01 am
@gbrandt, oh, no, I won’t — such job offer describes exactly the company, and in such way, that I want to avoid it. If someone is no capable of spelling out, what the job is about, then it is very likely she/he won’t communicate very well when working.
@Bartosz, misundarstanding. It was just an _example_, maybe I am alone in that matter but I don’t take ANY job just because there is C++ involved. I need to know if there is image processing, air traffic control, ETL, medical equipment, databases involved. In short — topic. For me, it matters.
February 17, 2012 at 4:39 pm
this quote: “They have open-sourced their C++ front-end and made possible the creation of smart tools that can work on very large C++ projects”, misrepresents Clang a lot. They didn’t “open-source their C++ front end”, Clang has always been open source. Clang’s “backend” is LLVM, which is a full-on open source project as well, not something that “got open-sourced”.
February 22, 2012 at 4:36 pm
Recently quit my job, among other reasons because my glorious projet manager would rant against boost, though he ofc never used it… or STL for that matter. 🙂
February 22, 2012 at 7:42 pm
Bartosz, great post. I loved the conference and sympathize both with the frustration of engineers not able to work with the best tools and also with the presenters who are frustrated that engineers don’t just walk away from such jobs.
I thought it was interesting that two sessions (static if and concepts) were spent on things that aren’t yet in the standard when we are at least (half) a year away from a tool set that delivers on the standard. I’m not complaining, rather I think it is a reflection of C++ programmers that we are always pushing our tools.
I hope you enjoyed it as much as I did. It was great and it makes me all the more excited from C++ Now! (BoostCon) in May.