New Engineer

Diary of a Self-Taught Engineer

After about 9 months teaching myself how to code, I have accepted an offer with the Guardian Newspaper to join their Digital Fellowship programme as an Associate Software Engineer.

In this article, I want to support readers who are already teaching themselves how to code or are considering it.

For others, I hope this article sheds some light on how we can support those trying to become engineers without bootcamps or formal education.

Thank you so much @HawraMilani for kindly taking this pic of me speaking at FullStackConf! ❤️

What does self-taught mean?

To me being a self taught engineer means that you haven’t completed any formal coding education, such as a bootcamp or a Computer Science degree. I would love to hear other opinions on what this term means to you.

When I started considering a career in tech, I didn’t realise there was such a thing as “self taught”. I just assumed that anyone without a CS degree would have to do a bootcamp like Makers Academy, General Assembly or Flatiron. So in Autumn 2018, I started preparing for my bootcamp application.

I really wasn’t sure how I would manage to do a bootcamp, because I had a 9 month old baby, I live in the suburbs at least an hour from the city where all the bootcamps are and I was breastfeeding. The cost of the bootcamp combined with expensive London nursery fees meant that it was a significant investment. This and the lack of flexibility in the programmes meant I was not looking forward to the prospect.

Luckily, I received a scholarship to Mozilla’s View Source Conference in London. It was my first ever tech conference and there, I met a lady who would become an important mentor for me. She was the first one who told me that I didn’t have to do a bootcamp and that I could definitely get a job by teaching myself.

I am so grateful to the bootcamps whose marketing reinforces the positive message that it is possible to change careers into tech. Without them I may not have started my journey. However, for many this option is a challenging one and the self-taught route may be preferred.

How do I choose what to learn?

There are so many different resources out there that can help you on your learning journey. For example, you could use a platform like CodeAcademy, Freecodecamp, Exercism, Codewars or a Udemy or Coursera course.

You could also find a GitHub repo that you feel passionate about and learn by contributing to a project with other developers. Or, you could start by completing technical tests and putting them on your personal GitHub profile. Or, dare I say, create your own website! There are so many options!

I would say start with the goal in mind. Why are you interested in learning how to code? What kind of job would you like? Frontend or Backend?

Once you have an idea of the kind of job you want to pursue, find job adverts that describe your dream job. Which skills and competencies do they require? Which languages do you need to learn? Which testing frameworks? Do you need to understand git and bash programmes? Make a note of the requirements.

Can you find people on LinkedIn who have that job title? If so, it would be worth reaching out to them to ask what advice they can give on the evidence you should build to make a compelling application for an entry level job. Would a GitHub profile with your work be evidence enough? Do you even need that or do you just need to pass a technical test to get your dream job? Finding out the answers to these questions will determine the path we take.

How can I structure my self-taught journey?

The prospect of trying to teach yourself how to code may seem really confusing. There are so many resources out there. Which ones should you choose? Also, what should you set as your goal. Which kind of job should you be targeting?

I monitored my job applications using Trello. The rejections are the last column on the right 🙂

One of my mentors encouraged me to start applying for junior developer roles very early in my coding journey. I was rejected from 99% of these jobs, but what I found helpful was the conversations I would have with the HR representatives and even moreso, the technical tests I would receive.

Applying for jobs is not easy. I would receive multiple rejections in one week. At one point I thought about quitting, but I’m really glad I didn’t. Instead, I saved all of the technical tests I received and I started completing them really slowly. I used the tests to structure my learning. I put them on my GitHub and used the test challenges to discover what I needed to learn next.

Finding mentors

It’s interesting that I call myself “self-taught” when in actual fact, I couldn’t have made progress without the fantastic mentors that have supported me over the last few months and given me so much of their time.

Being self taught doesn’t necessarily mean you have to be alone, battling with google and your computer. I often think of learning how to code in the same way I experienced learning classical music as a child.

In music, it’s very normal to have regular lessons with a teacher and then to go away and practice by yourself before your next lesson. In the same way, with coding I found people who would kindly pair with me or answer my questions over email or chat so that I could solve problems with my code that were not initially clear to me.

I participated in the Ruby for Good open source community event in Washington DC

I used open source communities to find contributors who would be happy to pair with me. I also used meetups like Codebar in London and companies like Thoughtbot who have office hours where you can pair with a professional developer.

I found mentors who genuinely love coding, teaching and helping others. I also felt that when potential mentors saw how passionate I was and how interested I was to learn, it was easier for them to become committed to me and my journey.

How to keep yourself accountable

A major reason for seeking formal education is the need for structure and accountability. I open sourced my learning plan and used some agile practices (sprints and retros) to keep myself motivated and learning every week. I shared my plan with my mentors and got their feedback on how I was doing.

I open sourced my goals, weekly sprints and retros to keep myself accountable.

I also started creating a network of people who like me, were trying to teach themselves how to code, I would meet them at tech conferences and meetups and keep in touch with them. These people became my support group. When I got rejected from a job or when I was feeling low, I would turn to them to lift me up again.

One of my favourite posts on rejections is from the amazing Linh Nguyen: I read and re-read articles like this whenever I felt low in order to keep my motivation up.

Here is an actual recent email I sent to a mentor:

— — — — — Forwarded message — — — — –

On Wed, 12 Jun 2019, 10:12 Amina Adewusi, wrote:
I feel like I’m hitting a lot of walls. I am struggling to get past technical test stage. I don’t know how to keep going on this journey in a balanced way (with a full time job and family) knowing that it could take me quite a number of months before I learn enough to pass technical tests.
I would really appreciate your encouragement and any tips you have on how to keep going.
Thank you,
Amina xx

— — — — — — — — — — — — — —

I didn’t hold back to share my struggles with others and reach out for help. I would suggest doing the same in order to receive the emotional and technical support you need.

Choosing the right job

A few months after receiving many job rejections, I received some interview feedback that I was in fact at graduate level rather than junior developer level and that I should focus on applying to graduate jobs and apprenticeship schemes rather than junior developer positions.

This feedback was very helpful for me and it was largely true. I had not realised that there was a difference (at least in London it seems) between graduate level and apprenticeship roles compared to junior developer roles. In fact, when I started applying for apprenticeships, I felt I was a competitive candidate after all of the practice I had been doing for junior roles.

I would recommend to others keen to start their first job as soon as possible to look out for apprenticeships, graduate roles and other entry level schemes. Otherwise, I’m very sure it is possible to successfully get junior developer roles, it just might require a little more time.

Be visible

I was pushed by one of my mentors to speak at tech conferences. I never ever thought it was something I could do. I wondered what I could offer a technical audience?

Speaking at my first ever Tech conference, the Ruby Hamburg Unconference

However, after speaking at a few conferences this year, I realise that there are so many people trying to get into tech who are forming an increasing part of conference audiences. Also many engineers will have juniors in their team. I found that in fact I did have something to contribute as a speaker.

I highly recommend speaking at conferences, even before you have a job. I received a few job offers after people heard me speak at conferences, but even more valuable than that, I made so many friends. Audience members would come up to me after my talk and introduce themselves. It was a wonderful way to widen my support network and I wouldn’t hesitate to recommend it to others.

Pacing yourself

We live in an age where we have a strong desire to complete chapters of our lives in haste. We may have very good reasons to do so, but if at all possible I would highly recommend teaching yourself how to code at a sustainable pace.

Speaking on a CodeMortals YouTube livestream with other career changers!

I had an interesting experience where I actually broke down in public whilst attending a coding workshop.

As self-taught engineers we can be very hard on ourselves, suffer from imposter syndrome and push ourselves to the limit. I really struggled with knowing when to take a break. Teaching oneself how to code is a long journey, more of a marathon than a sprint. Taking the time you need to do this whilst prioritising your wellbeing is vital for success.

Can I help you?

Leave a comment with your view. I welcome views different from my own. We all have varying experiences and it’s great to hear from everyone.

Please reach out to me if there’s anything I can help you with. I am particularly keen to support under represented groups in tech.