If you're passionate about building product and solving problems, then the long nights and early mornings are well worth it. But teaching yourself the skills is only half the battle. Becoming a professional engineer at a product company without a traditional CS background (alongside some of the best and brightest developers there are) comes with a pretty big professional and personal learning curve. Looking back at my journey, these are some of the biggest lessons I took away from making the career move.
As long as you have time and an internet connection, getting your skills and knowledge to a solid base level is something you can do on your own. But to take those skills to the next level, you need a mentor who recognizes your potential and gives you the opportunity to show it. Irregular chats with my mentor, Steve (a tech lead on our Leadin team), are what convinced me that I truly had a shot at being a professional engineer. He was honest but hopeful; it was going to be a very tough process with a nearly insurmountable learning curve without any real educational supports. But Steve assured me that if I showed aptitude and an appetite to learn, it might actually work.
A good mentor quickly realises what it is you need to learn and helps you find the best resources to grow. Bottom line: You should get one.
No matter what you want to do, plan to get there in steps, rather than in one giant leap. Find what skills will make you most attractive to your dream employer and take on projects that will help you develop them. Build tools to make your life easier, websites for local shops and your friend’s businesses, and do as much freelance work as you can. No matter what the pay is. As you build your portfolio you build your skillset, and that's priceless.
If you have an interest in building product, chances are many of your pre-existing skills will transfer to development. For example, if you work in a customer support role like I did, your fast-paced problem solving skills will help you debug code. Similarly, if you’re a designer you’ll have an innate understanding of how customers will interact with any product you work on. Every time you face a problem, take a step back and ask yourself if you have any (seemingly) unrelated experience that can help you work through it.
There isn’t really any way to solve the problem of imposter syndrome. Since you came from a non-traditional CS background, you’re going to run into concepts and terms you’ve never heard, but that everybody around you understands. This will happen daily, if not hourly. This doesn’t make you a bad programmer; it just means you didn’t have the benefit of a four year program. You shouldn’t let this make you feel like an imposter, and you’ll find that most of your colleagues would jump at the chance to explain things to you.
For me, joining the HubSpot engineering team had always felt a like a pipe dream. The people that I saw were at the top of their game. They had years of experience and graduated top of their classes at the top universities. They wrote best-selling books, gave packed talks at tech conferences and meet-ups, and had oppressively high StackOverflow scores. Working with some of the best developers out there is intimidating. But take a step back and you’ll see that no one knows everything there is to know about programming. Your smartest coworkers still need to ask for help. You’re not the only one who has a lot to learn.
If you decide you want to make a career change and become a software engineer, you need to have passion. You can't half-ass it. You will work hard, you won't sleep, and you'll miss out on weekends and parties because you were learning. That's why you have to be sure you're passionate about what's on the other side and if that's going to be worth it to you. I'm happy to say I went all in and haven't looked back since.