How Nystagmus Made Me a Better Programmer

I lose some, I win some — it’s all about perspective

So I have nystagmus.

But you probably don’t know what that is, so let me brief you.

Nystagmus is a condition of involuntary eye movement. Basically, every now and then my eyes start moving uncontrollably, and I instinctively tilt my head to compensate for this movement.

Also, I have to look in another direction for about 10 to 20 seconds without focusing on any object to regain my sight.

The good thing is that this is not constant. I get such episodes only around six times per hour. But it depends on how much I’ve slept last night, how stressed I am, how hard I try to read something, different light conditions, and so on.

In the worst conditions, I can get such episodes every 2–3 minutes. You can imagine how this has affected my life so far.

I have a hard time maintaining eye contact.

I have a hard time reading if the text is not crystal clear in front of me.

I have a hard time recognizing people on the street or when meeting them at a place.

I can’t really drive.

And the list goes on. You can imagine all the other scenarios I go through when I’m programming — tight deadlines, badly formatted code, too bright monitors.

But ironically, nystagmus made me a better programmer. All these disadvantages have forced me to see things differently.

Let me show you how.

1. Speed Reading

Although counterintuitive, not being able to constantly focus on the text has made me a faster reader.

I learned to read by having a quick glimpse at a row of text, instead of eye-tracking every word from a row. If I’m not tracking each word, I’m also not subvocalizing each word — which increased my reading speed as well.

So, when I’m reading a book, I simply move vertically through the middle of each row on the page. For each row, I’m creating images in my mind with the overall meaning, instead of focusing on the independent semantics of each word.

The same goes for when I’m reading a piece of code. The standard 80 characters limit per line actually helps people like me. I don’t have to go from left to right to read a line of code.

You might think this means that I miss important information. Truth is that there are only around 2–4 important words on each row. The rest of the words just connect the important ones.

And same goes for a line of code: 80% is syntax, 20% is meaningful information.

With practice, I started to get a feel for which words are important in a row so that I don’t miss them.

2. Thinking in Patterns

When I join a project, I take some time to understand the architecture and the patterns used in it. If I don’t do this right away, it forces me to reread the codebase over and over again.

For example, I’m not focusing on the actual arguments that are passed to a function. Instead, I focus on how the function is defined and in which way it is called.

This enables me to think in patterns.

Now, when I see a piece of code — I already know how it is defined, and in which way it is used. I don’t have to reread the whole code again to understand it.

This mindset helps me in many ways:

  • When I get a bug, I most likely already know the root cause. There was a flaw in the pattern.

  • When I have a technical challenge, I most likely already know a possible solution. I’ve seen a similar problem in the past.

  • When someone asks me a question, I most likely can answer right away. I don’t have to go through the code— it is already in my head.

Nystagmus forced me to better understand things so I’m not forced to learn them again.

3. Using Shortcuts

I consider myself a speed coder.

When I’m coding, I hardly ever touch the mouse.

While I’m sharing the screen, you might not understand what I’m doing because stuff just happens on the screen — variables change names, text gets selected, multiple tabs are opened.

I’m using shortcuts.

This is because I cannot always rely on the menu items the IDE provides me. If I get a nystagmus episode right when I’m looking for a menu operation, I will have the hardest time finding it.

Instead, with a shortcut, I can really do the operation with my eyes closed. I don’t have to search through complex menu hierarchies. This helps me to focus solely on the end goal, and not on all the steps I have to do to achieve it.

It’s funny because I’m sometimes really doing stuff with my eyes closed when nystagmus kicks in.

If you know how to touch type, you understand me. You don’t have to look at the keys to type. And if you have great accuracy, you don’t even need to look at the screen to check your typing.

The good thing is that shortcuts are for everyone. You don’t have to suffer from nystagmus to start benefiting from them today.

Conclusion

Nystagmus made my life harder.

But it also made me see life differently. I’m constantly looking for alternative ways to do the things I could’ve done if I had a perfect vision.

And the alternative ways are often better than the standard way of doing it. But I would’ve never discovered the alternative if I was not forced to look for it.

In programming, nystagmus helped me develop a better understanding of systems and a faster coding speed. I can say nystagmus really made me a better programmer.

Every disadvantage is just a trade-off. You lose some, you win some.

Focus on the wins, and you will never feel bad about the losses.

How Nystagmus Made Me a Better Programmer was originally published in Better Programming on Medium, where people are continuing the conversation by highlighting and responding to this story.