My name is Nan and I’m a software engineer on the Developer Engineering team at OneSignal, responsible for maintaining our developer-facing products including mobile and server-side SDKs, or Software Development Kits, and overseeing Developer Relations. However, my journey in this field has been anything but linear. When I started at OneSignal a year ago, I began as a software engineer apprentice for the first 6 months. Here’s a bit about my experience in the program.
My Traditional and Nontraditional Background
My path in this career is both traditional and non-traditional at the same time. Several years ago, I completed a Bachelor’s in computer science, but was deterred from working in the industry. Failing to pass Leetcode-style technical interviews fueled my self-doubt about my innate skills and abilities. At the time, I lacked a growth mindset.
I went on to work in education and teach high school math. It was only during my graduate program — as I learned about fostering growth over fixed mindsets, and taught students to persevere over challenges and difficult material — that it slowly dawned on me that I had not practiced what I was now preaching. So, I decided to rededicate myself to the Engineering path by re-learning some computer science basics and joining Hackbright Academy, from which I graduated in March 2021.
At the end of my Hackbright program, a group of OneSignal engineers visited our cohort virtually to give us their time and talk to us one-on-one and answer questions, share advice, and conduct mock interviews. They were kickstarting a new software engineering apprenticeship program and looking to start the first cohort with two apprentices. I decided to apply! The interview process was smooth and I felt comfortable talking to everyone I met. For the first time, I even felt supported during my technical interview.
I was elated when I was offered the role and decided to accept because of many factors, including my positive interview experience, a positive impression of the company culture, the value of the training and mentorship aspects of the apprenticeship — including a dedicated mentor and a generous training budget, the opportunity for learning and growth in a small startup environment, and the reach and growth potential of the product and company itself.
About My Six-Month Apprenticeship Journey
I joined the Developer Engineering team in June 2021 and began working with the OneSignal client SDKs. These OneSignal SDKs enable developers to integrate OneSignal into their mobile or web applications. There are mobile SDKs for native Android and iOS applications, and for platforms like React Native, Flutter, Xamarin, or Unity, as well as SDKs for the web.
With my generous training budget, I chose an Android development course in Kotlin on Udacity, which I worked on throughout the duration of the apprenticeship.
During onboarding, I was guided through general product knowledge, technical product knowledge, tools and workflows, debugging skills, setup of the various SDKs available in example applications, and more. I also met with my mentor often, who set up quarterly goals with me. My mentor and I met weekly to evaluate my progress toward these goals. Throughout the apprenticeship, I was lucky to learn extensively and work with lots of different technologies. I also had the support of my mentor and other engineers on my team.
1. Working in the OneSignal Android SDK
I started with working in the OneSignal Android SDK, which comprises an extensive codebase in Java and Kotlin. Through this process, I also learned about Android development and testing.
2. Working in the OneSignal iOS SDK
I also worked with the OneSignal iOS SDK written in Objective-C, which is also a large codebase, and learned about the basics of iOS development.
3. Working in the React Native, Flutter, and Cordova SDKs
I then ventured into working in the React Native, Flutter, and Cordova SDKs, fixing bugs and adding features to them.
4. Troubleshooting Issues in Github
I also answered Github Issues submitted by users of our SDKs and investigated bugs and crashes reported by users. These issues often pose technical challenges — the rare and non-reproducible crashes on a customer’s application, confounded by a lack of access to customers’ applications.
5. Converting our React Native SDK to TypeScript
One of my larger tasks was converting our React Native SDK to TypeScript, which involved extensive learning and reading.
6. Developing a Mobile App
One of my most substantial projects towards the end of my apprenticeship was developing a mobile application that uses our product which would serve to demonstrate the functionality of OneSignal for our sales team. The goal of this mobile app is to allow prospective clients to download the platform on their devices and receive personalized push notifications and in-app messages during a demonstration call. I had nearly full ownership of the development of the application and I worked with the sales team, product managers, and designers to develop the application using React Native. Up to this point, my experience hadn’t focused on the visual or interactive components of mobile applications, but instead on developing SDKs with no UI at all. As such, this was a different learning experience focused on visuals, UI/UX, and responsiveness.
I was also involved in the deployment process of this application to the Google Play app store and Apple App Store. Deploying to Apple was a difficult process and after several rejections and attempted workarounds, we resorted to deploying the application to TestFlight (Apple’s beta testing platform) and having prospective customers download it that way. At the end, I also presented a demo of it at the weekly company-wide meeting, which was a fulfilling experience.
Becoming a Software Engineer
My transition out of the apprenticeship program was seamless, and based on my own readiness. About 6 months after I started the apprenticeship program at OneSignal, I went through a performance review cycle. I had surpassed the expectations of an apprentice and was promoted to a Software Engineer position.
My Reflections on the Apprenticeship Program
An apprenticeship is an excellent transition to start your professional career. It’s important to seek out an environment where there is a focus on learning, where you will be supported, and where you will contribute to meaningful work at the company. I knew these were key features of the OneSignal Apprenticeship as I had a dedicated mentor, a generous training budget, and I jumped right into the OneSignal SDK codebase in my first week.
Expect to at times feel overwhelmed and hit with self-doubt. Don’t let the learning curve discourage you, and reach out to other early-career engineers to create a community. I remained in contact with a supportive group from my Hackbright cohort and realized we all felt this way as new engineers. One year in, I am hardly an experienced engineer, but I can look back and see all the things that used to be difficult and confusing, now feel navigable.
I am fortunate and grateful to have started my career here at a OneSignal apprenticeship. Looking back, this past year I have learned a tremendous amount, from having no mobile engineering experience to writing native Android and iOS code, as well as software for other platforms like Flutter, React Native, and Cordova. In addition, I get to collaborate with great colleagues and work on interesting and fulfilling projects for a company whose leadership I also admire.
Choosing to try again and joining OneSignal’s apprenticeship program were two of the best decisions I have ever made. I love working at OneSignal and I love the work I contribute to every day.
Check Out Our Current Job Openings
If you're interested in joining our growing team, check out our current job openings or reach out to us at firstname.lastname@example.org.Join our Team!