A Day in the Life: Josh Goldberg, Codecademy Frontend Engineer

This month we’re featuring Josh, the most enthusiastic Front-end engineer at Codecademy :raised_hands:. Always quick to lend a helping hand, Josh makes a solid team player and generous engineer. He also loves making fresh, fizz cocktails for friends!

Meet Josh! :hugs:

Tell us a little about yourself.

Hi, I’m Josh! I’m from upstate New York and work as a front-end engineer at Codecademy. I live with my partner and a cat in Brooklyn, and I’ve been working at Codecademy for a little over a year now. On the side I work on open source coding projects for fun and run around the city with coffee (well, normally…). I also enjoy making cocktails, but I’m much better at making them pretty than palatable.

Fun fact: I’ve received multiple DMCA takedown requests from Nintendo for recreating Mario in JavaScript. Good times.

How did you end up working for Codecademy?

Education’s always been a passion of mine, particularly as a means to equalize financial opportunity, so bringing my love of frontend development into a tech education company seemed like a natural fit. Codecademy in particular stood out to me because I’d used the platform in the past and respected their (our!) approach to teaching: an dynamic learning environment with heavily curated content.

I wanted to move back to the NYC area in January 2019 after living in Seattle for a few years, and Codecademy has been hiring non-stop for the last few years. Hooray!

Did you always want to be a Front-end Engineer?

Nope. When I was really young I liked catching grasshoppers and wanted to do that for a living. Then in high school I was into Photoshop and graphic design (and still enjoy occasionally photoshopping a friend’s face onto an animal). I was fortunate to be able to take Java classes in high school and develop an interest in taking on a Computer Science major in college. That taught me C++, which I liked a lot, but I fell in love with tinkering with web projects on the side. I’ve been focusing on frontend ever since.

What are the best aspects of working as a Front-end Engineer?

Making changes feels immediate and hands-on; it’s always satisfying to see my code come alive on my computer as I write it.

The web in particular is evolving -mostly for the better- very quickly, and it’s exciting to take part in it. The core frameworks and even languages we use seem to radically improve every few years. Some may find it exhausting, but I find it exhilarating: these changes let us build bigger, more complex, and more stable web applications year-to-year.

What are the worst aspects of working as a Front-end Engineer?

Oh, the same things! Everything feels like it’s always in flux and can be broken at any time. I’m always nervous after releasing a big change to users. You never know what’s going to ruin someone’s day.

Education apps are often used by users with low tech aptitude. A single confusing bug in our website might convince someone they’re not cut out for coding. Much of my project focus has been around improving the stability of our code. Everything from better language services (TypeScript!) to better design principles (SOLID!) to better testing practices help us make a more stable site… but because the web is so fluid, it can be difficult to know how to achieve those very nice principles.

If you could make one piece of fictional tech reality, what would it be?

Cheap, accessible 3D-printed biomaterials. To start, we’d be able to effectively cure a lot of otherwise debilitating and/or fatal ailments. Heart problems? Print a new one! We’d also help out the environment by drastically reducing the pollution and distribution issues of mass farms.

Do you have any advice for the learners?

Well, first off, please give Codecademy all the feedback you can think of! We love that stuff: the good, the bad, the ugly… Even things you might think are your fault are often issues with our curriculum or website that we would only hear about because you yell at us. Please, more of that!

For coding, I can’t recommend enough the idea of mastering the basics. A lot of people rush through curriculum to try to get to the splashy projects as soon as possible. That’s often a mistake; both common sense and our internal research shows it’s generally better to take your time and really understand how your tools work.

I’d also say that getting practiced at failing hard is incredibly useful. Programming is always full of little annoyances you won’t understand at first. Debugging those issues is a fundamental skill that you need to practice at in order to get better. The good news is that as you stick through programming, you’re going to get a ton of excuses to debug :wink:. They’re much more enjoyable and useful if you treat them as learning moments instead of annoyance inconveniences.

If you could make one brand new course what would it be?

TypeScript. Definitely TypeScript.

It’s a huge step forward in enabling JavaScript development for large projects, and we use it heavily at Codecademy. I’d love for us to teach it to learners.

Now that you mention it, a very kind curriculum developer at Codecademy was guiding me in co-authoring a prototype of the lesson. I’m really hoping we can flesh it out soon… Keep your fingers crossed!

What does a typical day look like for you?

I wake up relatively early for a developer -around 7am- so I can go for a run (if I’m feeling up to it), razzle my partner’s cat, and make myself breakfast. That’ll be fancy avocado toast if the run happened and was good. :man_cook:

Morning time from around ~8:30 till 11:30 is normally my focus time to get real code work done. I’ll warm up with smaller bug fixes before diving into my bigger projects. These days that is often adding new components to our “design system” (our shared library of reusable React components), fixing assorted accessibility issues, or most recently, a fun project to improve Codecademy text editor.

My team has its daily “stand up” quick check-in at 11:30 so I’ll focus until 12 or 12:30 on reviewing other people’s code and proposals. In reality this is something I do throughout the day, but I’ve found it useful to have focus time for the larger reviews to make sure I understand what’s being proposed.

The rest of the afternoon will normally be a mix of coding, reviewing, and meetings. I’m involved with a few teams at work and we coordinate on the statuses of current projects and how we can position upcoming projects well.

Spending direct time with other people -both developers and not- is something I find refreshing and often useful, and really important to me to do regularly. I typically mentor one or two more junior developers with a meeting every week or two, and try to reserve time at least once or twice a week for casual coffee/tea/boba chats with people across the company – allowing for video chats when everyone is working remotely. I also regularly check Twitter for Codecademy mentions throughout the day, and try to respond kindly to people with issues. It’s nice to feel connected to learners over the internet.

Recently after work we’ve been hosting virtual hangouts and happy hours so I’ll probably try to show off some absurd looking cocktail there. Otherwise I try not to work after hours, both for my personal wellbeing and to not signal to other developers that it’s expected to. Instead I’ll probably code on some open source project, play video games, go for a walk, and sneak in an at-home workout.

At my desk with a fizz cocktail

4 Likes

This is me!

This is also me!

Thanks so much for the advice!! It’s too true. :smiley: @lilybird thanks for the interviews. I enjoy reading them and they make me want to work for Codecademy :slight_smile:

3 Likes

I’m so happy to hear you enjoy reading these, yay. :slightly_smiling_face: