How Chris Fernandi learned to code without a CS degree

How Chris Fernandi learned to code without a CS degree

Chris Fernandi is a self-taught software engineer who now teaches people Javascript. In this interview he gives tips for learning to code. He also provides help with getting a job in software engineering without a Computer Science degree.

Hey, so can you give us a short introduction for people who want to know more about you?

Hi, I’m Chris Ferdinandi. I help people learn vanilla JavaScript. I believe there’s a simpler, more resilient way to make things for the web.

I’m the author of the Vanilla JS Pocket Guide series, creator of the Vanilla JS Academy training program, and host of the Vanilla JS Podcast. My developer tips newsletter is read by over 8,800 developers each weekday.

I’ve taught developers at organizations like Chobani and the Boston Globe, and my JavaScript plugins have been used by organizations like Apple and Harvard Business School.

My ideas on building a simpler, faster world-wide web have been featured in Net Magazine. Chris Coyier, the founder of CSS-Tricks and CodePen, has described my writing as “infinitely quote-worthy.”

In addition to running a growing JavaScript education business, I also have a day job as a front-end developer at a technology company. Before I was a developer, I worked in Human Resources, where I was often known as “the HR guy who knows technology.” I love pirates, puppies, and Pixar movies, and live near horse farms in rural Massachusetts.

What does a typical day as a software developer look like for you?

I try to start most mornings by planning out my day ahead. I’m obsessed with simple todolists, and practice a “Zen to Done” style approach to task management. Each morning, I look at all of my todo items and flag 3 to 7 of them as my “important tasks for the day.”

I usually do this before breakfast, so that I have a good sense of the day ahead of me. I use MS Todo. It has “just enough” features, is really simple to use, and has a fantastic “My Day” feature that makes my preferred style of productivity super easy.

After breakfast, while I drink my morning coffee, I write an article for my Daily Developer Tips newsletter. This is often driven by something new I learned while working on a project (open source or for a client). Other times, I’ve gotten a question from someone from an email and on Twitter, and it’s easier to address in long form. My articles usually take 15 to 30 minutes to write. The rest of the day is a mix of meetings, client work, open source project work, research, and answering questions.

You originally studied Anthropology and worked in HR. What got you interested in coding?

I kind of fell into HR. Senior year in college, I realized I was graduating with a degree in a topic I found super interesting but didn’t want to do for the rest of my life. I got an internship in HR, liked it well enough, and went into that when I graduated.

I had a lot of opinions about how HR could do modernize and do better, and started blogging about them. I wanted more control over how my WordPress theme looked, so I started learning some basic HTML, CSS, and PHP.

Eventually, I became known as “the HR guy who knows tech” at my company. I was working in the learning and development group at the time, and my boss and I had an idea for a training app that was focused on short, just-in-time learning videos instead of week-long “butts in seats” type training.

We shopped around for someone to build a small proof-of-concept MVP, and the prices that game back where… incredibly high. My manager knew I dabbled in code, and asked me if I could build it.

I very candidly said, “No.”

Then he asked the question that changed my career: “Well, can you learn?”

I spent two weeks doing nothing else by trying to figure it out. At the end of the second week, I had cobbled together the ugliest, buggiest thing I’ve ever built. I’d hacked together some WordPress-based thing held together with virtual glue and duct tape… but it worked “good enough” to test the idea.

And in that moment, I knew I wanted to change careers. The feeling of creating something from an idea I had, and being able to actually use it and interact with it, was absolutely exhilarating. I started looking for web developer roles a few weeks later.

Did you do any particular courses or bootcamps?

I’m completely self-taught. I learned in a few major ways:

  1. Free articles and code snippets. Chris Coyier’s “Designing for WordPress” series was a really big one for me, and the resulting theme was my WordPress theme for years. When I wanted to learn JavaScript, Todd Motto’s blog (which was vanilla JS-focused at the time) was essential reading as well.
  2. Asking people questions. After emailing him a few times, Todd became a friend of mine, and was willing to let me ask what felt like dumb questions (there’s no such thing) and get clear, simple answers back. I used StackOverflow a lot, too, but having someone who’s kind and understanding towards beginners is so important.
  3. Try, fail, repeat. I spent a lot of time coming up with ideas for things I wanted to build, trying a bunch of stuff until something worked, and then repeating the process. Lots of copy/paste/fail, but it was a great (if not painful) way to learn debugging. I keep a list of project ideas here.

How did you get your first programming job or  freelance work?

A big part of my last HR job was teaching career management tips to software developers. As a result, I was able to take a lot of what I taught them and apply it to my own career search.

As I mentioned earlier, a lot of my learning was in working on projects. I threw all of them (well, the good ones anyways) on GitHub to build up a collection of code examples for my resume.

Around that same time, my wife and I also adopted a puppy from a rescue organization, and their website was… very dated. I offered to rebuild it for them for free, and because it was “real client work” I was able to showcase this on my resume as well.

I applied for a lot of jobs and failed a ton of technical interviews. They helped me learn what I needed to focus more on. My JavaScript skills were lacking, which is how I got started with the vanilla JS thing.

I also told everyone I met that I was actively looking for work. I reached out to people who had roles I thought were interesting and asked I could learn more about what a day in the life was like for them. I wouldn’t directly ask them if they knew of any jobs, but I would mention that I was trying to break into the field.

Because of how internal hiring practices work, there can be a big gap of time between when a hiring manager has a role to fill and when it gets posted on the web.

They don’t want to wait, so they’ll start looking for people before an official role exists internally. By the time the job shows up on job boards, there may already be just a handful of finalists.

Connecting with lots of people 1-on-1 and mentioning that you’re looking greatly increases the chances you’ll hear about those roles before they’re public. That’s how I got my first job. I had lunch with someone at a conference, and a month later, he emailed me to let me know about an opening in his team.


How has your life changed since becoming a professional programmer?

One of the things I love most about this profession is how open and transparent and willing to share people are. HR had some of that at conferences and such, but a lot of what HR does can be considered trade secrets that provide a competitive advantage, so you tend to not share all of the details.

Web developers, on the other hand, share everything they know. It’s literally the only reason I have a career, so I try to pay it forward as much as possible. I’ve gotten to meet lots of cool people, have much more control over my own schedule, and, get to do work that I love and am proud of every day.

The biggest downside: because you can work from anywhere, and because you can go from “idea” to “I made a thing” pretty quickly, it can be hard to turn it off at the end of a work day.

As a software engineer without a degree, how does it feel to be able to teach people to code? Can you tell us about your vanilla JS course?

The biggest highlight of my career so far has been seeing people who were struggling and felt like they “just weren’t meant for,” on the verge of giving up, grow into confident JavaScript experts.

I remember being there, confused and overwhelmed. Being able to help someone “get it,” watching that light click on, is an amazing feeling. It’s my absolute favorite thing about my job.

I help people learn JavaScript in a few ways:

  • My Daily Developer Tips newsletter provides short snippets and insights every weekday. It’s a great way to enjoy a coffee break.
  • My Vanilla JS Pocket Guides are short, focused ebooks and videos. Each one is designed to teach you the basics of a topic in about an hour, so that you can learn what you need to do and get back to work.
  • The Vanilla JS Academy is my project-based online training program. A lot of people tell me that they’ve memorized all of the techniques, but struggle to get started on projects from scratch.

    Academy helps people learn how to “think in JavaScript,” and feel comfortable going from idea to implementation. Every other day, you get a few lessons and a small project to work on. On the in-between days, you get a solution. Every two weeks, there are office hours.

    It’s hands-down the most popular thing I’ve ever made… so much so that a bunch of former students have begged me to make an “Advanced” version so they can take the next step in their learning.

    So that’s coming sometime in the near future.

What advice do you have for someone who wants to get their first programming job but they don’t have the time or money for a CS degree?

You absolutely don’t need one. There’s nothing wrong with a CS degree, but it’s not at all required. For years, I felt like an imposter because I didn’t have one. Eventually, I learned that almost everyone I look up to in the industry doesn’t have one, either.

Start small, start working on real projects as soon as you can, and don’t try to compare yourself to someone else. Just this week I learned about a up-and-coming star in our industry who went from fast-food employee to employed developer in 5 months.

I spent two years trying to get my first job while working at a tech company where I was known as a “tech person.” Everyone’s career happens at its own pace, so don’t get discouraged.

Have you ever had imposter syndrome and if so, how have you dealt with it?

Oh, wow, yeah… all the time!

I just kind of pressed on anyways, because I so very very badly wanted to make web development my career. Feeling like I didn’t know enough is what drove me to keep learning.

Because my particular style of development focuses on simplicity over “chasing the new hotness,” I sometimes get asked questions about stuff that I don’t know the answer to, and every now and then I send me into an imposter panic.

It’s good to reminder yourself that the people you look up to may be experts in one area, but total beginners in another. No one knows everything.

You can totally do this!


What are your coding dreams for the future?

I mentioned earlier that my favorite thing is helping beginners grow into confident, skilled developers. So, I’m going to keep doing more of that. I have a few more pocket guide ideas I’m working on. I’m in the middle of developing an Advanced version of the Vanilla JS Academy. And I have a backlog of 160 article ideas I’m slowly working through.

About the author
Pete Codes

Pete Codes

Hey, I'm Pete and the creator of this site. I am a self-taught web developer and I'm based in Edinburgh, Scotland.

Self-taught developer success stories

Get into tech without a CS degree

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Self-taught developer success stories.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.