This month we’re featuring Jake, a long-time Codecademy engineer. At first, Jake didn’t have plans to be a software engineer but with a strong interest in electronics, encouragement from peers, and a lot of perseverance, Jake now finds himself 11 years into a rewarding and fulfilling career as a Software Engineer.
Tell us a little about yourself.
Hi, I’m Jake! I’ve been working as a Software Engineer for 11 years, and I’ve spent the last 5 years as a Front-end Engineer at Codecademy. I’m originally from Philadelphia, and now I live in the New Jersey suburbs, about a 45-minute train ride away from the Codecademy Office in NYC. I went to school for Graphic Design, and my first job was as a Web Designer. While I was there I started to learn Front-end development, and I was hooked immediately. I transitioned to working as an engineer full time and haven’t looked back.
How did you end up working for Codecademy?
In 2011 when Codecademy was launched, I was still learning how to code at my first job, so I created an account and tried it out pretty much immediately. I’m primarily a visual learner, so having an interactive way to learn to code online seemed like a perfect product for me at the time. The fact that Codecademy was trying to teach people in a way that resonated with me personally definitely stuck with me a few years later when I got the opportunity to interview at Codecademy.
Did you always want to be a Staff Software Engineer?
As a kid I always loved electronics, video games, and tinkering with all kinds of hardware and software, but I didn’t consider turning those hobbies into a career until after School. I was never a strong math student, and even though I spent a lot of time working with computers, the idea that I could be a software engineer never really seemed possible to me. Even when I got started building websites at my first job, it took me a long time to accept that I could do it. I was lucky to have mentors and friends at the company who saw that I had potential and encouraged me.
As far as being a Staff Engineer, I don’t think I really knew that role existed until I got my first job at a bigger company. The Engineers with the Staff title there were some of the most knowledgeable on the team, they were the engineers you were told to ask if you had a question on a certain topic, and they were always the ones you wanted constructive criticism from when you were writing a technical plan for a project. They would have that extra bit of context on the architecture of the site that could help you steer your project in the right direction.
I think having positive experiences with that role early in my career led me to aspire to take on that role when I gained more experience. Titles and responsibilities are all very different between companies, so it’s hard to say this is what “Staff” means on every team, or if they even have that title, but I think there are similar expectations for knowledge sharing and mentorship on more senior members of any engineering team.
What are the best aspects about working as a Staff Software Engineer?
As a Staff Software Engineer, I get to work on a wide variety of projects, and collaborate with all of the different product and engineering teams across the company. I’ve always loved the problem solving aspect of programming, so getting to spend a lot of my time with the team helping to solve different problems is really the best part of the job for me. I also really enjoy working with some of the more junior members on the team and helping them grow however I can. I try to welcome teammates to ask questions and propose solutions that might contradict my own view. Regardless of where someone is in their career I always feel like there’s something to learn from someone, often much more than you think.
What are the worst aspects about working as a Staff Software Engineer?
Dealing with ambiguity. Especially working on an engineering-driven team, I’m often being asked to figure out what the problems are AND propose solutions to them. It’s difficult to know where to start, and then, even if you know what to do, whether to prioritize that project over a thousand other things you know need to get done eventually. I’ve found that I always need to find collaborators on the team that I work well with and trust to bounce ideas off of and give me the extra confidence to make decisions.
If you could make one piece of fictional tech reality, what would it be?
Wow, there are so many things. It would be too safe to pick something that would solve world hunger or reverse global warming, so I’ll pick something fun. It’s so common in sci-fi movies that I barely notice it anymore, but I’ve always loved the idea of the personal spaceship. Having a small ship in the backyard ready to take me literally anywhere in the universe whenever I want seems like an amazing amount of freedom.
Do you have any advice for the learners?
My main advice is to not give up. Engineers at every level get stuck constantly. The lightbulb moment when you feel defeated and finally “get it” is one of the most rewarding aspects of being an engineer.
If you could make one brand new course what would it be?
I would make something simple and visually oriented that gets people that maybe don’t think they have the aptitude to become an engineer to see how so many of the skills they already have apply to engineering. I love when we put out courses on more complex technologies and new languages, but what really interests me is getting new people excited about coding.
What does a typical day look like for you?
I loved working in the office, but I’ve been working from home one or two days a week for the last few years. Luckily because of that I already had an office space set up when we transitioned to remote full time. Having a private space where I can get into work-mode is really helpful for me, especially for video calls.
Our team usually has a standup meeting around 11:30AM. At that point I’ve had enough time to figure out what I need to be working on, if I need to coordinate with my teammates on something, or if there are any new meetings that have popped up that I need to set aside time to prepare for.
Here are some of the things I end up doing on a daily basis:
- General programming work for any of the projects or tasks I’m working on
- Lots of code review for my teammates and other engineers throughout the team
- Technical design meetings & check-ins on projects
- Responding to other requests & issues that come up throughout the day
- Meeting with other departments like Design to discuss collaborative frontend projects
- Various meetings from other teams, presentations by engineers on interesting new projects or topics
- Interviewing (intermittently, depending on our hiring plans)