One of the most frequently asked questions I get is where to start as a beginner wanting to learn programming. This question is so broad and so personal that I cannot really give an answer that will be true for everyone. What I can do though, is to give you my perspective and story on how I started out, what I do to continue learning and up-skilling, and finally, with the benefit of hindsight and experience, how I would think about making the decision of where to begin today.
As there’s quite a lot to write about, I’ll break this topic down into a number of sections:
- How I got started with programming;
- How I learn new things; and finally
- What I’d do if I was starting out today.
The funny / sad thing to note, is that the vast majority of those online “friends” were female, so it would have been a realistic assumption to assume they’d graduate to become the developers of our current day... but it doesn’t seem to have been so. In my case, I never once even considered making software development a potential career - I only ever saw it as a hobby and nothing else. I didn’t know anyone around me who worked in tech, or as a developer, and it never crossed my mind that I could be one. Perhaps something similar happened with those other female hobbyist developers at that time as well, who knows? 🤷🏻♀️ I feel this goes to show just how important it is to get more minority representation out there, whatever the field, be it engineering, tech, finance etc.
I ended up studying the sciences, then went on to do engineering and finance in university. After spending some years as an investment banker, I quit as I knew it wasn’t what I wanted to do with my life, long term. Finally giving myself the space to think about what it is that really gave me joy and fulfilment, I set my sights on two things:
- I really wanted to work in the tech industry (it was pretty obvious that it was eating the world, and I just love tech), but also...
- I knew I wanted to be a builder (after years of doing advisory in a bank). Knowing how much I used to love programming, my decision to develop these skills then became a really obvious one.
I went off travelling, had a blast, and didn’t think too much about career choices or anything like that, for months. When I got to the point of starting to tire of living nomadically, at around the 4-5 month mark, and thoughts of “what next?” entered my mind, I knew that:
- I wasn’t going back to finance; and
- I wanted to give myself a few months to learn programming full-time, to see if this was really something I could realistically pursue.
That’s when I applied to a 3 month, full-time, in-person bootcamp in London... and it was pretty much one of the best decisions of my life. The thing to highlight though, is that bootcamps are definitely not for everyone. They’re also not cheap, so if you’re trying to make this decision, here are some bullets on why it was a good decision for me.
- I’m an all-in or nothing kind of person (and bootcamps are definitely an all-in commitment). I don’t like doing things in half-measures. If I’m interested in something, I tend to immerse myself completely in that world, and can very quickly become obsessed with it. It’s true of a lot of my ongoing interests, and is both a good and bad trait.
- It’s good in that I feel like I progress quickly in the early days, which gives me forward momentum to continue learning (flywheel effect).
- It’s bad in that it’s all consuming in my life, and pretty much everything else takes a backseat for some time. What happens is that the fervour does eventually taper off, and I either drop that subject (e.g. investment banking), or it remains a core interest of mine, and I carry on progressing with it in more of a steady-state fashion (e.g. nutrition, health & fitness and drumming).
- One of the main skills the bootcamp focused on teaching us was learning how to learn. The languages and frameworks taught at the bootcamp ultimately only serves as an introduction to the basics of programming. In the real world, languages go in and out of fashion, and you’ll need to chose the best one for the problem at hand, rather than the one you know. It’s therefore much more important to learn how to learn new things quickly.
- I joined the bootcamp way before COVID was a thing. Learning in-person with other similarly minded folks really added to the immersive experience, as I was surrounded by others all wanting to learn quickly, and progress to the same goal. I was living, eating, sleeping and breathing code for, on average, 18 hours a days, for 3 months straight (and loving it!). It’s a lot like learning a spoken language - if you want to learn French, one of the fastest ways to do so is to go live in France and immerse yourself with other French-speaking people, 24/7.
- Bootcamps are really focused on giving you practical knowledge. Keeping up with the syllabus meant I’d end each week with a working app. This was great from a GitHub portfolio building point of view, but also for building my confidence - it’s amazing to be able to mark your progress by interacting with programs you built by hand...and really satisfying. 😊
- Note that bootcamps are generally hyper-focused on ensuring you develop practical skills because a lot of them will also have a job referral function to help place you in a role after you graduate. This is great, if getting a software developer job is what you want. One downside is that focusing so heavily on the practical means a lack of focus on theoretical computer science knowledge that makes one a well-rounded engineer. The good news is that you can learn this in your own time, after you graduate.
- Part of the syllabus involved teaching us programming best practices. This included usage of git and GitHub, Test Driven Development (TDD) and pair programming. You start by building good habits straight away.
- The final 2 weeks of the bootcamp were reserved for final projects. It involved self-organising into groups of your choice, where you’d then decide on an app to build, build it, and finally present it to the entire bootcamp, alumni and businesses looking to recruit. It’s a practice mini-sprint with a deliverable at the end of it.
- Bootcamps are an interesting place in the types of people it attracts. My cohort included people from really different experiences and backgrounds who I would typically never mix with. We were however, all united by the same goal...and having paid a lot of money to try to get there, were all super motivated to succeed. I was really lucky, and ended up meeting 2 people in the bootcamp who would become my co-founders upon graduating.
- It isn’t personalised and the syllabus waits for no one. It’s solely up to you to keep yourself motivated and keep up with the fast pace of learning required.
- Though bootcamps are catered for pure beginners, because there’s so much to learn, it’s unlikely that they’ll take you through HTML and CSS.
- There was no handholding with the bootcamp I went to. In fact, it was the opposite where I was just dropped into the deep end. There was no homework. There was no exam. There were no marks. You put in as much or as little effort as you want. It was frustrating and it was difficult - you need to know whether you thrive or flounder in these types of situations.
Though it isn’t recommended, I started networking and applying for jobs before graduating (the reason it’s not recommended is because they want you to focus on learning how to program, rather than worrying about finding a job). As a result of this, I actually received a couple of job offers immediately upon graduating (so hey, bootcamp works! 🙌🏻).
I ultimately ended up going a completely different direction and started my own tech startup with a couple of friends I met at the bootcamp. Using our newfound coding skills, we created our MVP in a week, shipped it out for feedback, and went on our way! The main point to make here is to continue programming immediately upon graduation, and build real projects. This forward momentum is really important for habit building, to ensure you keep flexing your programming skills. Again, much like learning a language, you need to keep practicing until it’s ingrained, to ensure you don’t forget what you’ve learnt. 💪🏼
I was also lucky to effectively form my own group of developers to work and engage with. The process of continuous learning is easier if you have a supportive group to help you along...because the learning really starts at this point. Having to program to solve real-life problems for the first time really drove home the point that there were (still are!) so many things that I didn’t even know I didn’t know. It’s all good though, because the meta skill you get of learning how to learn comes in handy at this point. 😉
Next up: How I learn new things and continue to develop my programming skills.