Cracking the code: developing a new career at Onfido

Alan Carrie

I was promoted to software engineer at Onfido, and immediately took an unpaid 3 month leave. It might seem like a strange decision, but here's the story of how it came about.

In truth, the timing was coincidental. I was getting married and going on an extended honeymoon in South East Asia. Given that both Onfido and my partner’s employer offered similar career break policies, we decided it was too good an opportunity to miss. As for the job–it was my first software engineering role, and I’d been working towards it for eighteen months. I was thoroughly enjoying the steep learning curve of the first two months, and didn’t see it as a job I was leaving behind, but one I’d be excited to come back to. 

Finding the right path

My career began like many others: I finished uni and didn’t have any particular career, or even industry, in mind. A desire to be London-based led me to a job in building services, and huge engineering projects seemed like an exciting prospect. But the bureaucracy and slow pace of large-scale engineering left me uninspired. 

At the time, a friend was also plotting a career change, and had started teaching himself to code. Despite never having met a software engineer, I did some research and liked what I saw. The only problem was I’d never written any code in my life. I’d heard of HTML, JavaScript and Python, but that was the extent of my programming knowledge. Basic online courses gave me more questions than answers; I learned how to do mathematical operations and string interpolation, but struggled to see how that was ever going to turn into a website or an application. Computer science seemed like a whole other world. I was desperate to leave my job, but thought it would take years of evening learning to get anywhere near junior developer level.

Joining a tech startup seemed like a sensible first step. It would be fast-paced, and I’d be exposed to the software world. That’s when I decided to join Onfido’s Service Delivery team.

Getting started (at a start-up)

In February 2016, Onfido was already at around 70 team members, but still very much a startup environment. The relaxed office and social culture were very different from anything I’d experienced before, and for the first time I saw roles in the company that I could envision myself doing long term. But it quickly become clear that the engineering team was highly skilled and very experienced– I had no chance of walking into a tech role.

So when some colleagues set up a coding club for non-engineers, I jumped at the chance. For an hour a week they took us through conceptual lessons and applied exercises, building up to a small project. I enjoyed solving logical problems and the sense of satisfaction when things worked. Spurred on, I also began using online resources in my own time with renewed vigour. 

Making sure I expressed my interest to the right people (and anyone else who’d listen!) paid off when I was given the chance to shadow a technical support engineer for two hours a week. Two months later, in January 2017, I moved to technical support full-time.

Learning on the job

To say I learned a lot in my tech support role would be an understatement. The team is responsible for supporting both Onfido’s product and internal tools. As a consequence, it has a large range of duties and responsibilities. I quickly developed a working knowledge of Ruby, spent time learning about Rails, and gained a good understanding of the codebase. Many hours were spent searching logs and reading code to understand where a potential bug might be. A mentor introduced me to Rspec and the concept of test-driven development, and eventually there came a point where I could suggest fixes to the relevant teams, occasionally making small fixes and improvements myself. 

Having learned so much,I was keen to make the jump to the next level. But the final hurdle proved the most difficult one. An informal attempt to work on one development ticket per sprint didn’t pan out due to the increasing demands on tech support resources, and I began to feel my progress had hit a wall.

Explaining my frustrations to my team lead and others proved a catalyst.A three-month career development plan with goals and methods was agreed, including two protected days a week in an engineering team. Each sprint there were hand-picked tickets set aside for me to work on. There was a weekly slot to go over theory and examples of a chosen computer science concept I’d researched. And of course lots and lots of pairing, where I worked with a senior engineer on sprint tickets. After those three months, the progress was clear to see. Having clear goals, fixed structure, and new methods made a huge impact.

After that, we set a date: the day I would join the engineering team full time. We set another three month plan too, using some of the same methods which had proved so effective.

Building for the future

Completing the move to software engineer felt like mission accomplished. I’d been working towards it for so long, and for the first time I had a job I imagined doing for the foreseeable future. But as many of the engineers had warned me, this was just the beginning of an endless path of learning. The first few months flew past. I went from initially feeling like a burden, to recognising that gradually I was having a more significant impact on the team’s output. When the time came to go on leave, I was pleased with my contributions and far more confident in my day-to-day work.

I’m now back from my time off and feeling more motivated than ever. I had a slight concern that I’d have forgotten everything I’d just learned, but thankfully that hasn’t been the case. Far from it. Immediately after returning I was getting started on a new feature I would ultimately build end-to-end. It’s by far the biggest feature I’ve worked on myself. At first it was quite daunting, and has certainly been a challenge - but one I’ve relished. I was very satisfied and proud when it was released and began to be used by live clients. It hasn’t all been plain sailing of course, but thanks to all the encouragement and support, I’ve surpassed even my own expectations. 

There were many factors in making this journey a success. Onfido has given me fantastic opportunities and a brilliant set of colleagues who’ve supported and encouraged me over the past couple of years. Having people who wanted me to succeed as much as I did prevented me from giving up at times. My transition is a testament to the career development plan model and methods used at Onfido; the concepts research and feedback sessions are now used across many engineering teams by engineers of all levels. I’m looking forward to continuing my own development, and building increasingly complex features along the way. Roll on 2019.

Want to work at Onfido? We’re always on the lookout for talented people. 

About the Author

Alan Carrie

Alan is a software engineer at Onfido.

Previous Article
Onfido welcomes Mohan Mahadevan as VP of Research
Onfido welcomes Mohan Mahadevan as VP of Research

Former Head of Computer Vision for Robotics at Amazon will help Identity Verification provider build market...

Next Article
Why I joined Onfido
Why I joined Onfido

From the tech to the team, the vision for the future to the reward and recognition, there are numerous grea...