Almost exactly a year ago, I joined OneSignal’s inaugural, two-person cohort of software engineering apprentices. The program was the creation of my now-director, Brett Thomas, who wanted to give engineers coming from non-traditional backgrounds a path into the sometimes very hard-to-break-into tech industry. As a new engineer, who at the time still struggled to even consider myself worthy of the title, the apprenticeship program offered me the opportunity to build a strong foundation, hone my technical skills, and gain confidence in the industry amid a group of incredibly talented and kind people. I am so grateful to be a member of such a supportive team and to now be in a position to help cultivate the same apprenticeship program that offered me a pathway into software engineering.

A Little About Me

I am a lifelong puzzle enthusiast, who’s always dreamed of solving puzzles for a living. I was never completely sure what that would look like, but I spent a lot of time trying to figure it out. For almost ten years of my childhood, I was a member of a team-based creative problem-solving competition, called Destination Imagination, and through that discovered that there are thousands of ways to approach the world as a puzzle. By the time I reached university — still a child making decisions for the adult version of myself — I had decided that I would major in biology, a field of scientific puzzles, and then go to law school to solve logical puzzles and later be the person in the room helping to create ethics around genetics, stem cells, IVF, and more.

First, however, I was going to travel the world. I graduated early from university and went to Prague for six weeks to get my TEFL (Teaching English as a Foreign Language) certification. I got the certification, but decided that although teaching English wasn’t for me, Prague definitely was. So I applied for a six-month visa… and then extended it… and then extended it again. Four years later, I had worked as an art shop store clerk, a night shift customer service agent, a senior trainer of a customer service-focused company, and as the head of a marketing operations team. I had the opportunity to meet and work closely with people from literally all over the world and learn more about what type of work I liked and —equally importantly —what type I didn’t.

In my role as Marketing Operations Manager, I worked closely with the engineering team. The company had an internal CRM (Customer Relationship Management), which meant if I had a feature request to help with the efficiency of marketing communications, it was always at least a discussion. Being in meetings with engineers and hearing them break down my requests into root problems and discuss possible solutions, working together to come up with pitfalls and workarounds, bouncing ideas off of each other, and solving puzzles in real time, I realized I might want to do what they were doing.

Life, family, and the state of the world (anyone remember COVID?) brought me back to the States and I decided to try out a part-time, “Intro to Computer Science” class that a programming bootcamp was offering to see whether I was really interested. From almost the first day, I realized that this was what I wanted to do. So, I signed on for the full-time, three-month bootcamp with Hackbright, an engineering bootcamp for women and non-binary folks.

My Path to OneSignal

Amid all of the stress, hard work, and late nights, I got pretty lucky. OneSignal has a great relationship with Hackbright and actively encourages engineers to get involved and mentor new grads. Near the end of my bootcamp, OneSignal brought in about 25 engineers to speak to us one-on-one and give us a chance to ask questions and practice algorithm interview questions. It was invaluable as new engineers embarking on the daunting journey of finding our first jobs in the industry. I met with a principal engineer who was humble and encouraging. Our conversation made me feel excited and capable at a pivotal moment. He was reassuring and genuine in conveying that the differences in our skills and knowledge in the field were not as vast as I imagined, that no matter how long you have been doing this, you can’t know even close to everything. People around you will always know more about different technologies and have their own expertise. To be successful, you need to be able to listen and value what others have to say, know how to learn new things, and then just get started making things.

I left that conversation truly excited about OneSignal and about the industry I was trying to break into. I applied immediately.

During the interview process, two of the traits that struck me most were the organization and the kindness of everyone in the process — from the recruiter who communicated consistently about what was happening and what was next in the process, to the engineering director who took the time to understand who I was and what I was looking for in order to help me to identify which team would be the best fit for me. My technical interview felt more like pair programming than an interview and I left excited for the opportunity to work with and learn from my interviewer. After the engineering interviews were done, I met with the Office Manager, who emphasized the care and consideration that goes into hiring people who will uphold and contribute to OneSignal’s healthy, kind culture. I really felt that OneSignal was a company with the time, people, and resources to help me to grow as an engineer as I started on what I knew would be a very long and difficult journey. When they chose me, it was so exciting to be able to choose them as well.

My OneSignal Journey Thus Far

As soon as I started, I was assigned a mentor to help guide my learning process and help me ramp up. His guidance and support allowed me to ask questions comfortably and form a solid foundation to build on. We met daily, initially to give me an opportunity to ask questions about Golang, a language that was entirely new to me that most of my initial work would be done in, and then slowly to give me assignments of increasing complexity so I could learn how to use and understand the different tools in our infrastructure. My mentor’s philosophy was one of constant availability and support with a healthy dose of “I’m throwing you into the deep end,” an approach that allowed me to grow and contribute much quicker than I had anticipated.

I also had, and continue to have, weekly one-on-ones with my manager and many of my teammates. Their willingness to help and continued encouragement made me feel like an instant part of the team.

A few months into my apprenticeship, I remember expressing to my mentor, “It’s really hard always being the dumbest person in every discussion.” Without missing a beat, he responded, “You mean the newest.” Maybe from the outside, this is obvious. But from where I was sitting, it felt as though not knowing nearly as much as everyone around me meant that there was something intrinsically wrong with me. What it really meant was that I was learning something new for the first time, and thankfully I had the support of both a mentor and a team who could point that out.

After practicing writing code in Go, I quickly started ramping up with a series of small projects to learn how to use our services and various parts of our tech stack. These included:

  • A configurable gRPC request-response testing sandbox that allowed users to test/troubleshoot how gRPC interacted with the network inside and outside of our kubernetes cluster to get a better understanding of where and why issues (such as timeouts) happen. This gave me an opportunity to get an understanding of where requests originated and which services existed inside and outside of our k8s cluster at the time.
  • A kafka consumer whose purpose was to confirm consistency with Scylla records, giving me the opportunity to work with and understand kafka, a platform that underlies a great deal of our backend infrastructure, and to work with Scylla, a highly scalable distributed database that was entirely new to me.

The Deep End

Three months into my apprenticeship, I was given the opportunity to sit in on planning for one of our (now) recently released features, Journeys. I was in the room with some of OneSignal’s most senior engineers as they went through the process from a mere idea to the product that was ultimately delivered. I got to watch these engineers talk through architectural proposals, discussing the strengths and drawbacks of each, creating diagrams to think through how new and old services would work together, and responding to customer and product input and requests. Watching these experienced engineers create something so complex from nothing was a formative and helpful experience.

After learning so much from the planning process, I began work on a small gRPC service for the overall Journeys product, a timer control process that created, stored, and retrieved timers. Being a small part of such a large, impactful project in its early days felt scary but made me feel capable. The team trusted me in a way that I did not yet trust myself, which helped me build confidence in my abilities. A huge part of becoming better-versed in software engineering is simply getting involved even when you don’t feel ready. In reality, the support and mentorship surrounding me acted as guard rails, making sure all code being produced was production-level while giving me a real taste of the development and review process.

In no time at all, I was trusted with a major project— porting an endpoint from our monolith Rails codebase into Turbine, one of our major Golang repos. I spent weeks learning Ruby as I read through lines of code and went down rabbit holes of functions and abstractions. I itemized with excruciating detail what each line of code did and extracted the semantic meaning so that I would be able to understand exactly what the endpoint did and recreate it, bug for bug. This gave me the opportunity to learn Ruby on Rails and get a better understanding of its ‘magic’. I then broke down this monumental task into digestible steps and put my newly acquired Golang knowledge to the test. This project helped immensely with fluency in reading code and figuring out how to take a seemingly overwhelming task and break it up into manageable pieces. It was exciting and gave me a level of autonomy to learn how best to manage my time while working on a large project.

Due to business needs, I was moved back onto the Journeys project, one of the critical new products for the company at the time. I worked with the Infrastructure tech lead to take on tasks related to reliability and improving the overall product for our customers, including:

  • Updating error handling
  • Helping to add more robust stats along the journey
  • Creating the ability to invert conditions and make the product more accurately match customer expectations
  • Adding the infrastructure support for A/B Testing

My One Year!

I just celebrated my one-year anniversary at OneSignal. If you had told me the day I started that I would be working independently on assigned tasks and understanding how to do them or at least how to figure them out, I would never have believed you. Today I am a helping mentor a new Hackbright apprentice coming through the program. It’s exciting to be on the other side of the learning process and to teach as a way to build out and solidify my own understanding. I am so filled with empathy as she navigates the same path I walked a year ago. I relate to her fears, doubts, and desires to succeed and become part of the team. Coming by way of a similar path — being dropped into the middle of an incredibly technical, skilled field and feeling completely out of my depth — helps me to relate to where she is coming from and try to lend support and extra explanation for things that others might forget are difficult concepts to grasp.

My Advice To You

For so long, I thought of this field as completely beyond my reach. When I was getting ready for college and deciding what I wanted to be when I grew up, I hadn’t chosen to major in Computer Science, so now, well into my 20s, it simply felt too late. If any part of that thought process rings true for you, just know that nothing could be further from the truth. There are so many non-traditional paths that can lead you to a successful career in software engineering. If you have even the slightest inclination that it might be for you in some capacity, try it out — whether through self-study, short online introduction courses, or struggling through a personal project.

Also, it’s hard. It takes a lot of work. You have to quickly get comfortable being uncomfortable. There were so many times as I was learning something new or trying to understand a new part of our codebase that I got completely discouraged. There were, and still are, always people to reach out to with questions, but learning how to sit in that frustration and not let it derail me has been immensely important. This is a life skill that extends beyond software engineering.

It’s key to remember that if you’re coming to software engineering from a non-technical career, you are not a new grad with no experience. Prior work experience counts! You bring all of the hard-won lessons, field expertise, and interpersonal skills that you have gained. All of that prior and unique-to-you work experience is an incredible asset to the team. You bring a new perspective that the industry needs and you can make your team more well-rounded and effective. You are not a drain on resources. You are an investment. You are learning and you can and will be able to help and enhance those resources in the long term.

Maybe the most important thing I’ve learned (and finally come to believe!) is that being the newest person in the room is not the same as being the dumbest person in the room. There is nothing easy about being new to a field, about not knowing something when everyone else does, and asking questions that you feel like you should already know the answers to. There are very few situations as an adult where you are learning something completely new surrounded by people who all know so much about it. It’s scary, it’s humbling, and it is an incredible opportunity for growth.

OneSignal’s apprenticeship program gave me the opportunity to transition into a career that I love. I’m immensely grateful for my team’s continued support and I’m thrilled to get to work with and guide the new engineering apprentices to come.

Check Out Current Job Openings

​​If you're interested in joining our growing team, check out our current job openings or reach out to us at support@onesignal.com.

View Job Openings