“If you don't know how to code, you're basically going to be illiterate in the future.”

Eric Elliott | Founder of Fight Poverty with Code

Interview by Thomas Peham

June 22, 2015

Photos by Eric Elliott

Compassionate entrepreneur on a mission to end homelessness.

Eric Elliott is a JavaScript specialist who contributed to Adobe, The Wall Street Journal, ESPN, BBC.

Eric is also author of "Programming JavaScript applications", public speaker, and founder of the successful kickstarter campaign "Fight Poverty with Code". Fighting homelessness in the bay area by teaching JavaScript, Eric has started an amazing movement worth to follow.

Share this interview:


Hi Eric, thanks for your time. Can you please describe yourself?

Sure. I'm a JavaScript specialist. I've been programming since I was a little kid. For the last five years I've been doing a lot of hiring and so on. That made me realize that there's a huge skills gap in the market. There aren't enough good JavaScript developers to fill the demand for the jobs and build the apps that we need to build.

So, I decided to write a book in order to try to fix that problem. I wrote “Programming JavaScript Applications” for O'Reilly. That was a few years ago.

I've been a software developer pretty much all of my life. Really hardcore for the last several years. I've worked for companies like Zumba Fitness, which is a worldwide fitness brand. Adobe. I worked for a social video startup called Tout that powers a lot of the social video interactions for television, and newspapers, and so on.

I've been developing big apps with more than 100,000 lines of code. Some with millions. That's me, in a nutshell.

You’ve also been the creator of the project “Fight poverty with code”. Can you share some insights on that project?

Definitely. A few years ago when I got hired and moved to San Francisco for a new job, I realized that there were a lot of homeless people there. I passed hundreds of them on the streets on my way to work every day.

I felt a lot of empathy for them because in 2008, when stock market crashed and about half of my contacts got laid off and nobody paid me for a while. Until April 2009 I still hadn't had a payment and I was living on my savings. Finally I also had to sell my house.

When I see the homeless people on the streets in San Francisco, it really tugs at the heart strings a little bit, because I have a pretty good idea of how they're feeling.

I wanted to do something about it. Once in a while, I gave somebody a $20 or a pizza or something. I was sick of feeling that I can't help everybody. There are so many people there who need help.

When we decided that we were going to do online courses, one of the first decisions we came to was that we were going to make the courses available for free to Housing First programs. The whole philosophy of those Housing First movement is that you can't really treat any of this person's problems until they're in a stable home environment. That program gives them a free home to live in.

That gives them a chance to have some stability: to have a place to clean up so they can look good for job interviews and so on. But it also gives them a safe environment to learn new job skills.

Our program is free for training programs that are associated with Housing First opportunities. That's where that came from and what it's all about.

Can you share some lessons learned of launching on Kickstarter?

If we had to do another Kickstarter campaign from scratch, I think we would do it completely differently.

We would have the bulk of the work done before we launched the Kickstarter campaign, because once you get a campaign going, you’re campaigning full time until the campaign is over.

That means constantly updating the supporters and constantly coming up with a new perk to give to people or something exciting to tell people about your campaign to get them to share it on their social media again after they've shared it a first time.

Was this your full-time project or have you started it as a side project?

During the campaign, it was like having two full time jobs, because I was working at Adobe at the time when we launched.

Can you share how a typical day in your life looks like?

Sure. Now, I'm doing the training full time. I spend a lot of my time creating course material. I'll probably spend about half of the day on making new material or working on code, which kind of go hand in hand. The other half of my time I try to get the word out and just trying to be present so that people can find us, because the program means nothing if nobody knows that it exists.

I am also the host of a documentary called "Programming Literacy."

We're trying to educate people on the importance of learning to code. What we want to see is all of the schools teaching programming, starting very young.

I think that all kids these days should be doing that because in a couple of decades, most of the jobs that we take for granted right now are not going to exist anymore.

It's really important that kids are prepared for the jobs that are going to be available for them in the future.

Right now, if you don't know how to code, you're basically going to be illiterate in the future.

When will the documentary be available?

We kicked off filming at the Sundance Film Festival in January. It just got started. It's going to be a little while. There's already a lot of really great material that has been filmed. It's really inspiring to watch and to hear from some of the people that were interviewed.

Can you share some challenges creating such a documentary?

I think the biggest challenge, for me, has been figuring out how to stick to a script and stay natural at the same time. There are so many other challenges involved in making a movie and @JS_Cheerleader can speak to that, like finding the right people to work with is essential.

Some of the people we've been able to work with are really amazing, inspiring people.

At Sundance, we got to hang out with a guitar player named Jonny Polonsky, who is just incredible. Or Bill Scott. He's an amazing leader. He’s the VP of Business Engineering at PayPal. He's in charge of all the engineering for that stuff and he's made an incredible transformation in their engineering department over the last couple years.

Hearing from him and interviewing him was just a really fascinating and wonderful experience.

How did your childhood influence you in the career path you choose?

When I was a kid I had no idea what I wanted to do when I grew up. I went through different phases.

When people ask me what I wanted to be, I’d probably answered being a fireman, because I liked the hats. When you're young, you don't really think about that sort of thing very much. It's like it doesn't seem real that you'll one day grow up and actually be in the job market.

It wasn't until I was a young teenager that I really started to seriously consider doing programming for a living.

I started producing games and I thought, “maybe I can sell these things”. I got a little more serious about programming around the age of 12 or 13. I got my first programming job when I was about 17 or 18.

Is there like any advice you would give yourself as a 14-year-old?

This is very interesting. There's so much I’d tell my 14-year-old self. When I was 13 or 14, I was experimenting with lots of different programming languages, but I wasn't doing enough with functional languages. I would probably tell myself to go and study Lisp, and if JavaScript had existed back then, I would tell myself to study JavaScript and Lisp and figure out what they have in common.

I think functional programming is going to be incredibly important. The idea of how to build really reusable functions and really reusable bits and code and compose them together to build an app that’s actually manageable.

I'm just wondering, what would you call your big passion for being a software engineer?

I think my real passion is helping people.

JavaScript has the potential to help a lot of more people, because it's the most popular language in the world.

If you write a library for JavaScript, it's going to help a lot more people.

Can you share some tools or technologies you use on a daily basis?

I think I spend quite a bit of my time on GitHub. I even do some of my programming in GitHub. There's an integrating editor. It's not really fancy, but there's an integrated editor on GitHub for simple changes.

I also use Atom, which is like GitHub desktop editor.

I was using Sublime Text, but I recently switched. I use a lot of debugging tools, like the Chrome dev tools. I use them constantly. I use Node Inspector.

I actually use the browser a lot, as a debugging and editing environment. That's fun.

What else? There's a really cool debugging tool that I use. It is is it's basically an oscilloscope for code. It’s called TraceGL.

You point it at a project and it starts running and you can actually see all the functions getting called and you can just zoom in on anything and see what the values were when the function was called. You see how many times the function was called. It's really interesting because you actually see the call stacks flying by as your code is running. I have a list of my favorite tools on “Essential JavaScript Links".

Is there any advice you've ever received that you'd like to share with us?

I used to look at problems, like they're my problems, especially like if I'm having a conflict with somebody. You know developers can spend a lot of time arguing with each other. You can spend hours and hours debating something, or you can take a close look at yourself and figure out, am I making this situation worse? Am I dragging this out longer than I have to be?

What is the best thing that I can do to make this person happy with a resolution?

I try to look at the other person and think of them as a mirror of myself. It really helps me to empathize with their needs instead of forcing my opinion on them.

That is just a little tool that I use to help me give myself a reality check, especially when we're wasting too much time debating things.

I think that learning how to cooperate on things more effectively is going to be a huge key for software developers.

Can you share some challenges which you see in the field of bug tracking?

Sure. Back in 2009 I wrote some software - a jQuery plugin, called h5Validate. What it does is it brings HTML5 validation tools into browsers that didn't support them, but it also enhances the user interface for validation with HTML5.

At the time, I didn't really know how to test that on a lot of devices.

Back then I put up a little test page and then I would ping everybody in the company and say, "Go play with this and tell me if it's broken." We would go and explore it on all their different devices. I had a checklist of all the devices we had to look at.

That was very inefficient way to test things. Now, we’ve got tools like Sauce Labs and Browser Stack, that have a lot of different browser configurations in the cloud and you actually automate that.

I think that stuff like that is really, really important. There's another service called APPLAUSE, which is a human testing service. It's a way to go and get a whole bunch of beta testers to look at your app.

It's a great way to get some real people looking at it and interacting with it and finding bugs.

The difference in how we're doing things today versus how we were were doing things in 2010 is so fascinating. It's only been five years, but there’s been so many transformative changes.

My advice is don't try to find all of your own bugs. Create really good test suites and then automate the process of getting people looking at it every time you deploy your app.

What do you think will be the next few challenges we’ll be facing in software engineering?

In the next two to three years, yes. Apps are getting much, much more complex.

Now, we're building apps that run on everything. Responsive apps that run just as well on a desktop system as they do on a cellphone and vice versa, which means that your program has to be much more complex.

There's so many different configurations and screen sizes and people's expectancies for how software should behave have changed a lot too.

People expect stuff to be real time. If you’re collaborating on a shared file with friends you want to see push notifications and you don’t want to refresh the page.

We've got a lot more real time and collaborative features. Multiple people manipulating the state of the app at the same time is enormously complex.

I worked on the Creative Cloud team at Adobe. Creative Cloud is all about collaborating with people on creative projects.

I got to see firsthand how complex managing that collaboration can be and how hard it is to make a really good user workflow for interacting with other users without stepping on each other's toes.

I think the only way we're going to be able to manage that complexity is to develop much, much better software development tools.

For most of the things that my app needs to do, I don't want to write code.

I also think we're going to see more and more visual tools to help manage the complexity of building large applications and really complicated user workflows.

Thanks so much for the great insights Eric!

Follow Eric Elliott @_ericelliott.

Share this interview:

Check the other interviews

Get Access to Further Bug Tracking Resources & Interviews