Today I am sharing an interview with Carl Mungazi, a self-taught developer based in London who switched careers from journalism to web development. Read on for Carl's tips for teaching yourself to code, building your own projects and getting that first job.
Hey, thanks a lot for doing the interview! Could you give an introduction for coders who want to know more about you?
Sure! I’m a frontend developer at Limejump, an energy company in London. Background-wise, I studied journalism at university and worked as a journalist in Luton (near London) for four years before switching to coding in 2016. Since then, I’ve worked as a frontend developer for an e-learning company, a fintech startup and more recently, an IoT startup.
How did you first get interested in programming?
What made you move from journalist to programming? Did you find that you had transferable skills?
Initially, I wanted to combine coding and journalism. I knew newspapers such as The Guardian and The Times employed newsroom developers who created various cool graphics and tools for their websites. My editor at the time was supportive of me but unfortunately, those higher up than her, for whatever reason, did not seem to share that enthusiasm, so I ended up looking elsewhere. It took me 14 months of self-learning before I was blessed enough to find a company which took a chance on me.
So how did you learn to code?
I started with Codecademy but became bored fairly quickly. The majority of my learning was done via Treehouse and Free Code Camp. I also used Udacity intermittently. I bought a book on HTML and CSS but never really used it. After building my news aggregator, I built other apps such as a to-do list and a calculator. My learning was not really structured but more plodding along with whatever seemed to work.
Did you ever consider doing a degree in Computer Science and if not, why?
It’s funny but my journalism degree had a multimedia module which required us to build a website using Dreamweaver. I enjoyed it but not enough to switch courses. I have toyed with the idea of doing a Computer Science degree but it has never really appealed to me. I feel like when deepening my computer science knowledge becomes a priority, I can create my own curriculum using the experiences of others and the wide variety of courses out there.
Before learning how to program I had been teaching myself Spanish (I paused and recently started again) so I think I enjoy the challenge of self-teaching. I am acutely aware that there are many things I do not know, including some basics, so I am always looking out for opportunities to increase my knowledge.
Can you talk us through the process of getting your first job as a web developer?
As I said earlier, it took me 14-months of learning before I felt ready enough to apply. That involved attending meetups after work and talking to programmers online. Most of my applications went unanswered and I had a couple of interviews but ultimately was not hired. The company which hired me gave me a technical test to do and even though I felt I had not done particularly well, they said I had been in the top two of applicants. They said they liked hiring self-taught developers and that was that.
How would you encourage someone who thinks coding is too hard?
Yes, it is hard. But it is also very, very fun. I think it depends on the person. I learnt to code because I really, really wanted to build a news aggregator. That desire is what kept me going through the late nights and times of frustration, confusion and doubt. When my company did not support me in creating an avenue where I could combine coding with journalism, that gave me even more fuel.
I think this principle applies to everything. I think cooking is hard because I don’t enjoy it at all. But I am sure somebody who enjoys cooking would tell me if my reason for learning how to cook was greater than the difficulties presented by cooking, I would eventually become a half decent cook.
Has your lack of Computer Science degree ever been brought up when looking for jobs?
No. All the companies which have rejected me and told me why have never mentioned my lack of formal training. It has usually been my lack of experience. I think a Computer Science degree is one signal companies can use to assess candidates, right? I actually got a third in my journalism degree, which was much lower than I expected.
Naturally, some companies judging potential journalists might mark me down for that so I decided to show them different. After finishing university I started covering council meetings in my spare time and pitching stories to my local papers. I also covered local courts with a regional news agency and the local sports scene on weekends for the newspaper which ended up hiring me. I took this approach when applying for coding jobs and I would like to think it helped.
Can you tell us what working at Limejump is like?
Traditionally, energy has been provided by large, solitary power stations but Limejump is trying to change that by creating a virtual grid composed of many different power sources, and then using it to supply the National Grid. Our focus is renewables, so solar farms, wind farms, hydro etc but we also have fossil fuel power sources in our system.
Working here is really cool because you are given the space and trust to do what needs to be done. Our engineering managers are not prescriptive about how you build software and you are allowed to explore various options (within reason, of course).
Currently, my team is migrating an old Angular 1 app to React, so that has been fun (choosing your own stack and learning new things) and challenging (wading through legacy code). The energy industry is very complicated so from a problem solving perspective, it offers many opportunities to get involved in some very meaty stuff.
Do you have any tips for people that are looking for their first job in web development?
Learn by building tools which solve your problems or the problems of people around you and then ship it, even if you are the only person who uses it. It keeps you interested when things get tough, it teaches you how to use code to solve problems and it shows companies you know how to ship code that solves a problem.
It took me a while to realise this but companies care more about people who know how to solve problems. It just so happens that in our case, programming happens to provide better solutions than other alternatives. Also, do not be afraid to approach other developers online for help or join self-learning communities such as those provided by CodeNewbies and Free Code Camp. I am happy to help or share the little that I know, so you can hit me up on Twitter.
Can you tell us about any projects you make and plans for the future?
My current project can be found here. One of the things that has bugged me is my lack of understanding of the concepts behind frontend tools such as UI frameworks, module bundlers, test runners etc. So, in the spirit of self-learning, I decide to build basic versions of these tools as a learning exercise. I am blogging about the process too because I want to create the kind of content I wish existed when I started coding.
Going forward, I am definitely going to be doing a lot more writing, especially around the internals of popular open source libraries. One of the things I have come across whilst doing this is real world exposure to some computer science concepts. For example, React uses a linked list to manage its updates whilst Redux’s connect function (at the time I looked at it) uses the facade pattern. I can easily recall these examples because I have come across them in the tools I use on a daily basis as opposed to reading them in a book.