How Chris Fernandi learned to code without a CS degree
Hey, so can you give us a short introduction for people who want to know more about you?
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.
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.”
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:
- 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.
- 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 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?
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.
- 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.
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.