Many programmers, including some of the brightest and best, are dyslexic - how does that work!?
I want to make a confession. I’m slightly dyslexic and being a programmer this is a worrying condition!
It is even more worrying that quite a few of the “good” programmers I have had the privilege and frustration of working with over the years have also been dyslexic, some very much so.
First I need to explain why dyslexia is a strange defect to find in a programmer, just in case some of you don’t know what dyslexia is or what programming involves.
Firstly, dyslexia is a complicated collection of symptoms and problems that often goes unnoticed in the school system.
The major problem is that dyslexics find it difficult to read.
When all the other pupils are zooming ahead onto Dick and Jane book 12, a typical dyslexic is still wondering what the black blobs on the paper might be.
That is, if they are lucky - many know all too well that the black blobs are important, and probably the key to the universe, only they can’t quite grasp it. The frustration often leads to other more antisocial problems and eventually a proportion of dyslexics end up being classified as "bad" and "lazy" rather than having a problem not of their making.
A range of problems
Being one of their number I would like to claim at this point that dyslexics are in fact fine people with huge IQs and wonderful abilities given to them to make up for the problem – but I can’t.
Dyslexics I’ve known have a range of abilities, IQs and failings. Once they have managed to decode the blobs, if they manage to decode the blobs, they usually show other problems – reversal of letters and figures e.g. d/b and p/q, 5 and 2, difficulty with sequences of all sorts, terrible spelling, very short short term memory for learning lists etc.
One odd symptom that is very rarely discussed, but a number of dyslexics I have known recognise it when it is mentioned, is a strange symmetric transposition of whole character or figure groups.
For example, one person I work with always confuses the numbers 12 and 20 to the point where if I find a 12 or a 20 in a program there is a 50% probability it should have been the other one! Why 12 and why 20? A good question, but you can see or rather hear that there is similarity in the way that they sound – yes the problems are complicated and sometimes comical!
Now we come to the programming connection. Yes it really is a problem to discover that “12” and “20” swap themselves around in someone’s code without any regard for accuracy! What is more programs use lots of symbolic names which need to be spelled 100% accurately and even capitalised in the correct way.
Oddly this doesn’t seem to be a huge problem for most of the dyslexic programmers I have worked with. They seem to be able to keep to a single spelling of a symbol.
The real problem occurs when they have to “interface” with another programmer’s code. For example, two programmers are working together on a project to build an application for managing a production line which makes automatic measurements. One works to build a class library for the other to use in building the application. Fine until the first programmer writes a call to the “height” method of the “widget” object only to find that is actually the “hieght” method of the “wiget” object!
Such things are usually easy to notice and relatively easy to put right with modern refactoring tools, apart that is from the shame of it all!
To be serious for a moment many dyslexics are very loath to admit that they have a problem at all and become hostile and or embarrassed at any attempt to notice let alone discuss the problem. This unwillingness to even admit that there is a problem is perhaps the only intractable problem!
Most dyslexic programmers do a good job and may even do a better job for having to battle with their problem – but this isn’t the important point. If you know that a particular programming language has a tendency to a particular type of error then you do something to guard against it. The same should be true of the programmer’s tendency to make particular types of error.
When I was first learning to program I kept a notebook of the errors I made and very quickly learned what to look out for. Today my errors are much more diverse and subtle for the approach to be of much use but it was helpful in getting the bugs out of me!
Over time I have also had to admit to the errors caused by my own dyslexia which, no matter how mild I claim it to be, still causes me much embarrassment.
The good news is that research reveals some interesting things about dyslexia. First off it seems to be a real physiological problem and not just an “attitude of mind”. This is important because so often children, and programmers, are treated as lazy rather than dyslexic!
Second it seems to be a perceptual problem rather than a deeper problem in language processing. Hence dyslexics understand well enough but have I/O problems not IQ problems.
In particular it seems to be a problem with particular types of visual and auditory perception – dyslexics just don’t see or hear in quite the same way as the rest of the population.
The final question I have is why is it that so many people who find coping with text difficult take to programming – the most text based of all the technologies? Again research has come up with possible answers.
If you think you might be dyslexic the Adult Dyslexia Organisation has a diagnostic checklist.
Einstein - dyslexic? Well it was very nearly E=cm2
And if you discover you are a likely dyslexic, bear in mind two things. It probably makes you a better programmer and you are in prestigious company as this list of famous dyslexics indicates.
For advice about coping with dyslexia contact:
Adult Dyslexia Organisation
British Dylexsia Association
International Dyslexia Association