Archive for September 2016

Deaf in the software industry

Deaf insights

Not a technical post, but hopefully still an interesting one. I want to take you through a quick tour of some things I’ve experienced (good and bad) as a software engineer, specifically from the perspective of someone who has drastically lost their ability to hear over the last few years. NOTE: I’ll use the audiological term deaf in this post but it’s worth noting that there are differences between deaf, Deaf and Hard Of Hearing.

My hearing

A lot of this post is going to apply to others but some bits might be more significant, depending on the person’s hearing levels. For reference, my hearing (or lack of!) consists of high frequency deafness, which I’ve had as long as I can remember, as well as severe loss in the other frequencies caused by Ménière’s disease. I lost around 90% of hearing in my right ear about 5 years ago and had a similar loss in my left over the past year. Since then I’ve managed to gain a fraction back in both ears but I still require hearing aids on both sides, with supplemental lip reading, to maintain a conversation.

Standups

Anyone familiar with “Agile” development will be aware of standups, where everyone in a team gathers to quickly chat about what they’re working on and any obstacles they might be facing. Open communication is key in the Agile world. Unfortunately when you’re deaf, hearing 5-10 other people in a meeting room, which might have funny acoustics and/or AC on, can be tricky. I’m lucky that I have an understanding team who will take care to make me aware of what they’re talking about but sometimes even that isn’t enough.

For any deaf SEs out there, I recommend firstly making your team very aware of what level your hearing is at. Secondly, just like with normal group conversations, make sure to find a position in the room that facilitates hearing what you need to hear – this might require standing where you can see the most faces or perhaps beside the quieter speakers. If I’m having a particularly low hearing day and I can’t hear someone who’s talking to me directly then I’ll just walk over to them and ask them to repeat what they said.

For the hearing SEs reading this, if there is someone in your team who is deaf, be sure to make yourself seen as well as heard. Speak clearly and loudly. Move closer to your other team members if necessary.

Call me maybe

Standups aren’t the only meetings we have to deal with. Like it or not, they’re a fact of software life. If the company you work for is global, then you’ll also have the dreaded conference calls. Luckily, compared to a lot of industries, we have tools that make it way easier for deaf people to participate. GoToMeeting software or other video conferencing means there can be a visual element to calls. Slack or similar chat programs are ubiquitous in most development shops. For me, I couldn’t live without both of these. I occasionally have to attend calls that are audio only but they really zap my energy because I have to spend a lot of effort just trying to extract the meaning out of what’s being said. With a video conference, where there are slides, or a demo, I don’t have to focus quite as hard on the audio as the visual cues will help cover what I miss. Chat software like Slack solves the problem in a slightly different way – it allows me to gather some pre meeting info from one or more participants, so again I can expend energy more efficiently during the meeting itself.

Quick side note here for any recruiters out there. Try to be conscious of candidates that prefer written or face to face communication over phone calls. I love my job and don’t foresee any change of job in the near future but if I were invited for a phone screen or told that I could only find information on a job via phone, both of which were fairly common when I was on the job hunt, then I’d potentially be put off because I know I might miss out on important information.

Syntactic sugar

The company I work for has a great cutting edge tech stack and is always willing to use a new tool if it will solve a problem better than the existing offerings. This is awesome! I can learn new stuff and it helps me do my job better. However, being deaf, new terms or methods can cause a bit of a headache. If I’m chatting to my coworkers and someone suggests some cool AWS gizmo to store our data more robustly, I’ll make a mental note to do a quick review of any domain specific terms once the conversation is finished. This helps me as an engineer because I can do some investigating into whether I think it’s a worthwhile move but it helps me more as a deaf person. How? Next time that tech, or the terms that surround it, come up in conversation I won’t have to do as much mental gymnastics to decipher what’s being said and I can just concentrate on the content of the conversation.

Deaf not dumb

Related to the last point, I’ll often make people “explain like I’m 5” when I want to be absolutely clear of the point they’re making. I’m pretty methodical at times so my colleagues need to be quite patient but in the end everyone benefits. I’ve been developing long enough to know that one of the most lethal blows to a software project comes in the form of assumptions. In my opinion, clarity is paramount.

Music to my ears

Being deaf definitely isn’t bad; it has some surprising upsides. One great thing is that I don’t need to stick headphones on to get in the zone. The hustle and bustle of a normal workplace can easily be ignored when it barely registers above silence. You could argue that this means I might look more approachable and therefore might get more interruptions but I find I’m more productive if I take occasional breaks from my screen anyway.

1 on 1

Sometimes the trickiest encounters are the simplest for most people. Ever pair program? It’s a great process for working through a non trivial task. Unfortunately, it can be a bit more work when deaf. If someone else is driving then they’re probably going to be looking at the screen, meaning their voice isn’t carrying towards me and I can’t see their mouth properly to get a bit of lip reading in. If I’m driving then I’m probably looking at the screen, meaning I have to keep turning back and forth to hear what my co-pilot is saying. I still encourage it in my team and try to pair program when it suits because I feel overall the pros outweigh the cons.

Programmers have this reputation of being socially awkward. I’ve found the opposite to be true in the majority of cases, though maybe I’ve been lucky. With that said, I do find a lot of people in the industry quite soft spoken. If you’re one of those people, please make an extra effort when speaking to someone like me in future. Also, try to recognise when someone has an issue communicating, in whatever way. Everyone in my work knows I’m the deaf guy, so they’ll really go the extra mile to communicate, but occasionally someone from a different office will travel over and there can be an initial fumbling through a few conversations until it sinks in that I’m not kidding when I say I’m deaf.

Fin

I’m convinced that lack of hearing is not a disadvantage but it obviously does provide unique challenges in life. Hopefully this post has shed a little light on the subject. Reading this back I’m wary of painting a negative picture. This industry is really great for deaf people, especially if you’re surrounded by the right people in a supportive company.

AGI speculations – where do we go from here?

Came across this little post which nicely summarises some current hypotheses about the future of Artificial General Intelligence. Worth a read.

Things Vim is fecking great at #912983772: Joining text

Joins

I love Vim. Have I said that before? I want to share another command that I use every single day. It’s extremely simple and, as is often the case with simple tools, very powerful.

J for Joins.

What it does

Simply, if I have two or more lines of text I can use J to join them together on one line. Let’s take some example text (note cursor is on the H):

Here is some
example text, spread over a
few lines.

I can join this in a few ways:
1. Execute 3J (Join 3 lines)
2. My preferred way, especially if dealing with a lot of lines, is to visually select the text first and then executing V2jJ (Visually select this line [V], go down 2 lines [2j] and Join [J]). V}J would also work a treat in this case and is essentially one less key press.
3. Do one of the above with gJ e.g. 3gJ. This actually changes the command to remove spaces which is useful occasionally. The example text would end up looking like this: Here is someexample text, spread over afew lines. That probably isn’t what you want in this case but I’m sure it’s obvious how automatically removing spaces might be useful.

Why it’s good

Like all great Vim commands, it’s mnemonic so you’ll not need to look it up once you’ve used it once or twice. Its real strength is apparent when refactoring. Combined with a good IDE (IntelliJ + IdeaVIM) and the other staple Vim commands, you’ll find that manipulating text becomes a pleasure rather than a chore.

Tell your friends to learn CS with edX’s (MITx) course on learning to program

There’s a great course doing the rounds for anyone looking to learn CS/programming. It uses Python and is taught by MIT. Most people who stumble across this blog probably won’t use it as it’s fairly basic, but it’d be a good idea to share it to any friends/relatives who have been looking to learn a bit of programming. It’s currently in week 2 so the discussion boards etc. will be a hive of activity for anyone who will need help as they go.

You can check it out here.

How to steal any developer’s local database

Stumbled across this on Hacker News. The summary is quote worthy:

This proof of concept shows why computer security is incredibly hard to get right. The attack depends on multiple software products all making very reasonable decisions about how they should work, but the way they interact with each other leads to a vulnerability.

The example, especially from a dev’s perspective, is beaut:

Source: How to steal any developer’s local database