Sunday, November 30, 2014

Programming - so much of it isn't writing code.

I seem to spend just as much time in working out how things work, tying together systems, understanding applications and servers, configuration and deployment (AWS, docker, DNS, backups, email, database, web server etc etc etc) as I do in writing the code for my whiz bang new idea.

I do wonder how programmers without deep Linux skills manage to get their job done.  I seem to need every Linux trick in my book to manage to get the final system pulled together.

Tuesday, November 25, 2014

When you hear "We're moving support to Stack Overflow" say, "We've moved our business".

Do a search for: "We're moving support to Stack Overflow" (without the quotes). You'll find there's a number of companies making similar announcements.

At first glance it seems to make sense, after all that's where the developers are going to get their technical questions answered isn't it?  So why bother maintaining a separate support presence?  May as well just send all the support to Stack Overflow.

But it's a bad, poorly thought out idea.

Stack Overflow is not a product support forum.  Stack Overflow is a place to get highly specific, tightly defined programming questions answered. Stack Overflow is also run by a community with a reputation for being somewhat hostile and with a reputation for heavy handed moderation.

If you are a software vendor who is "moving support to Stack Overflow" then you should consider a few things:

1: If you think that all your support questions are tightly defined technical questions and answers well suited to the Stack Overflow format, then you are wrong.
2: Have you given any thought to how your customer feels about your company and your product when their question on Stack Overflow is voted down within seconds and then closed within minutes? Are you comfortable with your customers being roughly handled by the tough rules enforcement at Stack Overflow?
3: It is your job as a software vendor to be accepting of the varying levels of your customers technical capability, and to help them regardless of how well they are able to formulate their question
4: Your users will have questions that are not technical but they still want an answer from you. They have questions like "when is this happening?", "what is happening with feature X?", "I'm evaluating your product, does it do Y?", and of course "why the fuck is your product not working, I paid you good money, please fix it now."  How are those questions going to go down on Stack Overflow?
5: Your sales come partly through your support channel.  You've just thrown it at Stack Overflow, brushed your hands and walked away.  How does your sales hungry CEO feel about that?

None of this is the fault of Stack Overflow.  That's the way it works.  It's a technical question and answer site with clear requirements and a tough community.

So if your software vendor says "We've moved support to Stack Overflow" say to them, "We've moved our business".
A place you can ask questions that don't fit at Stack Overflow.

Sunday, November 23, 2014

When choosing a new technology, priority one is documentation and drivers.

I'm looking at graph databases at the moment, trying to work out which one to use.

The thing I'm interested in first and foremost is quality of drivers and documentation.  The better the drivers and documentation, the less painful development is likely to be.  Unfortunately, drivers and documentation for Python tend to be an incomplete half-assed hack job.

Most database developers put all their effort into writing the core database code.  They should put most effort into drivers and documentation.

"Keen to learn" - bullshit or lazy.

Whenever I read a resume that says "I am keen to learn technology X." I always think "Well, why the hell haven't you already learned it?". There's no obstacle to learning some new technology.  Just go do it.

When I read "I'm keen to learn", I think "bullshit or lazy". Close resume.

Why is there no official Go SDK for Amazon AWS?

Amazon has bet big on Docker. Docker is built with Go.

But there is no official Go SDK for Amazon AWS.


Friday, November 21, 2014 launches, a nobel prize for Joel and Jeff and a silver nuke.

Sat 22 Nov 2014

This post announces the launch of Not Constructive (, a place to discuss software development and related topics.

Fred Brooks said that there is “no silver bullet” . What he meant is that in software development, there’s nothing that will give an order of magnitude increase in software developer productivity.  But when Fred Brooks said those famous words there was no such thing as Stack Overflow.

Stack Overflow is responsible for the greatest ever increase in programmer productivity.  I’ve got no science and no numbers to back that up but I can't think of anything that's had greater impact. What could be more powerful than aggregating the brainpower of all the worlds software developers into a carefully curated set of questions and answers and discussion on how to solve problems in software development.  Stuck?  Got a question?  Try asking all the software developers in the world.  It’s truly amazing just how powerful it is.  Stack Overflow isn’t a silver bullet - it’s a silver nuke. Software development hasn’t been the same since 2008 and Stack Overflow has delivered the order of magnitude productivity increase that would have been impossible pre-world wide web.

Stack Overflow has had a greater impact on software developer productivity than anything else, ever. I’m not being facetious when I suggest that the creators of Stack Overflow; Joel Spolsky and Jeff Atwood, deserve a Nobel Prize for Stack Overflow.  That’s how important Stack Overflow is. Given that there’s no such thing (yet) as a Nobel Prize for software, a Turing Award for Joel and Jeff would be well deserved.  These guys have fundamentally changed software development and are amongst the greatest of modern computing groundbreakers. I've exchanged emails with them both for a couple of reasons over the years and it feels like hearing back from Mick Jagger for a Stones fan.

But Stack Overflow isn’t all rainbows and unicorns. I've come to dread using it. Try asking a question on Stack Overflow.  Chances are within a matter of minutes (or seconds) it has been downvoted.  Huh?  What’s wrong?  I thought it was a reasonable question, well written.  Apparently not.  Within only a few more seconds other members of the Stack Overflow community will have turned up to vote you down further.  It seems your question sucks.  Your question isn’t a fit to Stack Overflow.  The community at Stack Overflow feels like a bunch of pedantic rules lawyers. The moderation seems heavy handed.  Downvoting feels like a significant part of the problem. A downvote is a criticism, and people don’t like being criticized.  Criticism breaks down human relationships, and given that downvoting is central to Stack Overflow then criticism of its user base is also central to Stack Overflow. Another glitch in Stack Overflow that doesn’t help is that when you get a message in your inbox, the icon is colored red. For that longest time I assumed that I had done something wrong, that maybe this red icon indicated I had been downvoted.  I’ve worked it out now but red is a color that indicates that you’ve done something wrong and Stack Overflow likes to make it clear that you’re getting it wrong. Stack Overflow has a very negative, judgmental feel to it.   I like the answers that I can get there but it’s no fun participating.

To be successful, Stack Overflow requires this level of pedantry from its community.  It is a question and answer site for answering programming questions, and the questions and answers need to be very clear and need to meet certain standards in order to be valuable.  If Stack Overflow was more open and free wheeling then probably it wouldn’t work.  It works because the community is so rigorous in enforcing correct question and answer structure.  But there are lots of valid questions in software development and computer science that don’t fit the tight criteria of Stack Overflow.  There needs to be somewhere to ask those questions and that is why Not Constructive exists.

The risk of course with Not Constructive is that it will attract only the angry disenfranchised refugees from Stack Overflow, and that the tone of Not Constructive will reflect that negativity.  I hope that doesn’t happen. I’d prefer that Not Constructive be a complement to Stack Overflow, not an angry place.  Some questions fit Stack Overflow well, some questions fit Not Constructive better.  Not Constructive has different goals to Stack Overflow and should be able to be a positive place where people can discuss and ask questions that don’t fit elsewhere.  Our community principles are here.

Ironically, Not Constructive uses Discourse, the open source discussion forum software also created by Jeff Atwood. Discourse is a superb piece of software and extremely well thought out and reliable, a pleasure to use.  It’s a pity it’s not written in Python which is the language I prefer to use, but there’s nothing comparable available in any other language so the pragmatic decision is to just use it. Discourse seems so complete and well written that for once I don’t anticipate I’ll need to dig into the code and futz with it to make basic stuff work, as needs to be done with just about every other open source system.

Not Constructive was first announced onHacker News in Jul 2013.  The exact number is lost now but we had around 14,000 people add their email address to the list of interested people.  An incredible response.  Hopefully we’ll get plenty of people joining in the discussions at Not Constructive. Why has it taken so long you ask?  That’s another blog post which I’ll write soon.

So for now, if you have any questions about software development, computer science, operating systems or deployment please post them at

And if you’re interested in being a moderator please let me know at the address below.

See you there!

Andrew Stuart

Tuesday, November 18, 2014

In recruiting? Just say no to cash refunds.

Recruiting is, for the most part, a commodity in endless supply.  Or is seen to be anyway.

There's only one direction for the value of highly available commodities - down.

The current trend in recruiting is for employers to demand not warranties, but cash refunds.

Is say it's gone too far and its not commercially viable to accept cash refunds as part of the deal. Both employer and recruiter invest significant time and effort in finding the candidate in the first place, and both employer and recruiter carry out assessment to evaluate the candidates suitability.

If the employment deal does not work out for whatever reason, then the risk and responsibility lies with both employer and recruiter. Cash refunds mean the responsibility and risk lies entirely with the recruiter and that's not justified.

The most effective mechanism for dealing with a new employee leaving within the warranty period is that the recruiter gives a strictly-no-cash-refund account credit for the amount of the original invoice.

This means the employer is free to get the replacement from the recruiter, direct or some other source, and still imposes an obligation on the recruiter to find another person for the employer at some time.

If you are a recruiter and an employer requires a cash refund - just say no thanks to that relationship and move on to another employer who wants to do effective business in a commercially balanced way.

Just say no - and send all those great candidates that you find to a company willing to have a sound commercial relationship.

PHP feels in decline.

PHP feels in decline. Despite the fact that PHP remains the primary development language in use at Facebook.

New developers aren't coming through the ranks with a passion for PHP.

If you're an employer with PHP systems it's time to start thinking about how he lack of good resource might impact your future ability to find people to work on your systems.