I’ve been doing some form of programming since I was 12 or so, and eventually turned the hobby into a job.
Following is a conversation with Austin, a blind developer. I met Austin online, when I was asking for help with some programming problem. Austin is well known throughout the community for offering his considerable amount of experience to the people who are struggling with a problem. We talk about blindness and how it effects the life, programming, struggles to learn, AI and what it has to offer for us in the future, and artificial eyes.
Me: Let’s start with a simple question. Tell us a little about yourself?
Austin: Sure! I’m a gay blind professional programmer based in Seattle, doing low-level stuff. I’ve been doing some form of programming since I was 12 or so, and eventually turned the hobby into a job. My professional start was probably volunteering to do some work on a programming language called Rust that came out of Mozilla. Though hard to explain what that was about to non-coders, it was a really interesting 6 months and got me a couple good professional references. Outside of work, I do a lot with audio synthesis coding, and I like to cook and read a lot, primarily fantasy. There’s nothing like learning science to take the joy out of science fiction, though I did read a lot of that when I was younger and didn’t have such a detailed understanding of why the “we will have this tomorrow!” stuff that SF likes to do couldn’t ever work. At least fantasy is self-aware enough to say “it’s magic, shut up and enjoy”.
Unfortunately, the cooking doesn’t happen so much as it used to because of the pandemic and living alone, but home-made tortillas are amazing, and baking is lots of fun.
Me: So, what attracted you to programming? Most 12-years-olds do not have patience or interest in something like that.
Austin: Mostly that I could. I’ve always been interested in science of one form or another, going back as long as any of us can remember. Before I was old enough to understand that blind people couldn’t be electrical engineers, I was going to do that instead. But somewhere around 6th or 7th grade I found out that this old device called the Braille ‘N Speak 2000 that no one under the age of 30 even remembers had the ability to be programmed. I actually learned some very basic programming stuff before I even bothered with regular computers, because everyone who was trying to teach the regular computer to me couldn’t actually provide any immediate reason to use it. “this will be useful in 5 years” when you’re that young doesn’t mean anything, but “you can program it and it will do what you want” did, once I understood that you could program regular computers too. This was the very early 2000s, so the internet wasn’t nearly what it is now and they couldn’t really get into how cool things like Google are, and it was Florida so they didn’t really know the screen readers either and were just sort of fumbling through it with me and trying to force me to do typing exercises without any real reason. Everything else with tech was this hypothetical one-day thing, but programming was this immediately accessible hobby with lots of math and details and rules and things like that.
There is this sort of mindset some people have that I have never been able to describe to someone who hasn’t experienced it, where things like programming just make sense in the same way that I imagine a musician or an author wakes up one day and realizes that music or writing just works for them. That’s not to say you can’t learn programming without it, though. Just that, for me, there is something there that’s not about the practicality or the final output but the activity itself. You’ll hear about musicians who play for fun, and I’ve definitely done the programming equivalent: weird weekend projects with no practical application that you can’t explain to anyone without a ton of background just to see if it could be made to work. I think my favorite of those was the GPU-based pathfinder, which I always swore I’d blog about and still haven’t. But that’s okay–it’s not particularly practical, just interesting to the sort of person who would write an impractical thing because they woke up one morning and went “huh, that’s interesting, I bet…” One of the biggest disappointments and biggest triumphs was turning this into something professional, because for the most part “that’s interesting, let’s chase it” doesn’t have any use in the workplace. But on the whole the money is very worth it.
Me: Reminds me of Donald Knuth saying how some people just have the natural ability to understand this stuff, and how rare they are.
Do you think that people who start out programming early have an advantage compared to those who start out late? And is there an amount
of time, after which that advantage becomes meaningless?
For example, if someone were to start out at 12, and the other person
were to start out at 20, how much of a difference would there be as they both gained experience?
Austin: There’s the general understanding answer and the money answer. The money answer is: it doesn’t matter for a lot of reasons that have nothing to do with coding after a certain point. Being able to communicate ideas well, document, know when you’re wrong, and a whole bunch of stuff like that becomes more important. If you ever stop getting better at coding and you can get better at management, you can just leave the coding path and do that instead and in many places you end up making way more than the coders. There’s also a lot of stuff that we have around providing tools for people who can’t just look at it to still be able to make progress, for example there’s tons and tons of design patterns which are something to the effect of “If you have this sort of problem than you should” recipes.
But on the general understanding answer, I honestly don’t know. I’ve got a coworker who to my knowledge came to us with like a year of prior experience and she maintains our billing system. Someone I mentored went from basically not knowing anything to not needing my help in a year of 80-hour succeed or there is no food on the table weeks. On the other hand I’ve known people who have been coding for 10 years who are still where they were at day one. I will say that everyone seems to top out eventually, so the gap seems to lessen as time goes on. To put it another way, I think the first 10 years of experience are twice as valuable as the next 10 and by the time everyone involved is 40 they’re about the same, if you assume everyone had the same “I just get it” level going in. There is definitely a second career path available to such people though, where you double down on that and are the one who solves the really complicated problem that no one else on the team can solve for basically the rest of your life.
The people you’re around matter a lot too. I used to think this didn’t matter, but then I joined a company of people who are around my level and above, and over the last two years I’ve become a lot better at a whole bunch of stuff. It’s annoying to wake up and be told that you need to fix your code because insert long list of reasons, but it’s also a way to quickly gain experience that you really can’t get anywhere else.
Me: Do you think that the people with whom you hang around affects you, even over the internet?
Austin: I’m not sure what interesting answer to give here, because it seems to me that this is self-evident nowadays. Facebook is pretty bad for example, and Youtube isn’t much better. You really only need to look at the sudden increase in conspiracy theories and Covid misinformation, and it’s staring you in the face.
From the perspective of coding? I imagine so, but I did it all pretty much on my own. There were communities and stuff when I got started, but the early 2000s were a different time and they weren’t as easy to find. We didn’t have things like GitHub, a central place where probably over half of open source programming projects happen, for example. Everyone was just sort of off in their own corner. Over the last 10 or 15 years it has become vastly easier to find information, people, and projects. In fact when I was getting started we didn’t even have good collaboration tools really. There were some, but they were hard to use and primarily you’d only ever encounter them in a professional environment. In fact even programming itself was harder. Computers have become at least hundreds of times more powerful than they were when I started, enough so that an iPhone is equivalent to a high-end laptop from back then, and that has just really allowed our tools and programming languages to flourish. One of my first programming languages was Liberty basic, which despite the name was actually commercial, and back then buying your tools wasn’t that unusual. What I’m trying to say is that basically the prerequisites for good communities weren’t there at all.
In my experience, people tend to forget that the internet is really new. I’m turning 30 this month. When I was a kid, laptops were this luxury item and dial-up was only just becoming widespread. You’d go online and most things were someone’s single-page hobby site, and you’d have to log off if someone wanted to make a phone call. The big advancement that we had around the time I started programming was Broadband, and at least in my house we didn’t care about the speed, the cool thing was that you could stay online while whoever else talked to the family in Tennessee. I look at how kids are growing up now, what they’re growing up with, and it makes me feel old sometimes. When I was a kid we had small dinner parties and stuff even with acquaintances because back then if you wanted to stay in touch it was that or a phone call. My tower that I’m typing this on is a supercomputer by the standards of the 1990s.
As a blind person, Linux desktop is lame. Even the people using it have to apologize for all the accessibility issues when this comes up.
Me: So, there’s a lot of debate regarding which programming language one should start with. If it were up to you, which language would you choose to get your students started with programming?
But if you’re like me where the point wasn’t the end product, really anything is fine. I started with very old variants of Basic that required line numbers (though admittedly not so old at the time), then jumped to C, then decided there was no point in this programming thing unless you understood how computers worked from the ground up and decided the place to start was assembly. This was exceedingly impractical and I eventually realized that especially when I did start caring about the end result instead, but there was a lot of good info that I got from learning that way.
Me: Do you think it is best to move on to Linux eventually? And since you’ve been working in this industry for a while, you no doubt have dealt with Linux. How was your experience with it, compared to windows?
Austin: As a blind person, Linux desktop is lame. Even the people using it have to apologize for all the accessibility issues when this comes up. As someone sighted, maybe it’s great but I wouldn’t know.
For programming though, you do end up using Linux professionally. If you want to run anything that has a server it’ll come up. Mac isn’t an option because Apple makes it very hard to impossible to run VMs in the cloud, and Windows costs extra money on top of what you’re already going to spend and is several times more complicated. Typically this coding happens locally and then you push your code, and there’s enough ways to do Linux coding without actually using Linux that it’s not an issue. For example VSCode can connect over SSH and let you edit files, and then you just type commands in a terminal of your choice. In practice, everything high level is also somewhat platform independent at least for development. One example is Django, a Python framework for your traditional web stuff, which can run the same code on any desktop/server platform that can run Python. So there’s not really that much platform-specific stuff you need for a while unless you want to work in the areas that need that knowledge, and you know if you’re one of those people without me telling you.
The one thing that is super valuable though is knowing how to ssh a server and use bash, which is in a skill set called devops, where your job is to keep the servers running. For example at my current employer, everyone on the team has a week of on-call, which means being available 24/7 for a week to fix whatever issues may come up, and that does require knowing your way around.
Me: Can we apply advice like “Write daily!” to coding? Like “Code daily to improve!”?
Austin: Depends on the person. It works for some people. I can’t code every day no matter how much I might want to, but I’ve got a friend who can. I don’t think it’s that simple though. You also have to push yourself beyond where you’re comfortable, or you’ll just stay at where you are forever.
Me: I find that video, whether on Udemy or YouTube, is a horrible way of learning for us. What do you think is the best way to learn programming as a blind person?
Austin: For me, it was books. Before you ask, I am unfortunately too far along for me to be able to easily provide modern recommendations. The problem with this question is that I’ve found that blindness is something that everyone deals with very differently. The way I put it is that we’re not meant to be blind, so we sort of hack around it, and that leads to weird and quite unique places. But there’s definitely not that many options to start with, and I definitely agree that video is probably the worst for us.
Yes. Games are some of the hardest programming you can do especially without the ability to use things like unity.
Me: I’ve recently observed the trend of including the source code of a
program in a book inside a picture. The same thing for mathematical
equations. Do you think we might need to rely on old
books in the future?
Austin: I doubt it. We’re at the point where OCR is basically a solved problem and we’re building AIs like GPT-3 where “can the computer think” is now a serious question with an answer that’s not obvious and real-world AIs where the answer could arguably be yes. I expect that we’ll probably go as far as seeing an OCR-only screen reader using some sort of AI in the next 15 years or so, but if this ever became enough of a problem there’s no reason that someone couldn’t sit down and figure out a code-specific OCR for us. I doubt it will however, if only because there’s tons of places on the internet where code isn’t being put in images.
Alternatively something like GitHub Copilot takes off and half of us are out of a job, or AI takes off and we live in the AI eutopia where our children are amazed that we used to have this thing called a job, or we all die horribly from some man-made disaster, or who even knows. Suffice it to say it’s not something I even think about.
Me: At which point do you think a student can move on from knowing a language, to building stuff in it?
Austin: I’ve got no good thoughts on this one, sorry. Whenever you want, I suppose. Most colleges don’t really prepare you for the real world anyway. Being a student is great for theoretical knowledge but the practical stuff will only come through real-world experience, I think. The traditional education avenues are teaching computer science, which isn’t quite the same thing as what you end up doing outside school. You get very useful knowledge from something like college that let you do more interesting things than you’d otherwise be able to do, but for example lots of people graduate barely knowing basic real world tools like git that everyone has to know how to use.
Me: Since people like us don’t have vision, we can’t work on front-end positions where we might be asked to create designs. And yet, a lot of the bootcamps actually get their students started with the front-end. Do you think this actually poses an additional barrier of entry for us?
Austin: Certainly. I don’t think there’s really much to say here.
Austin: Not really. After a certain point–where I’m at–people kind of even stop caring what you know, and start caring that you’ve demonstrated the ability to learn. But in the case of trying to avoid things like being given a frontend task as a blind person, that’s not a technology issue, that’s an employer issue and isn’t something I’d worry about unless talking to them goes wrong somehow.
Me: A lot of people get into programming, because they want to make games. But a lot of the game building resources are not usable to us. What do you think someone should do in this position? Should they gather a lot of programming experience before they can start with such a project?
Austin: Yes. Games are some of the hardest programming you can do especially without the ability to use things like unity. But I’ve never found a good answer to this question, because so many of the introductory projects are visual and there don’t seem to be equivalents. I always found data structures and such to be interesting, which is how I got my start.
Me: What do you think about the approach of “Learn by doing”?
Austin: That at some point you have to, I guess.
Me: I was reading Coders at Work. In this book, a lot of the older programmers talk about how today’s systems have gotten so complicated compared to their own time, that they think it is hard to learn things. They also think that since a lot of the hardware is hidden by the layers, they think it is even harder to learn the hardware in this day and age. What is your take on this?
Austin: There’s truth to it, but without a more targeted question I’m not sure what to say. I wouldn’t say learning is hard, there’s just more places you can focus and it’s no longer the case that one person can know it all.
There is really no point in paying for knowledge at this point though, unless it’s coming with a really good teacher or credentials.
Me: you contributed to the rust compiler. Nowadays, a lot of developers don’t have enough knowledge to do this. Do you think that learning compilers is hard, since a lot of people make it out to be a trivial university project? (Of course, a compiler being used in the real world would be different than a student-created compiler in college.)
Austin: Everyone expects that I did something like a compilers class in college and then I went off and did the Rust compiler work. But actually I just showed up and was interested and it was all “this code needs to be cleaned up, how about you do that?” And I did. I wouldn’t say I “know compilers”, but honestly the tooling is good enough that if the thing you really want to do is write your own, you can just plug some pieces together. The Rust compiler is well beyond that point, but in so far as doing something basic you barely need the theory.
Me: Do you think that programming gets harder as you get older? Because I’ve seen a lot of older developers talking about it, and this is usually pointed out as the reason why they switched from their active role of developer. They say that it gets harder to keep up with new technologies, and the latest developments as they get older. What do you think about this?
Austin: I’m 30 and it hasn’t been a problem yet.
Me: Now, I’ve read and heard from a lot of people that you shouldn’t call yourself a “Programmer”. But these same people don’t tell what one should call themselves, if not a “Programmer”. Do you think that people shouldn’t call themselves “Programmers”? And if yes, then what term should they use?
Austin: Well, I mean programmer is kind of like “I write software”. it’s sort of a non-descriptive title, but as far as I’m concerned it comes with a sort of “I don’t know really” connotation. Coder is a bit more “I’m in the in-group”. I call myself a programmer though, to people who aren’t in the field. You just pick the most appropriate term for the current context.
Me: when it comes to developers, a lot of people keep them in disdain. “He just types all day long. What is so special about it? I can do it too.” To be honest, I’ve seen a lot of things like this for most of the IT people in a company, especially if the primary function of that company is not providing IT-related services. Have you encountered this attitude in the past?
Austin: Yes, but honestly most of the stories I could tell are covered by NDAs. That’s nothing special to me, just something that comes with the career.
Me: This question goes beyond programming. Recently, freelancing has gotten really popular. Speaking as a blind guy, what do you think our chances are in freelancing, if we focus on programming, testing, or writing related work?
Austin: Depends. I’ve never done much with freelancing myself. If you have a frontend person coding can be done, but you’re probably not going to find much without someone sighted to take on the visual parts.
Me: I have seen you share a lot of knowledge, (even if it is theoretical), with beginners, and pointing out the resources where they can get more details. Why do you do that?
This is even more baffling when you see developers in India price gouging just for sharing the theory of HTML and CSS, while not teaching anything practical.
Austin: I’m supposed to say something uplifting and inspiring here, but really I just enjoy explaining things to people. I was going to become a professor once upon a time, but my life derailed before I could do education beyond the Bachelor’s degree so that never happened.
There is really no point in paying for knowledge at this point though, unless it’s coming with a really good teacher or credentials. If you want basic HTML or whatever you can find literally hundreds of thousands of resources on it of one sort or another.
Me: A silly question. Is it possible to produce music through programming? It’ll be really great to just type out the source code, and compile into a playable file like MP3. *Wink, wink*
Austin: Yes, but it’s less practical than it seems because music is fundamentally 2-dimensional. But if you want to get into that, csound and Zel are good starting points.
Me: Back to the serious questions. How important do you think it is to take a rest? I know several people who just jump from project to project, never watch a movie, don’t talk about sport. It seems to be an unhealthy attitude to me. What are your thoughts on this?
Austin: It’s certainly not good, no. But how bad it is really depends on the person. I’ve met a lot of people who can just keep going like that and they’re fine.
Me: I’ve seen some people advising that beginners should pick up chess, with the rationale being the game helps in training the mental muscles, and those same muscles can be used for a lot of things in life in general. Do you think that this advice actually makes sense?
Austin: Not at all, no. Just code instead. Maybe chess exercises something that helps, but you might as well not bother doing the unrelated thing that helps some when you can do the thing you really want to do and that helps all the way.
Me: Do you think that the ability to learn human languages can impact how fast you pick up a computer programming language? I’m aware that they might not have much in common.
Austin: I’ve heard this a lot. I’m not multilingual, but I did do some Spanish in college and I’d say these are entirely different. Programming is all about rules, but really human languages are all about exceptions to the rules.
Me: A lot of the languages since the 90s didn’t get ISO standards. I’ve seen old timers get rankled because of this. Do you think that having an ISO standardized language is really that important?
Austin: No. No one has cared about ISO standards in a very, very long time.
By the time you’re done doing it, the people who didn’t go through the ISO process and just wrote their own spec down are miles ahead of you.
Not sure who these old-timers you keep referring to are, but they must be really old. I’d say that this hasn’t mattered since the early 2000s at latest.
Me: Let’s talk about math. Do you think that math is harder for blind people for some reasons? And if yes, then what are the difficulties which one might face while trying to learn math as a blind person?
Austin: Yes. The difficulties depend on the student. My high school trigonometry textbook was 93 1-inch-thick volumes. If you have access to accessible resources it’s okay, otherwise it’s nearly impossible.
Fortunately when it comes to programming itself, the math is usually not that important.
Me: Do you think it is possible to self-teach math? Not to the level of calculus. But at least to the level of algebra?
Austin: Honestly? Probably not. I’d say self-teaching after algebra is easier. There’s a lot of concepts and things that you don’t know you don’t know before then.
Me: How do you deal with graphs? They come up in all sorts of fields, from math and economy to programming. So, it is important to learn to deal with them, since graphs don’t play nice with screen readers. So how do you do that?
Austin: I avoid them or ask for sighted help. Honestly, it almost never comes up for me in my job or anything like that.
With a bit of practice and some calculus there are various tricks for visualizing functions and you can often just read the sequence of numbers, as long as you’ve had exposure to visual graphs before.
I’ve written the occasional script to do some number crunching to make up for it, and there’s also things like ministat which you can pipe a list of numbers into and get quick statistics; if you understand the standard deviation, you can get a really quick qualitative idea just with that.
Me: Let’s talk about living as a blind person. The first thing I would like to ask you regarding this topic is, how did you lose your vision? If you don’t mind me asking that, of course.
Austin: I was born blind. I’ve got a genetic condition called Leber’s Congenital Amaurosis.
Me: You implied that you live independently. Did you receive any training to deal with day-to-day life without sighted help? Or does this come naturally to you?
Austin: I do live independently. And I’ve got about 15 years of training of some sort or another to make that happen. I think you can learn it on your own if you start as an adult, and if I’d started at 20 maybe I could have done it in 5. You either need training or opportunities to practice.
Me: Do you think that Braille is still important in the current technological era? Since it is the only way for us to learn writing, besides typing on a keyboard.
Austin: Yes. Not really much more to say here without me doing a whole project to try to dig up various research things again, but suffice it to say that you have to learn spelling and formatting somehow.
Me: Do you think that braille is harder to learn than writing with a pen or pencil like a normal person? Or maybe, it is harder to teach?
Austin: Grade 1 braille is too slow to be efficient and makes even short novels take up entire bookshelves. Grade 2 braille fixes this but is something or other hundred symbols and a giant list of rules and exceptions. Need I say more?
Me: Okay, I usually try to keep a lid on this during an interview. But I can’t help it here. I personally hate it when I have to use a touch screen. Mostly because I lose my accuracy and speed while dealing with it. What’s your take on this?
Austin: I mostly don’t use my phone. That’s part of why, but there are advantages; if you know where the thing you want is then you can jump to it directly. That can be nice sometimes.
Me: Do you think that computer accessibility has been reduced in recent times? Or it is just the jaded eyes of an experienced user, since when you learn to use a computer as a blind, it seems wonderful, and nothing is unreachable to you, and everything has boundless potential.
Austin: Tough question. I’d say that it’s reduced as a percent of accessible software, yes.
Me: In recent years, audiobooks have taken off among the sighted and blind people alike. Do you prefer audiobooks, or prefer to read with your screen reader?
Austin: I read with the screen reader because I read too fast with it for audiobooks to be productive or interesting anymore.
Me: You mentioned AI earlier. Can you go into more detail regarding AI use on a screen reader?
Austin: I mean… Yes and no? it’s early days. But we do have a handle on lots of things now. In theory you could start looking at training a neural net to recognize controls for example. My thoughts here are more like this: screen readers are a computer vision problem. OpenAI is busy building things where we have to seriously start asking whether computers are thinking now. At some point “AI screen reader” is just going to be a boring problem.
Me: Do you think it would be better to produce a solution to cure blindness and other disabilities, rather than provide workarounds for such people? And do you think it could be profitable? Since profit is the sole motivation of a business.
Austin: Profitable? Depends. A good idea? Certainly. I’d advocate for spending all the funds we possibly could there instead of on workarounds, except that doing so wouldn’t make it happen faster.
Me: Do you think that writing has the potential to make money? Especially since the novels are being published online, and progression fantasies have become very popular. (Admittedly, a writer would be best to ask this question, but I thought it couldn’t hurt to put this out to you as well.)
Austin: I can point at low-quality webnovels which make 6 figures a year via Patreon.
Me: Let’s talk about retirement. At my age, when I bring up this topic, people yell at me that “You’re so young! You shouldn’t think of your retirement yet!” But I feel that it is a bad move to not make preparations for it. Do you think that we should make preparations for our retirement early? And what should be the general plan which one may follow for making such preparations? (No need to give all the details. Just some pointers would be good.)
Austin: O, certainly. The thing about being a programmer is that you have enough to retire young. My personal plan is to be out somewhere between 40 and 50.
This is where I say “get a financial planner” but also have to admit that I manage my own investment accounts. I do suggest getting a planner though; I spent a long time watching and thinking before I did anything. My accounts haven’t been going long enough for me to provide better advice than that, and I’ve started doing this during Covid which has the markets doing all sorts of odd things.
If you don’t want to use a financial planner, you won’t do too bad making sure to max out workplace retirement plans if applicable, and finding something like the Vanguard Retirement 2060 fund where you can just put money. But that’s a gross oversimplification, and this topic is too much to cover here.