Tag Archives: Stack Exchange

Stack Exchange is winning the internet and this is not a good thing

I have blogged about how much I like the Stack Exchange sites in the past and my opinions on their usefulness haven’t changed one bit, but I am noticing a trend that I wanted to discuss briefly.

Lets say I am new to a programming language and I want to know how to concatenate two strings, time was that the canonical result from a Google search would probably be a link to some spec documents or some general advice around the language. This isn’t the case anymore, now you often get a Stack Overflow answer as your first result.

I just tried this by searching the following term: “concatenate strings in go”

Concatenate Strings in Go

Concatenate Strings in Go

The first three results from my search (I say my search because Google weights each search individually to the user making the search) all point to Stack Overflow, interestingly the second result is actually pointing to a Ruby answer, which is weird but it highlights the strength of Stack Overflow answers on the Google search index. This is why I have said they are winning the internet.

Why I don’t think this is a good thing is because whilst for someone who is already happy with the language and has a very specific question this is excellent, but in the case of needing to concatenate two strings we can infer that the user probably doesn’t have much of a background in the language and I don’t think this straight to the point question and answer setup is the best for this person.

The question they find will more often than not talk about an edge case where the first answer might be best suited to that edge case but perhaps not best suited as a general rule of thumb, and indeed other answers that are perfectly valid in a general case may be voted down in this specific case and a rookie user will probably not pick up on that.

The fact that Stack Exchange answers appear so high in search results often means as well that people assume that if it isn’t on the Stack Exchange they should ask it, which leads to too many questions being asked that could be answered by reading the manual or doing a tiny bit of experimentation.

This extremely efficient mechanism for finding out the exact answer to your question is creating a generation of very efficient, but perhaps not entirely well rounded developers who can churn out code very quickly but perhaps don’t understand the code as well as they should.

I should point out, this is in no way the fault of Stack Overflow, they are providing an excellent service and they are clearly doing their fair share of Search Engine Optimising to be able to achieve such results, I think that if any physical thing is at fault here it is maybe Google, they are charged with finding people the most relevant result and whilst on paper an exact match between your query and a Stack Overflow question should result in Stack Overflow being the canonical link, I am not sure it is the most relevant link in practice.

To be honest to call Google at fault is probably clutching at straws, the real issue I think is that too many developers are happy to dive in and ask someone to do their thinking for them before properly trying to solve the issue themselves, I don’t know how we fix that.

By the way, here is the best way to concatenate strings in Go, via Stack Overflow of course :-)

package main
import "bytes"
func main() {
    var buffer bytes.Buffer
    for i := 0; i < 1000; i++ {
        buffer.WriteString("a")
    }
    println(buffer.String())
}

If you want to discuss this you can hit me up on Twitter, or there are Reddit and Hacker News threads.

I spoke to Jeff Atwood on Twitter about it and this was his response:

Joel Spolsky also got back to me about it:

Share this on

Using Stack Exchange to be better at what you do.

I have blogged before on the awesome internets that is Stack Exchange but I have to admit that I haven’t been using the sites as much as I had been lately.

In an attempt to remedy this I decided to start setting myself little challenges on some of the sites, all points based and I have to say I immediately started to see benefits to doing it.

My first type of challenge is the most obvious one, writing answers that get upvoted and accepted.  This is the easier of the two challenges but isn’t as easy as just getting the question right.  For example if you give a quick one sentence answer that will give the poster his answer quickly you may pick up an upvote from them and they may mark your question as the accepted answer.  This is nice but has two draw backs.

The first is that you are unlikely to pick up any other votes from other people because your answer is not interesting or helpful in the general sense.

The second (and more important) is that it could potentially weaken the community, I have noticed a tendency that once an answer has been accepted for a particular question that there is unlikely to be more answers added.  I guess the thinking is the person already has their answer so what is the point.

In order to be a good community member I feel that you should be striving not just to answer first, but to answer with the fullest, most appropriate answer you can, and you need to edit it as new information comes in.  The community will be rewarded with an excellent answer and you will be rewarded with far more upvotes than just typing a quick one sentence reply.

The second challenge I set myself was to pick up more points from questions, getting points from questions is really very hard, because some questions are just too simple for people to deem them good, or if they are the right level of technical difficulty are not written well enough to be general enough to be considered a good question.

Without writing War and Peace you really do need to go the extra mile to ensure the answer is as full as it can possibly be, not only will you be likely to attract answers (the reason we are there in the first place) but you will also be better positioned to pick up some extra points.

The net result of these challenges has been that I have become more methodical when writing questions (and thus finding solutions to the questions themselves myself after applying some more thought to them) and have learned a lot from trying to write in depth answers to questions I wouldn’t normally have tried to answer.

Share this on

My Next Project – Stack Exchange Question Promoter using Ruby

In an attempt to better familiarise myself with Ruby I am going to write an app that reads in my unanswered Stack Exchange questions and then schedules them into twitter using Pluggio.

Should be fun!

The first task is to come up with a name, so I dub thee Ruby Based Stack Exchange Question Promoter, or RBSEQP for short.

Sexy.

Share this on

Open Proposal: Companies – get your employees to answer questions on Stack Exchange

I have a proposal that I would like to make to all tech companies or companies with a technical team within them. That is to suggest that employees are required to spend one hour a week on Stack Exchange websites (related to their job role) helping people out with their questions.  The main ones I have listed below, but there are more.

Anyone who has read my previous post on Stack Exchange or has seen one of my tweets on the subject will know I am a big fan of what the network is doing and I that I think there is real value in using the resources they allow. A very brief re-cap of why I think they are useful probably wouldn’t go amiss though;

  • You find answers to your questions fast.
  • No wading through rubbish (very high signal to noise ratio in the content)
  • People compete to give you the most correct and complete answer.
  • You can feedback to the community very easily, with little barrier to entry.
  • You can learn a hell of a lot by answering questions and even asking the right questions.
  • They have a site dedicated to Lego! (this isn’t a real point)

OK, so that is why I as a developer think the Stack Exchange network is useful, but why do I think that companies should actively encourage their employees to spend time on the sites?

There are several reasons;

  • It will keep your employees sharp – working in the same environment with the same people doing the same tasks can lead to a technical person becoming a bit dull and a bit soft, answering other peoples questions will force them to do a little more thinking outside of their normal problem space.
  • It will break up your employees working week – most technical types I know would thank their bosses for an opportunity to do this and stretch their brain.
  • It will teach your employees new skills – apart from the obvious benefit of learning things by answering, being able to ask and answer questions clearly and concisely is a skill that can be carried forward when dealing with internal issues and when speaking to clients.
  • It will be helping the community – and in return the community will help them (and by extension your company).
  • It lets your employees see what other peoples pain points are – perhaps there is a gap in the market for a tool to solve a particular need? Or perhaps there is a new or different way to use currently existing technologies and skillsets, dealing with other people’s problems can help you see these things.
  • You are investing in your employee – this is not only training related directly to the core reason you hired them, but it is also a form of free networking for the employee and by extension, your company.

I think I can pre-empt a few concerns and questions that may arise from reading this proposal, I will attempt to address them here and I would welcome comments and questions.

Why should we help other people with their problems?
Firstly, because it is the right thing to do but also don’t think of it as helping a specific person, think of it as building your employees knowledge base and skill set whilst helping the industy as a whole.

It would be nice, but we don’t have time.
If your technical team can’t spare an hour a week for training, then you need to either hire more staff or work out some way of reducing the workload on them, I would argue that any person should be able to find one hour a week to dedicate to training and learning.

How can we track that they aren’t wasting their time.
If you can’t trust your employees enough to think that they would waste this time surfing the web or not doing the tasks assigned to them, you have bigger issues to deal with, far beyond the scope of this article.

Could the employee not get poached by another company if he answers questions so well?
If your employee is good enough that other companies want them, then of course that is a worry – but honestly I would be more worried if you have a staff of people that nobody wanted to poach.

Thank you for reading my short proposal, if you are a developer or some other genre of technical person please consider forwarding this on to others and your management.  If you are in management I would urge you to consider this document and start talking to your staff about this.  Either way I would welcome comments and questions on this.

Share this on

Got an article printed in the IEEE software journal.

I was really stoked when Diomidis Spinellis contacted me and asked me to do a piece for the IEEE Software Journal and I was even more excited as the drafts and feedback slowly got turned into an article that was going to be printed in a well respected and well read publication.

To be honest I wasn’t 100% convinced it would come to fruition, more my own paranoia than anything else but I just couldn’t imagine it.  Then a couple of days ago I received my copies of it through the post and low and behold my ugly mug was on the back page!

The article itself was about getting the most from the web from a developers point of view, best practices for Google, API searching, things like that and it all came about because of some retweeting that went on for my article on Getting the most out of Stack Exchange.

To that end I want to thank the three people who originally retweeted my link which led to me landing such a cool assignment!

@spolsky
@codinghorror
@carloslonegt

Thanks guys! If ever our paths cross, beers on me.

Share this on