$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Boost Incubator Status Report
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2014-11-10 07:33:39
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/