On 8 Nov 2014 at 15:53, Edward Diener wrote:
When interviewing C++ developers, I find those using Boost libraries, at least beyond shared_ptr, are rare. The brand is known by relatively few, and it is used, to any significant extent, by fewer still. That implies the need to grow our ranks through some form of advertising.
Did anyone ever get promoted for jumping onto new language features before they are commonplace? I'd doubt it.
I have never seen this. Good C++ programmers use Boost libraries when it saves them work because the libraries are high quality. Bad-mediocre programmers re-invent the wheel incessantly.
I strongly disagree with this. People, which programmers are usually as well, respond to incentives, that's all. A top class C++ engineer sitting on the ISO committee may in fact *often* reinvent the wheel incessantly at work. If their corporate employer takes a minimum of three months for Legal to clear the use of any new version of an open source library and your work item requires you to deliver the solution inside two months, you follow your incentives and you go ahead and reinvent that wheel. There is also the substantial problem still present at most employers that your engineering prowess is judged on lines written and JIRA issues closed. Reinventing the wheel will always generate more lines written and more JIRA issues for you to close. It therefore substantially increases the chance that your job role will be seen as vital to the company, and therefore someone else will get axed before you will. You must remember that as with most non-consulting programming roles, your single highest priority is to retain your job at all costs. Your second highest prority is probably to keep your family happy by not getting dragged in for overtime constantly, and your third highest priority is to not hate your work too much, which means avoiding doing anything controversial or anything which might annoy anyone else and cause them to throw crap your way. Engineering quality come very far down the list of priorities for most programmers. And therefore, by implication, so does Boost - if anything, using Boost marks you as having a touch of zealousness, and therefore as a threat to the org which must be eliminated as soon as possible by anyone with "career aspirations". I couldn't possibly state that any of the above comes from personal experience working in large corporate orgs :)
Having worked for approximately 30 different companies in my career as largely a computer programming consultant I am well aware of many programming shops, even within major corporations, who have no clue about reusability of software.
I think this is harsh. It's more they don't *care* about reusability. And why should you: reusability equals fewer jobs and higher risk of getting laid off. What you really actually want to write is code which works just about well enough to make your job mission critical, but not well enough they don't need you any more.
There is absolutely nothing Boost can do for such places, because the general understanding of program creation is so low and in the hands of programming managers and their like who do not understand programming design in any way.
It's more again that they don't care, or rather don't prioritise. Even if you yourself care, your line manager and their line manager worries about fighting for resources in the org and making sure that their team remains ranked high by management compared to other teams. They also have powerful incentives to not produce too excellent engineering. They do have strong incentives to be seen as excellent firefighters who can "save" a failing mission critical project. None of this implies good design from the outset. It's really all about throwing banana skins under feet, at least from the line managerial point of view, and wrapping good patches around terrible design.
I have fought too many losing battles with companies for which I have consulted, trying to convince people whose programming talent is low, that using reusable libraries such as Boost will make it easier to accomplish their goals. OTOH I have also worked for a number of smart companies which will use Boost libraries, as well as other reliable, specific programming libraries which exist, to increase their productivity.
Using Boost will substantially raise your recruitment costs. Right now my current client who uses Boost and the C++ 11 STL extensively is trying to hire more engineers willing to relocate to their HQ and we've already dumbed down the job description once, and we'll probably have to drop any mention of the STL or Boost and any mention of unit testing or multithreading next because we are seeing *zero* applications. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/