#102 Jen Luker is a relentless accessibility advocate
Transcript
Thanks a lot Jen for organizing the transcript ❤
Jen Luker 0:00:00.2
Oftentimes that’s where you would find any woman developer, it would be on the front end because, as I was told at the time, “Why don’t you go do the pretty, little things and leave the programming to the men.” So… more reasons why I didn’t consider myself a programmer for years.
Intro music 0:00:14.9
Tim Bourguignon 0:00:22.4
Hello, and welcome to Developer’s Journey, the podcast bringing you the making of stories of successful software developers to help you on your upcoming journey. My name is Tim Bourguignon, today I receive Jen Luker. Jen is a Senior Front-End Engineer, a conference speaker, a fellow podcast host, and advocate for all things accessibility, lover of processes that make doing the right thing easy, and a fierce knitter. Jen, welcome to Dev Journey.
Jen Luker 0:00:51.9
Hello!
Tim Bourguignon 0:00:52.7
So this show exists to help the listeners understand what your story looked like and imagine how to shape their own future. So we do that by going back to your beginnings. Jen, where would you place the start of your developer journey?
Jen Luker 0:01:08.5
I technically have two starts to my developer journey.
Tim Bourguignon 0:01:11.1
Ooh.
Jen Luker 0:01:12.3
One of them is as a child. My father was deeply steeped in old computer technology like bank computers, big mainframes. So we always had a computer at home. My first one was, like, my first personal computer was a Commodore 64 that was in my room and I learned how to code out of magazines that used to have, like, basic programs that were, like, simple MUD games essentially. So…
Tim Bourguignon 0:01:45.6
Mm-hmm (affirmative), Mm-hmm (affirmative).
Jen Luker 0:01:46.8
I had a lot of fun with that. I did that all the way through my adolescence. I don’t know, after high school I kind of took a break for, like, 7 years and then I got back into college and started taking some courses and then got my first job, before I graduated college, as a developer in a very small but successful, like, online newsletter for vacation deals.
Tim Bourguignon 0:02:13.3
Let’s unpack this a little bit.
Jen Luker 0:02:15.5
(laughs) Yes.
Tim Bourguignon 0:02:16.7
So you started programming on your own with a C64?
Jen Luker 0:02:21.1
Yeah.
Tim Bourguignon 0:02:21.1
As a teenager?
Jen Luker 0:02:23.1
Using Basic when I was like, 7 or 6. So by the time I was 9 I really wanted Donkey Kong but my parents wouldn’t buy it for me because it was expensive.
Tim Bourguignon 0:02:34.3
(laughs)
Jen Luker 0:02:35.4
So I programmed my own version and there was no princess at the top. This girl does not need saving. So, there was a prince instead and I saved him. But yeah, so that was essentially the beginnings of my love for programming and all through… after that, as the web became “the web” and developed, I dove right into websites, you know, back a long time ago, like Window 3.0 and 3.1 and 3.1.1 age. So, I uh...
Tim Bourguignon 0:03:12.5
Mm-hmm (affirmative).
Jen Luker 0:03:13.6
Back when there were Telnets and not modems.
Tim Bourguignon 0:03:17.0
Ooh, okay.
Jen Luker 0:03:18.5
(laughs) Right?
Tim Bourguignon 0:03:19.9
That far back.
Jen Luker 0:03:21.2
That far back.
Tim Bourguignon 0:03:22.8
I remember typing programs from magazines, as well. And then searching for hours where I misspelled something-
Jen Luker 0:03:30.0
Agh!
Tim Bourguignon 0:03:30.2
And just wondering why it didn’t work. (laughs)
Jen Luker 0:03:32.5
Yep, yep, because you had to write the entire thing and then hope it compiles at the end.
Tim Bourguignon 0:03:39.0
Absolutely.
Jen Luker 0:03:38.4
And if it didn’t compile it’s not like it had easy messaging to tell you where you broke it-
Tim Bourguignon 0:03:43.3
(laughs)
Jen Luker 0:03:43.3
It was literally combing through every line of code to try to find it. It was awful. I don’t know how the devs before us did it.
Tim Bourguignon 0:03:50.3
Nope, I don’t either. I’m quite happy that my programming experience started with the web and not too long before.
Jen Luker 0:04:00.2
Right?
Tim Bourguignon 0:03:59.8
I wouldn’t have survived otherwise.
Jen Luker 0:04:01.4
Yeah…
Tim Bourguignon 0:04:02.2
(laughs)
Jen Luker 0:04:02.5
It’s like C++ is fun and all, but before C++ was C, and before C there was, like, Fortran and… I’m very grateful for JavaScript and PHP which is where I spent most of my coding career up until the last few years.
Tim Bourguignon 0:04:17.3
So how did that come to be? You said you went to college and studied, probably something related to computer sciences and then you drifted away?
Jen Luker 0:04:26.2
Yes. So there was a move across the country a couple of different times in the middle there which meant that each time I moved I had to regain residency in the new state where I lived, that would take 1-2 years depending on the state you went to and the college you went to. So by the time I moved, I had to wait 2 years and at about the 2 year mark, I actually moved back which meant I had to wait another 2 years and by then I was so deep into my career there was really no point in getting the degree.
0:04:51.9 So I started with a double major Bachelor/Master combo that basically means I’ll never graduate.
Tim Bourguignon 0:05:01.0
(laughs)
Jen Luker 0:05:01.5
In Computer Science with an emphasis in Software Engineering and then Applied Mathematics with a minor in Physics. So I went to, like, the absolute hardest route one can go.
Tim Bourguignon 0:05:11.9
(laughs) It sounds like it.
Jen Luker 0:05:13.6
Which also adds to the fact that I’m never going to graduate.
Tim Bourguignon 0:05:16.1
Why did you choose this path?
Jen Luker 0:05:18.4
It was exciting and interesting and I really had a deep love for a woman named Ayanna Howard. In fact, my first Geocities website was a fan website for Ayanna Howard. She was the computer engineer who developed the minds for the Mars rovers when she was in college.
Tim Bourguignon 0:05:40.4
Mm-hmm (affirmative).
Jen Luker 0:05:41.2
So, incredible woman. She’s now a Georgia Tech, head of their engineering department, I think. Fantastic woman, definitely look her up. She was a “Top 30 Under 30” and the whole deal. So, with that, I really wanted to go into programming the minds and trajectories of interstellar satellites, like Cassini, for instance.
Tim Bourguignon 0:06:01.4
Mm-hmm (affirmative).
Jen Luker 0:06:02.2
So in order to do that, I needed to be able to program; and I also needed the physics to be able to tell the computer how to get there; and then beyond that, because of the time differential between when you send information and when the robot would receive the information, you have to teach a little bit of AI. So it was the very beginnings of things like fuzzy logic and trying to teach a computer how to figure out what “hot” is, or “too hot” without giving it an actual number.
Tim Bourguignon 0:06:31.0
Mm-hmm (affirmative). Mm-hmm (affirmative).
Jen Luker 0:06:31.5
So that was all the things that I loved. And I moved. I never actually finished.
Tim Bourguignon 0:06:35.5
(laughs) Okay, so let’s dive into your career!
Jen Luker 0:06:40.2
Yes!
Tim Bourguignon 0:06:40.9
How did you land on your feet, first? And then how did you go from there?
Jen Luker 0:06:44.7
Pure luck; and it was much easier back then than it is now. So back then I basically was writing HTML programs, partly for fun, partly for the company I was working for in technical support at the time, to develop a knowledge base; and I got really tired of having to write the exact same header on the same HTML page every single time.
Tim Bourguignon 0:07:07.9
(laughs)
Jen Luker 0:07:09.0
So I was looking it up and I learned that if you just change .HTML to .PHP, you could use this line that would just include another file and then I could have a header and I could even pass it parameters and it would just stay up to date and I wouldn’t have to write it for every single thing. It was magic. (laughs) That’s the beginning of my entire PHP career.
Tim Bourguignon 0:07:34.3
(laughs)
Jen Luker 0:07:34.3
It was just getting tired of writing a header over and over again.
Tim Bourguignon 0:07:37.6
You know what they say: “Software developers are the laziest persons in the world.” (laughs)
Jen Luker 0:07:42.8
Exactly! And we excel the more lazy we get.
Tim Bourguignon 0:07:45.8
Yes, we do. (laughs) Why PHP and not something JavaScript-y back then?
Jen Luker 0:07:51.8
Well, because JavaScript was somewhat limited to things like a blink tag, or, you know, which was HTML, but you could make things blink. You could sometimes trigger things. It wasn’t used in the same sort of framework format that it is now.
Tim Bourguignon 0:08:06.6
Mm-hmm (affirmative).
Jen Luker 0:08:06.6
It had a much more limited feature base. It wasn’t meant, at the time, to be what we use it for now.
Tim Bourguignon 0:08:15.4
Mm-hmm (affirmative).
Jen Luker 0:08:16.2
So it just, it didn’t exist. By the time I was doing this in like 2003, 2004, 2005, JavaScript existed but it just wasn’t widely used for anything beyond really basic interactions. Maybe do some math and it’d output something. It just, it wasn’t deeply used. And then things like jQuery came out and MooTools came out and people started to see what JavaScript could really do and being able to get deeper and deeper into it was cool but it still wasn’t a job, like, you had to know something else. It wasn’t just HTML and JavaScript, you had to know something else to be considered a programmer, you know? Heck, being on the web as a web programmer wasn’t even considered being a programmer unless you used something like C#. So-
Tim Bourguignon 0:09:01.3
(laughs)
Jen Luker 0:09:01.7
The fact that I used PHP meant that I didn’t actually consider myself a programmer for years after I became a professionally paid programmer.
Tim Bourguignon 0:09:11.5
Okay, and how did you describe your profession back then?
Jen Luker 0:09:15.3
It wasn’t “Software Engineer” it was, like, “Web Developer” and that was pretty much it, and web developers weren’t seen as programmers, you just developed websites. It’s not like it was a Microsoft product or something.
Tim Bourguignon 0:09:27.7
Hmm.
Jen Luker 0:09:28.2
So the world was a different place. Things were seen differently than they are now. Just like, you know, 5-10 years ago the front end was still considered all pretty and design-y and, you know, not really hard work even though it took a lot of brain power to make all of the websites work on all of the browsers-
Tim Bourguignon 0:09:47.9
(laughs)
Jen Luker 0:09:48.6
When IE6 ruled-
Tim Bourguignon 0:09:50.0
(laughs)
Jen Luker 0:09:50.6
And you had all of the others that did things differently, right? So you had to, like, write a new CSS file for every single browser, essentially-
Tim Bourguignon 0:09:57.3
Yes. (laughs)
Jen Luker 0:09:58.1
Back then. Yeah. So it was hard and it was difficult and it was tedious and, therefore, it was left up to those that they didn’t see as “programmers”; and oftentimes, that’s where you would find any woman developer, would be on the front end because, as I was told at the time, “Why don’t you go do the pretty, little things? Leave the programming to the men.” So…
Tim Bourguignon 0:10:18.9
Ooh.
Jen Luker 0:10:20.0
Yeah! Thus, more reasons why I didn’t consider myself a programmer for years.
Tim Bourguignon 0:10:24.1
I would understand that. (laughs)
Jen Luker 0:10:26.3
(laughs)
Tim Bourguignon 0:10:27.3
The petty wars between VI and Unix and-
Jen Luker 0:10:31.6
Mm-hmm (affirmative).
Tim Bourguignon 0:10:32.4
If you’re not using any one of those and you’re using VS Code then you’re not a real programmer, either.
Jen Luker 0:10:37.0
Right? I use Nano. (laughs) And then-
Tim Bourguignon 0:10:38.2
(laughs) There you go!
Jen Luker 0:10:41.0
I mean, like, way back it was, like, TextPad. I coded almost all of my websites using TextPad, not even TextPad++ where it had, like, color coding, just TextPad. And I manually put in every single one of those tabs, not spaces, to make it work. (laughs)
Tim Bourguignon 0:10:56.3
(laughs) So you’re a “tabs, not a spaces” person.
Jen Luker 0:11:02.5
I’m, at this point, I’m a “I don’t care. I hit the tab key and my IDE handles how many spaces there needs to be. (laughs) Whatever Prettier wants, Prettier does and I do whatever I want.
Tim Bourguignon 0:11:15.5
That is right. That’s right.
Jen Luker 0:11:16.7
I just, I’m kind of one of those really old school people that just doesn’t care. Like, I care to an extent. Like, if you didn’t indent your code, you and I were not friends. I didn’t care how you indented it as long as it was but that was basically the extent of my argument.
0:11:33.4 I felt, for a long time, that I didn’t really have enough deep knowledge as to why things were the way that they were to be able to have an opinion or have an argument on which preferences were better. And as I got to be an increasingly more experienced developer, I learned that they were just ways to try to make code all look the same; and the reason why you want code to look the same is so that it takes out of your mind what the pattern is supposed to look like, you just kind of know. If it’s a component, it starts with a capital letter. If it’s not a component, it doesn’t. It makes it easier to look at a large codebase and understand what things are. So that was basically the sheer extent of my opinion and that’s why, again, I’m a huge advocate for Prettier and ESLint. Do it whatever way you want and let it fix it because in the end it doesn’t matter as long as everyone agrees, and you can kind of walk through your codebase and roughly know what things are.
Tim Bourguignon 0:12:29.8
Agreed.
Jen Luker 0:12:30.1
So I’m open minded as far as my opinions go. It’s like, “What is it you want? Let me turn on Prettier for that.”
Tim Bourguignon 0:12:35.8
Mm-hmm (affirmative). But you describe this as “old school”?
Jen Luker 0:12:38.4
Old school you had a lot of deep arguments about these things. People had really strong opinions. It really mattered how it looked, how things were formatted because you didn’t have Prettier or ESLint or even IDEs that would do it easily for you. Like, you would have Dreamweaver eventually, if you could afford it, but even then you didn’t have a lot of formatting control. So how code looked was very, very unique. You could literally look at a codebase and know who wrote which pieces based on style. It was like a fingerprint.
Tim Bourguignon 0:13:13.1
Mm-hmm (affirmative).
Jen Luker 0:13:12.9
It was very clear. The problem with that was you had to adapt what you thought something was, or was supposed to be, on each person that coded it over time and, I mean, it takes spaghetti code and makes it way worse because there wasn’t even a naming convention or a format or camel case or tabs or spaces to begin with, at all, between people, on the same team, over time. So it could get really hairy because sometimes things were capitalized and sometimes things weren’t and if you had rules, who knows?
Tim Bourguignon 0:13:45.8
Mm-hmm (affirmative).
Jen Luker 0:13:46.4
Who knows what it could be.
Tim Bourguignon 0:13:47.1
And then you have code ownership, or lack thereof-
Jen Luker 0:13:50.7
Oh!
Tim Bourguignon 0:13:51.1
And then you start doing both at the same time and it’s a mess. (laughs)
Jen Luker 0:13:54.2
Yeah! I mean, there wasn’t even, like, turtle which was a relatively early SVN, and SVN was really, really new. Most people still didn’t use them. So it was like, modify on production. (laughs)
Tim Bourguignon 0:14:07.2
(laughs)
Jen Luker 0:14:09.2
Wild West!
Tim Bourguignon 0:14:13.4
Yes, I remember FTPing from my machine and doing some changes directly in prod and then saving this.
Jen Luker 0:14:20.5
Oh yeah.
Tim Bourguignon 0:14:22.4
Yeah, that was…
Jen Luker 0:14:22.4
That was, like, the only way to code.
Tim Bourguignon 0:14:24.4
Yes, it was.
Jen Luker 0:14:25.9
And then we figured that was really awful so maybe we should copy and paste it onto staging first; but then we realized if we pasted it onto, like, a separate server, that we still didn’t have a way of going back so then it was copy down everything and then copy up the new things and then we had the old version and it was like, 17 versions ago because we just wanted to fix one thing. Like, you could lose an entire day’s worth of work really fast.
Tim Bourguignon 0:14:47.9
(laughs)
Jen Luker 0:14:48.7
Ugh. At this point, all I have to say is any sort of versioning of your codebase was- is beautiful and magical and a lifesaver. (laughs) And I love it.
Tim Bourguignon 0:15:01.6
Mm-hmm (affirmative). Do zip files count?
Jen Luker 0:15:04.0
No, no.
Tim Bourguignon 0:15:05.3
(laughs)
Jen Luker 0:15:05.9
No, they do not. I mean, there are now ways to be able to comb through zip files and find out what changed. But do you remember what changed in your codebase 3 days ago, down to the line? I don’t!
Tim Bourguignon 0:15:16.8
No, I don’t either (laughs)
Jen Luker 0:15:17.7
Let alone trying to compare two files, you’d have to walk through line-by-line, there was really no comparison.
Tim Bourguignon 0:15:23.3
Mm-hmm (affirmative). But I found a zip file on a CD-rom somewhere from 2003 or 2004 when I was halfway through my University and that was one of the projects we did. And I could still run it on my machine if I had used something like SVN or Tortoise or whichever, I guess I wouldn’t have kept the repos so long.
Jen Luker 0:15:46.4
(laughs)
Tim Bourguignon 0:15:48.1
But I kept the zipfile. So, see? It can have some advantages, as well. (laughs)
Jen Luker 0:15:52.6
I have 5 1/4 floppies!
Tim Bourguignon 0:15:55.2
Oh, you do?
Jen Luker 0:15:56.0
Yeah, I have 5 1/4 floppies and then… Well, 5 1/2 and then 3 1/4 , Yeah, 5 1/2 inch floppies that had old, old, old websites on them, and then I got, like, 3 1/4. Oh I don’t even know why they still called them floppies, they weren’t floppy anymore, they were hard shelled.
Tim Bourguignon 0:16:13.5
They were hard, yes.
Jen Luker 0:16:14.1
Like, you didn’t have to worry about things just ripping out of it, it was great! However, oh and it was much bigger! It had more space, it was really cool. You could, like, save an entire image to it. It was so amazing.
Tim Bourguignon 0:16:25.4
For the younger listeners, you had a 3D-printed version of the save icon.
Jen Luker 0:16:29.2
Uh, yeah, you did.
Tim Bourguignon 0:16:30.1
(laughs)
Jen Luker 0:16:30.6
And that's how you saved all of your information.
Tim Bourguignon 0:16:32.4
Yes.
Jen Luker 0:16:32.4
That’s how you got your OS onto your system. It was crazy.
Tim Bourguignon 0:16:35.6
(laughs) 24 floppies to insert on the A: drive, one after the other.
Jen Luker 0:16:42.0
My dad used to pay me every week to build, like, 5 computers after school one day; and then the next day he’d hand me, like this entire box of discs and I installed DOS on every single one of them. So, and it would take, like, hours because you had to, like, flip out the discs for each portion. It’s like, “Okay, now flip back to disc 37!” You know? It was crazy. So I would, like, start with one and then once the first disc was done I’d put it in the next one and put the second disc in the first one, and like, get them all arranged.
Jen Luker 0:17:11.4
See, when people say, “The good old days” I’m still trying to figure out what they’re talking about-
Tim Bourguignon 0:17:14.3
(laughs)
Jen Luker 0:17:15.2
Because everything was really hard! And yes, everything was magical because it was all brand new and cool and if you figured out some way to make a file smaller or faster you had so much more space on your tiny little drive to be able to put something else on, so it was seen as really cool.
0:17:33.0 Like, the origin of hackers is actually people that would do cool things like make old mainframes that still used punch cards, make music because it would make different sounds based on which hole was open so you could make them make music just based on the positioning of punch cards. They didn’t matter, like the programs were broken and didn’t do anything, but man it sounded great, you know?
0:17:58.5 Or trying to take a file and removing 6 lines from it that were unnecessary and like, streamlining it was just, I mean, that could save you 30 cards. I’m grateful for it now. We have the ability to version software, we have the ability to debug our tools, console.log does more than just show you the printout, it has cool tools built into it now, you know?
Tim Bourguignon 0:18:17.7
Mm-hmm (affirmative).
Jen Luker 0:18:17.7
You can do really amazing things. You have the ability to use, you know, web extensions, and just various bits of software. You don’t have to literally comb through every line of code anymore, you have proper error messaging. And y’all complain that the error messaging is bad now? At least there's error messaging!
Tim Bourguignon 0:18:36.2
(laughs) Yes, yes.
Jen Luker 0:18:38.6
Point is, is that my origin story is based, like, way back in the early days of the web and it was much easier to be able to get into it because you didn’t have to understand and test against all of these major frameworks. And there were people that were involved in it but not a lot of people that dove into it necessarily as their job. Like, there were a lot of people that would go through and modify their MySpace profiles to be ridiculously cool and no one considered them programmers, they were just MySpace people. But they literally hacked the system to make incredible things!
Tim Bourguignon 0:19:12.9
Mm-hmm (affirmative).
Jen Luker 0:19:13.5
And so many of those people went off to be like bankers and nurses and other really, really cool professions that we need, but not a lot of them became programmers, partly because of the fact that we didn’t consider them programmers.
Tim Bourguignon 0:19:27.2
Mm-hmm (affirmative). Did you live this MySpace-tweaking era?
Jen Luker 0:19:31.0
Uh, well. I watched it, but I wasn’t so much part of it. I was a little, tiny bit older than that, but I was also a little bit too young for some of the others even earlier.
Tim Bourguignon 0:19:41.6
Mm-hmm (affirmative).
Jen Luker 0:19:41.8
Do you remember IRC?
Tim Bourguignon 0:19:42.9
Yes.
Jen Luker 0:19:43.6
Yeah, good stuff.
Tim Bourguignon 0:19:44.7
I heard that Automatic, so the company behind WordPress-
Jen Luker 0:19:48.9
Yes.
Tim Bourguignon 0:19:49.2
Still uses IRC as their main communication system.
Jen Luker 0:19:54.3
I liked IRC.
Tim Bourguignon 0:19:55.9
Mm-hmm (affirmative).
Jen Luker 0:19:55.0
And it’s also odd ‘cause it’s like, a cross between modern chat programs and message boards.
Tim Bourguignon 0:20:01.0
Mm-hmm (affirmative). Yeah, it’s still very well designed and you could argue that Slack and all the modern tools we have today, is just a different front end on exactly the same system, more or less.
Jen Luker 0:20:15.5
Yeah, it is. It’s great. I like it. It was like, coming back to the days when you could just talk to people. Like, I used to, again before modems, when there were TelNets, and TelNet is where you take your handheld, you know, where you had wires coming out of your phone, and you would, like, put it on top of this dock and when you pushed numbers on your phone it would make the beeps that would tell the dock what address you’re essentially trying to call…
Tim Bourguignon 0:20:41.9
Mm-hmm (affirmative).
Jen Luker 0:20:42.4
And then it would call over, you know, a wired connection, someone else’s phone who was also connected to the dock who would then pick up and be able to connect, essentially, to a computer. So I figured out a way to get into the local University’s TelNet system so that I could use their servers to talk to someone who was at a University in Sydney, Australia. I couldn’t have been more than like, 10 or 11.It was really fun, really fun. And eventually, they just gave me my own password so I would stop hacking into their system. It was great.
Tim Bourguignon 0:21:13.3
(laughs) Is it considered, or was it considered, part of the phreaking, so again free communications on the style forms?
Jen Luker 0:21:22.7
Yes, but in a different sort of way. Like, the web wasn’t really a major thing at that point and IRC was even relatively young and new. It wasn’t like you could just hop on the web and message your friend and say, “Hey, wanna meet at the mall later?” You know?
Tim Bourguignon 0:21:36.9
Mm-hmm (affirmative).
Jen Luker 0:21:37.6
You both had to have it, you both had to have it set up at the time and it took up your phone lines so you wouldn’t be able to receive a call the entire time you’re on whatever web systems you’re on. And that was before modems were wired in and you still couldn’t receive a call. So it was really early. The only people who had anything remotely resembling the web was the universities and military. I don’t know…
Tim Bourguignon 0:21:59.4
As you say, I think we can summarize this with “the good old days.” (laughs)
Jen Luker 0:22:03.3
(laughs) The good old days, yes.
Tim Bourguignon 0:22:06.5
The good old days. So, let’s go back to the good new days.
Jen Luker 0:22:11.9
Yes, good new days.
Tim Bourguignon 0:22:12.6
So fast forward a few years. You’re now settled and doing front end engineering.
Jen Luker 0:22:19.2
Mm-hmm (affirmative).
Tim Bourguignon 0:22:19.8
How do you learn? How do you get on the page with new things happening every day?
Jen Luker 0:22:25.7
Well, again, if you’re fast forwarding a few years, I was still what they would call a full stack engineer because the IT side of things was still not wildly complex so you could kind of figure it out although it was much better to have an actual IT person, and then from that infrastructure down to actually running all of your APIs and systems, which is where the PHP came in, I had PHP APIs; and then moving onto the front end you also had PHP, and JavaScript, and HTML, and CSS, and all the languages you’ve got now, just older.
0:23:01.9 So I was much more of a full stack engineer which meant that I controlled, like, the entire website from front to back.
Tim Bourguignon 0:23:07.9
Mm-hmm (affirmative).
Jen Luker 0:23:08.3
As far as how did I learn, a lot of that was just by trial and error and talking to other people. Like, Stack Overflow was still not necessarily a thing. You didn’t Google things, you searched things, but yeah, a lot of it was just looking at other people’s source code and then trying to deconstruct it and then make it cooler.
Tim Bourguignon 0:23:28.1
Mm-hmm (affirmative).
Jen Luker 0:23:28.6
And when that stopped being so much of a thing then collaboration became a lot more important. Seeing what people were doing, asking lots of questions, starting the intros of, like, pair programming and seeing what you could build together. Sometimes that just comes down to having a really good designer, because when you’re stuck in the middle of the code it can be difficult to come out of it long enough to see that what you’re coding is ugly and difficult to use.
Tim Bourguignon 0:23:53.4
Mm-hmm (affirmative).
Jen Luker 0:23:54.0
So a lot of it was someone imagined that they thought something was cool and they wanted to do it and then you figured it out and it was ugly and it was difficult and that whole concept of “make it work, make it right, make it fast” was much more of a thing; because usually you hacked it together and then you had to rewrite the whole thing because no one was ever going to be able to, you know, use that beyond what your mock was, or your prototype, and then you started debugging and fighting with all the problems with what it was that you built. So…
Tim Bourguignon 0:24:25.5
You said “was a thing”, so doing the make it work, make it right, make it fast, “was.” Is it not still the case? I mean, with the whole Agile and CO., and iterative development, it’s pretty much the way we’re handling things right now.
Jen Luker 0:24:42.1
Eh, I feel like there’s a big difference between “make it work” and “make it right now” and I feel like there’s the all glorified version of “make it right” that you’ll never actually achieve because there’s no pure perfect way of writing anything. There’s close, but close you’re going to laugh at in 5 years, or even 6 months you’re going to look back and go, “I don’t even know what I was thinking!” So as far as making it work, we understand at this point because of agile processes that you’re going to have to iterate on what it is you’re coding now.
0:25:14.8 So we don’t have to, or we can’t get away with using chewing gum and duct tape to try to get this thing to function, just barely. It has to be at least half right before it can make it to production, before you can share it with anyone else. I mean, that’s also part of the beauty of PRs, right? The fact that it’s like quick collaboration between different developers. You get it to work, and then you clean it up a bit and then you show you it to the other developers and they all come back and say, “Hey, but we could do this and we can modify this, and this would make it better and this would make it cleaner, and then we could all reuse it, “ And then it actually gets merged and goes to production.
0:25:48.0 So I feel like we don't do the “make it work, and make it right, and make it fast.” We do the, “Make it mostly right, and then sometimes we get to make it fast.”
Tim Bourguignon 0:25:53.4
(laughs) Sometimes. When we know that it’s really the right thing that we need to build and that we know we have to scale and that speed is going to be an issue, then we consider making it fast, yes.
Jen Luker 0:26:10.0
Or, we wait for complaints and when we get enough complaints we finally work on making it fast.
Tim Bourguignon 0:26:16.3
Yes. (laughs)
Jen Luker 0:26:18.1
You know.
Tim Bourguignon 0:26:19.0
The well known user testing that is done in production. Yes, you’re right.
Jen Luker 0:26:24.8
And we’ve got QA testers, we’ve got a lot of automated tools that can help you. I mean, our test suites help with a lot of that manual testing. It will never solve all of manual testing, especially if you’re talking about accessibility, but it gets us closer. So we have a little bit of the “make it right” built-in. And we even have some of the “catch it when it needs to be faster” built-in because our tests take forever and so we optimize both ways, mostly because we’re annoyed that our tests take forever, and not because the front end needs to be faster.
Tim Bourguignon 0:26:58.9
That is true. That is true.
Jen Luker 0:27:00.6
So as developers we tend to get stuck in our own little boxes and it’s about our lives and our experience, you know? But there’s a lot to be said for stepping out of that box and talking to other people and finding out how your users use something, why your users use something, and it can get us out of our heads of, “This would be a cool feature and everyone’s going to love it!” To, “Nobody would actually care about that feature, but what they’re really annoyed about is that you can’t edit a tweet!”
Tim Bourguignon 0:27:27.2
(laughs) Sounds like something you experienced.
Jen Luker 0:27:30.7
I think everybody has.
Tim Bourguignon 0:27:32.6
Yes, sorry. (laughs) So let’s go toward accessibility. When did accessibility enter the picture in your life?
Jen Luker 0:27:40.6
That’s also a part one and part two question. Part one: I was born to a mostly deaf mother and I grew up with a terminally ill sister. So as I watched them interact with the world I got to experience through their eyes and through their ears and through their legs, or lack thereof, some of the experiences that they had to deal with while going through life, everyday things. Like, how do you get into the school without going all the way around the building? Or why bother going to a movie when there’s no subtitles and you can mostly hear it because of a hearing aid, but that whole super quiet voices and super loud explosions thing is just unnerving and difficult to handle and makes it really hard?
0:28:26.5 So with that being said it wasn’t until I saw a talk by Marcy Sutton at ReactRally when I realized that people didn’t actually know about accessibility features in HTML or how they were modifying their code using JavaScript to make things inaccessible. And then I realized that this was her job and though I didn’t necessarily want to dive in and make accessibility my whole job, it really made me think about how people experience the web and how other people don’t even give those experiences a second thought, or even a first thought most of the time because we’re so stuck in our heads and our own experiences that we don’t… It doesn’t even occur to us that someone else with other difficulties than ourselves would have problems with what we’re coding, what we’re writing, what we’re experiencing, that it’s different. And it’s not wrong, it's just different.
0:29:17.2 And the deeper I got, the more I dug in, the more I asked questions,the more I started advocating in my own companies for it, the more I realized that the only reach I have is within the small bits of code I get to touch. And yes, I’ve got large codebases that I deal with, but in the grander scheme of things, I get to work on how many projects in my life? How many people can I possibly help experience that with? And what’s going to happen when I move onto my next project? What’s going to happen when the people take it over and evolve it and change it, as well?
0:29:52.5 And that’s when I realized that the only way to really influence others to just give something a first thought was to advocate for it, to start talking to other people, to start giving talks, to be the person to give the talk I wish I’d had to make those arguments over the accessibility of tabs versus spaces, you know?
Tim Bourguignon 0:30:14.5
Mm-hmm (affirmative).
Jen Luker 0:30:15.1
So I got a secondhand account growing up, but as an adult I’ve gotten the opportunity to change minds, change perceptions, and hopefully improve a few lives.
Tim Bourguignon 0:30:27.7
I sure hope so. (laughs)
Jen Luker 0:30:29.4
Me, too. (laughs) This is a hard, hard, depressing fight to be part of when people argue so adamantly that it doesn’t apply to them when the argument is that’s the point! It doesn’t apply to you, it applies to all these other people.
Tim Bourguignon 0:30:43.8
Hmm. Because, actually, you’re fighting against biases. Against-
Jen Luker 0:30:47.3
Absolutely!
Tim Bourguignon 0:30:48.5
Unknown unknowns, things that people don’t know they don’t know.
Jen Luker 0:30:54.3
Mm-hmm (affirmative).
Tim Bourguignon 0:30:54.7
And this is… this is actually the biggest problem. If they knew they didn’t know this then you could call to their better self, but they don’t know they don’t know this. I was trying to map what you said with all the accessibility work I’ve been doing in the past projects I did, which is awfully little. And-
Jen Luker 0:31:13.4
Right?
Tim Bourguignon 0:31:13.8
I was just wondering, where did we mess up? Where did we take a wrong turn? And actually it’s we didn’t know we didn’t know.
Jen Luker 0:31:22.8
It’s uh… We took a wrong turn when we stopped using HTML and started using divs for everything.
Tim Bourguignon 0:31:27.4
{(laughs)
Jen Luker 0:31:28.2
That was our wrong turn. When we realized that with cascading style sheets, magic CSS everybody, we could make anything do anything; and with JavaScript making it actually not just visually make it do anything, but to functionally make it do anything, we forgot why we needed landmarks. We forgot why we needed ordered H rules, header rules, why there really is a major difference between a button and a link.
Tim Bourguignon 0:31:58.8
Hmm.
Jen Luker 0:31:58.9
And we just made divs for everything. And we continued to make that mistake by using divs for everything in our documentation. For all of our code examples that don’t include accessibility, that don’t include, “Well you need an ARIA rule if you're going to use it this way.” You know? That doesn’t include an alt tag on an image because everybody knows you’re supposed to, and therefore all the people that came after those that made sure HTML was semantic. Well, that semantic HTML is accessible, didn’t know.
Tim Bourguignon 0:32:32.5
Mm-hmm (affirmative).
Jen Luker 0:32:32.8
And I copied and pasted code. (laughs)
Tim Bourguignon 0:32:35.5
(laughs) Yes, we all did. Where do you send your colleagues, or newcomers, to learn about this? About the first steps towards better accessibility?
Jen Luker 0:32:47.0
So there's lots of really cool websites like WebAIM that you can go to, there’s the WAI-ARIA website that has all of the rules and even code examples if you know how to find it. But the thing that I really tend to push people towards is the aXe, Firefox, and Chrome extension; and the reason is because not only does it do your initial audit within the website, like you’d start a lighthouse audit, you can do an aXe audit. In fact, lighthouse uses axe-core for its accessibility auditing, but it also gives you reasons why. Like, why is this an accessibility problem? Different ways in which you can fix it. Not just one, like, “Just fix it.” It gives you, “Well you could do this, or you could do this, or you could do this.” And there’s even a link for each rule that they find that gives you more information on what the concerns are, how to fix it, why these are problems, so…
Tim Bourguignon 0:33:41.5
Hmm.
Jen Luker 0:33:42.0
I like it because in one little small tool you could find a problem, find out multiple solutions, and find out why, all at once.
Tim Bourguignon 0:33:52.1
That is very important. And we’ll add the links to the show notes, definitely. So people can find right away which extensions you’re talking about. The “why” is very important, indeed. It’s when people see the why that they really understand and then accept to go through the, make big air quotes, “the hurdle” of going the extra step of doing this, and as long they don’t get the why, it’s just an extra step but as soon as the why is there, then it’s easy.
0:34:25.7 I remember in a talk, seeing a person I couldn’t remember if he was completely blind or strongly impaired, but he was using a text to speech device and he was scanning websites at the speed of light. It was just going from one header to the other in a matter of a few seconds he was able to tell us the whole structure of the page where we’re still, as visually non impaired, still trying to grasp what the website was about and he was already completely up to date with the whole page. But this works only if we’re using diligently the HTML semantics and not the fancy stuff.
Jen Luker 0:35:06.4
Or use the fancy stuff but use it in a way that takes advantage of the semantics. Like, I’m not against using JavaScript, I’m a JavaScript programmer. Like, I enjoy the tools and the resources and the state management that it gives me, you know? But I also know well enough when a button is required, when a link is required and when you can’t tab to either of them. So…
Tim Bourguignon 0:35:31.0
Mm-hmm (affirmative).
Jen Luker 0:35:31.0
You know, use the tools that you have available to you, just make sure that you stay as close to the semantic rules as you possibly can while making it easy on yourself.
0:35:39.8 So the thing that you mentioned about understanding the why, and then watching a person actually use those, you know, assistive technologies, it’s a personal connection that you make. It’s knowing someone, seeing someone have to deal with it, how the tool can help them and how the tool can actually hinder them. I love the quote that essentially says, “The problem does not lie in a person’s body if they can’t use your website.”
Tim Bourguignon 0:36:10.0
Hmm. (laughs)
Jen Luker 0:36:10.6
It’s, the problem is with your website, right? Because the tool is supposed to be accessible to all. It’s supposed to allow people to learn to watch cat videos, to you know, whatever. But it's the fact that it's inclusive and everyone can use that same tool and therefore, if you’re not allowing others to use that tool then it’s your fault, it’s not their fault.
Tim Bourguignon 0:36:33.3
Absolutely.
Jen Luker 0:36:34.3
And one of the things that I love to tell people is that 1 in 8 men have color blindness of some sort, right? And when someone really, really fights hard against accessibility features, you know, I take this one colorblind gentleman over to their desk and say, “Can you explain to John, here, why he is not allowed to use the technology, or the webpage that his company built?” And that moment it stops being a feature and starts being a bug. There’s a physical, emotional, real connection with that accessibility feature and why we should think about it because there is a person standing at their desk that cannot use the tool that they’re supporting.
Tim Bourguignon 0:37:19.6
This is what you described before as a personal connection.
Jen Luker 0:37:22.5
Yes. It becomes a personal connection. You know that person. You have to explain to that person why you don’t care about them. And though you don’t necessarily have to do this whole thing it’s that same concept. Without that emotional connection it's very difficult for people to advocate for it. Sure they can understand it’s the right way, it’s a good thing, it’s the right thing we should do. But I have money, and I have bosses, and I have people coming down on me saying we have to get stuff done and someone’s angry and yelling at me and I don’t want to lose my job so just get the feature done, you know?
Tim Bourguignon 0:37:55.5
Mm-hmm (affirmative).
Jen Luker 0:37:56.6
But without being able to take John and walk him up to the desk and say, “John can’t use it. Why is your problem a bug but his is only a feature?”
Tim Bourguignon 0:38:05.0
Wow. I’m trying to scan in my head the projects I had and the people I worked with and see if I had done something like this, how would it have gone?
Jen Luker 0:38:14.8
Horribly. It might have gone very horribly.
Tim Bourguignon 0:38:18.7
(laughs)
Jen Luker 0:38:20.7
You might not have had your job but the feature would have gotten in there, though. The bug would have been fixed.
Tim Bourguignon 0:38:26.3
Indeed.
Jen Luker 0:38:26.7
So, and again, especially in the U.S. with HIPPA laws it’s illegal to, like, take someone’s disability and, like, out it to the world. They have to be the ones to say, “Okay, I am color blind and I want to do this.” But-
Tim Bourguignon 0:38:41.6
That makes it even trickier. Oh, boy.
Jen Luker 0:38:44.3
It does. (laughs) You know, so but with all of these things, it makes it more and more difficult to have access to people that would help us with that emotional connection. To see why these things are important which means you’re relying so heavily on the one accessibility advocate in your company and why so many people just don’t listen to them.
Tim Bourguignon 0:39:05.8
Mm-hmm (affirmative). But on the other hand, I have the feeling that we are becoming more empathetic and if it’s not about accessibility it’s about diversity and inclusion and people are starting to wake up and speak about it. So I have the feeling that the movement is going at least in the right direction. If it’s not fast enough, there we can argue, but I think it’s definitely going in the right direction. What do you say about that?
Jen Luker 0:39:38.3
It is going in the right direction. I also have a slightly pessimistic view today though yesterday was very optimistic, so it goes back and forth, where it’s the difference between people recognizing that diversity is important. That not just diversity in skin colors, but experience, and how we use our bodies and our minds, and the perceptions that we have. It’s not just about race and gender, it’s also about physical ability and, you know, every single person counts. Every single person has a different perspective and the more diverse of a perspective that you can get, the better your tools are going to be. The more useful your website’s going to be, you know? And I like the idea that people genuinely want to be open minded about this.
0:40:29.0 On the other hand, some days it feels like the only reason they’re even talking to me is because they don’t want to get sued.
Tim Bourguignon 0:40:35.3
(scoffs) Ouch.
Jen Luker 0:40:36.6
And that hurts and those are usually bad days because I have that emotional connection and I’ve seen and been raised by people that have had difficulties and they don’t care. Or at least they don’t, it seems like in my perception at the moment.
0:40:52.9 So it can be a rough fight. It can be a really tough and rough fight and some days I just want to go back to my desk and write another form, accessible of course, and just be real quiet about it and just move on to live for another day, and sometimes that’s what I do. Some days, however, you change that one person’s perception and it is the best day ever. (laughs)
Tim Bourguignon 0:41:19.1
(laughs) Amen. I’m not sure how to go (laughs) further with this? This has been just a blast and we’re reaching the end of our time box. Do you have one advice, maybe towards accessibility, that you would like to imprint on newcomers in our industry? People that are starting, they have a blank slate or almost a blank slate, with a career, uh, career-wise? What would be the one advice that you would like to give them?
Jen Luker 0:41:51.5
I think I have two, is that alright?
Tim Bourguignon 0:41:53.3
Yeah, sure.
Jen Luker 0:41:54.3
Okay, Part One: Whatever IDE you use, install whatever accessibility linter it has. Part Two: Make the decision that every bit of code from you will get run through axe-core, or aXe of some sort. Just walk through it. Use your fingers, tab through things, pull up the auditor, and just check. And if you do those things you will learn over time what you need to do to make things accessible and the code that you touch, and the PRs that you start reviewing will all become more accessible over time.
0:42:31.7 It’s okay that you’re not perfect and that you don’t know everything today, I’m not perfect, I don’t know everything today. There's a lot that I don’t know and a lot that I try to learn, but just one thing will make a difference. Especially if you make that one thing the same for the future and you learn something new tomorrow and you learn something new tomorrow. So just start with one thing.
Tim Bourguignon 0:42:53.5
Thank you.
Jen Luker 0:42:54.3
Thank you.
Tim Bourguignon 0:42:55.1
If the listeners want to continue this discussion with you toward accessibility or not, or something else entirely, where would be the appropriate place to contact you?
Jen Luker 0:43:06.2
The best place to contact me is on Twitter. My handle is @KnitCodeMonkey. However, if you message me, and my DMs are open, please say more than just, “Hi.” Or, “Hi, Jen.”
Tim Bourguignon 0:43:17.1
(laughs)
Jen Luker 0:43:17.6
I tend to just ignore or delete those because it can be difficult to know when that’s going to become a real conversation or a scary conversation. So, please just say a little bit more and I’ll answer. (laughs)
Tim Bourguignon 0:43:31.4
And this should be the case, not just for you, not just with you, and not just on Twitter.
Jen Luker 0:43:37.2
Right?
Tim Bourguignon 0:43:37.7
Please, be cool.
Jen Luker 0:43:38.5
I mean, there’s a cultural reason for it. There are certain cultures in this world that they say, “Hello.” And then they wait for you to respond out of respect for your time, and they don’t want to interrupt your time. However, when you’re talking about internet tools and time difference and cultural differences, I would much prefer to know that you are a real person and not a bot, so that I don’t waste my time trying to track down what it is you want.
Tim Bourguignon 0:44:08.7
(laughs) And do you have anything on your plate, right now? Something coming up? I mean, we are in the middle of the Coronavirus Pandemic, so probably no conference calls, talks, or keynotes, but anything else on your plate?
Jen Luker 0:44:23.1
I’ve actually had a few through this pandemic, they’ve all been remote. So the Women Who React conference was probably the most recent one. I also did a recent meet up for ReactiveConf and I did an online talk for… React Summit, as well. Hopefully when those go back to in-person conferences later that I can still give various talks at those conferences, as well. However, always talk to me on Twitter, we can always have a conversation anytime.
Tim Bourguignon 0:45:03.0
(laughs) Awesome, awesome. Well, Jen, thank you very much. It has been a blast listening to your story and delving on our common experience of the old geezers (laughs) and learning some stuff about accessibility, that was great. Thank you very much.
Jen Luker 0:45:18.5
Thank you.
Tim Bourguignon 0:45:19.3
And this has been another episode of Developer’s Journey. We’ll see each other next week. Bye-bye.
Tim Bourguignon (Voice-over) 0:45:25.0
This is Tim from a different time and space with a few comments to make. First, get the most of Developer’s Journeys by subscribing to the podcast with the app of your choice, and get the new episodes automatically right when they air. The podcast is available on all major platforms. Then visit our website to find the show notes with all the links mentioned by our guests, the advices they gave us, their book references, and so on. And while you’re there, use the comments to continue the discussion with our guests and with me, or reach out on Twitter or LinkedIn. And a big, big thanks to the generous patron donors that helps me pay the hosting bills. If you can spare a few dollars, please consider a small monthly donation. Every pledge, however small, helps. Finally, please do someone you love a favor and tell them about the show, today. Help them on their own Dev Journey. (Exit Music)