Becoming a developer — without a computer science degree

Advice based on my journey to becoming a junior software engineer at Cytora

Aisa
Engineering at Cytora
7 min readSep 17, 2020

--

When I graduated from the London School of Economics with a Master’s degree, I had no idea I could be in a full-time developer role six short months later. After all, my experience was in higher education and languages, and computer science was a field I didn’t have as much experience in at that time.

This post tells the story of my move into engineering, and is intended to provide some guidance based on my first-hand experience for anyone looking to take their first steps into the industry.

Spoiler alert: it’s the best decision I’ve made!

Opening the door to engineering

Looking back, I can see traits that pushed me to consider software engineering as a career. I’ve always been interested in understanding how things work. As a kid, I would regularly disassemble toys to find out how they worked, driving my mum crazy in the process. I have always loved reading about science and was the kind of child who would constantly ask questions and wonder how everything works.

But I never thought I would be good at programming. My family and friends always told me I was good at languages. Growing up in Russia, my school had sewing and cooking lessons for girls — engineering wasn’t part of the curriculum. Maths was a topic I was good at and I enjoyed solving geometry puzzles but becoming an engineer never crossed my mind.

A couple of years before graduating from LSE, I had enjoyed taking an online Python course but quickly moved on due to university and work. In January 2019, I started taking Harvard CS50 hoping to learn more about computer science. That’s when I realised, to my surprise “Hey, I’m actually really enjoying this”!

10 years later, after intense research and self-discovery, I decided to sign up for Le Wagon, a two month, full-time web development bootcamp in London.

The bootcamp was challenging: 12-hour long studying sessions, so much knowledge to take in at once (JS async/await and yield in Ruby made me sweat!). On multiple occasions, I questioned my decision: could I really make it in this industry? Despite all these challenges, my team and I managed to build a couple of web apps in 9 weeks — just in time for Demo Day when we presented a Spotify-based game in front of about 100 people!

Shortly after graduating, Le Wagon organised a Hiring Day where we met a few companies, including Cytora.

At the event, I met Cytora’s VP of Engineering and People Director. We talked about Python, Go and the difference between interpreted and compiled languages. I was hungry for knowledge and grateful to be having a first-hand discussion with people working in tech.

I was delighted when I was invited me to an interview in Cytora’s office in Farringdon. And two days later, I walked into Cytora’s office for a one-hour technical interview, followed by a discussion about my expectations, career and values.

Interviews can be stressful even for seasoned developers! But fortunately, some of the knowledge I had acquired at Le Wagon proved to be surprisingly transferable: for example, knowing about the SideKiq Ruby gem for background job processing helped me with the whiteboard portion of the interview.

I did my best to show my thought process even if I did not know if it was 100% correct and ask for clarifications when necessary. The brilliant engineers who interviewed me made the whole experience feel more like a friendly engineering discussion than an interview. We talked about my goals, experience and expectations and I got to learn more about the exciting products Cytora was working on.

At the end, I was given a tour of the engineering room or, as we call it, the “commit cave”. I felt so positive about the experience: even if I was not sure I would get the job, I had met great people, practiced system design and learned more about being a developer in a tech start-up.

A couple of days later, I received a long-awaited call from Cytora. After months of intensive learning and crippling self-doubt, I had managed to get my first job as a developer!

Starting life as a junior software engineer at Cytora

When I joined the company two weeks later, I was eased into company life with great onboarding — which included regular meetings with my lunch buddy, a fellow engineer who helped set up my work environment and showed me the best spots around the office. My engineering manager also held multiple meetings (and lunches) with me during the first week where we discussed how I’m doing, planned for the next month and went into detail on how engineering works at Cytora. I felt anxious, but the straightforward onboarding and help of my new coworkers quickly put me at ease.

Meanwhile, my mentor set up pair-programming sessions. I loved our impromptu “lecture” sessions where we explored concepts I wasn’t familiar with. In fact, I still have the drawings my mentor drew to teach me more about concurrency vs parallelism, memory allocation, stacks vs queues and data structures! With time, I grew more independent and became responsible for building more on my own.

To this day, I’m still amazed at how technology works. Are you saying a message in a queue can trigger a cloud function, and the function will replicate itself to accommodate message volume? Or that we can speed up processing by using concurrency? Be aware of race conditions though!

Atomicity, idempotence, high-cardinality keys, advantages and disadvantages of distributed systems — these are just some of the exciting concepts I get to encounter every day as an engineer at Cytora. I never get tired of discovering amazing things a computer can do and how humans built software systems on top of it. Reading books and articles on architecture and databases, doing a Kubernetes course and playing with Docker containers on my laptop are some of the favourite parts of my days.

It has been a year and I know so much more than I did when I started. I was given responsibility, autonomy and trust to work on features that drive product growth and development. For me, this is the ideal learning environment.

If you’ve just begun your journey as a developer, here are three tips:

1. Be patient and perseverant

Especially during bootcamp, I was obsessed with trying to get to the bottom of things I couldn’t understand straight away. I would get upset if something didn’t click and would be really hard on myself.

But programming is not easy for everyone. There are times when you won’t get some abstract concepts right away (at the beginning, I struggled with interfaces in Go) and that’s fine. There are concepts you will get to understand naturally as you learn more about other concepts.

Not understanding doesn’t make you a bad developer, it’s all a part of the process. As you add more knowledge to your internal library, you will eventually see how concepts relate to each other.

This relates to learning but also reading large codebases and naturally, debugging. I encountered bugs I couldn’t understand (for instance, I found debugging microservices that communicate with each other asynchronously can be tricky). Finding what’s broken somewhere along the pipeline can get frustrating but every software engineer has had this experience.

Don’t give up, take a break and come back to it with a fresh mind. And remember, every bug is a valuable learning experience.

2. Get in touch with people

Starting a new career in tech was intimidating but I quickly realised I didn’t have to walk this path alone. As well as all the help I received from my colleagues, I discovered that there are a lot of people on a similar journey!

Don’t be afraid to message these people, they are looking for someone to share their experiences with too. Don’t hesitate to go to conferences and events. More importantly, don’t be afraid to ask questions.

3. Learn how to ask good questions

When I started working as a developer, I was afraid to ask questions to my mentor and colleagues. I quickly realised that asking questions is one of the best ways to learn and most people will be happy to answer your questions — provided you ask good questions. Asking a good question requires a bit of practice, especially if you are new to programming!

The key is to always try to find an answer to your question on your own first, unless it’s a highly specialised one. Google and Stack Overflow are your friends. Asking questions is something all developers do every day but you need to show that you did your part first. Explain what you already tried, what doesn’t work, and what you think the problem may be.

Basically, don’t expect people to give you the complete solution. And remember, the right question doesn’t make you look stupid: it shows you are eager to learn more :)

If you’ve just begun your journey as a developer — good luck! And enjoy the ride. It won’t always be easy, but finding a good network to lean on and a great company to support you, as well as having the right mindset, will set you up for success.

For more information on open roles at Cytora, see our careers page at www.cytora.com/careers

--

--