<h1>Hello, (Tech) World!</h1>

Before we start, it’s important to understand that, to be a “woman in tech”, you don’t have to be the clichéd programmer: perpetually swamped in an oversized hoodie (with the hood up too!) and consistently fuelled by coffee. Not all “women in tech” code - some are entrepreneurs, others are product managers, still others are in charge of product design or even marketing at tech companies.

“But Tilly, stop beating around the bush - I’m actually just interested in coding.” Well then, speak friend, and enter! Although I’m by no means experienced (I’m not even really confident calling myself a coder at all), I offer my tuppence on the resources and steps I found useful in my own journey so far.

Step 1: The Basics, with Harvard CS50x

When it comes to simply taking that first step towards coding, I think the thing that flings most people into an endless abyss of procrastination is the age-old: “There’s so much out there: I don’t know where to start!” Well, panic no more. Before you dive into the nitty-gritty, might-as-well-be-Greek sounding words like PHP, IDE, Erlang and the Document Object Model, ZOOM OUT. Step back. Breathe, and pace yourself. Before you get to any of those details, it’s so crucial to start from the basics.

That’s where Harvard University’s CS50x course (self-paced and available for free from edX) saved me from a lot of heartache and agony. This course is so popular it’s been described as an almost-cult (!) before. Receive lectures from Dr David J. Malan (a Harvard Professor in Computer Science), complete with interactive problem sets, an almost-celebrity-status team of mentors - all from the comfort of your own home. Honestly, for a big fat price tag of £0, I don’t think you can get a better course than CS50x.

DJmu0zqX0AAQPQw.jpg

The best tip I have here is this: no matter how basic you think these introductory courses might be: DON’T SKIP ANYTHING. You’re allowed to watch lectures on 1.5x speed (it’s my favourite trick), but DON’T. SKIP. ANYTHING. Even if you think you already know the difference between binary vs decimal. Even if you topped your year in maths at high school and think you know everything about integers. Even if you’re dying to move straight onto your “sexier” courses like JavaScript and Ruby on Rails. This serves as extremely fundamental groundwork that you need to firmly grasp in your mind before you embark on more fiddly subjects. My source? My own experience. Listen: I’ve done the skipping thing many a time before, only to tear my hair out and having to come back to the basics, tail in between my legs, when I feel blocked when learning the “fancier” stuff. Trust me on this one: your future self will thank you later.

Step 2: The “fancier” stuff

Got your fundamentals etched into your memory yet? Feel so confident you can tell your <div>’s from your <span>’s in your sleep? Congratulations - you’re ready to dive into something meatier.
At this stage, you will know that (at least if we’re talking about web development) programming languages might be broadly categorised into front-end and back-end: front-end being whatever you are able to see on a website (for example the words - that’s HTML; the pretty colours - that’s CSS; and the interactive elements such as alert windows and clickable buttons - that’s JavaScript), and back-end being the magic that happens behind the scenes (for example, if you went onto Airbnb, you wouldn’t be able to see the algorithm behind the scenes matching you to your next holiday destination, but you know it’s there and it’s working).

When it comes to choosing whether you want to be a front-end or back-end engineer, there’s no set rule. In fact, being a “full-stack” engineer (i.e. you’re comfortable with both front-end and back-end languages) means that you can build an entire, fully functioning website on your own, which may make you extremely in-demand later on, when you want to consider tech as a full-time career.

With that in mind, I started The Complete Web Developer in 2019: Zero to Mastery, which I bought from Udemy for just £10.99 - cheaper than two lunches in London! Of course, you don’t have to take this exact course, but what I would like you to take away is HOW I chose this course out of so many others I could’ve chosen - six particular factors made my decision beyond easy:

  1. Reviews & Ratings: On established platforms such as Udemy, edX and Coursera, courses will often have reviews and ratings. I chose Andrei’s course because it had almost 20,000 ratings, averaging 4.7 stars. 20,000 people can’t be wrong!

  2. Price point: Nowadays, coding bootcamps are all the rage. (Don’t know what bootcamps are? They tend to be immersive “schools” where you pay around £10k - depending on which provider you opt for - for a very comprehensive crash course in different areas, from Web Development, to Data Science and Cyber Security. (Check-out SheCanCode’s Bootcamp Directory). The idea is that, in a couple of weeks/months, you could get from not knowing a line of code to being hired by top tech companies as software engineers. Some famous London-based providers are Le Wagon London, Flatiron School and General Assembly.) Whilst bootcamps are a great option for those who can afford it and are very sure that they want to commit to a full-time position as a software engineer, especially for somebody like me (I’m a full-time student), it’s just too expensive. In these cases, online courses are a great alternative.

    * Pro tip: Regarding the Udemy course I recommended, don’t panic if you click on the link and the “normal” price is listed as £199 - Udemy does extremely frequent sales where the price drops drastically - if you check back at the right time, you’ll easily find the same course available at £10.99.

  3. Instructor: It almost goes without saying, but spending 30+ hours of lecture time with one person is a huge commitment. If you were doing this course in the evenings after work or school, I’m sure you wouldn’t want to be sitting in front of the computer screen watching some boring, uninterested instructor or other, drone on and on about some programming concept or other. In the reviews & ratings, look out for particular comments which talk about HOW that particular instructor teaches. Does it suit your learning style?

  4. Relevance: The best thing about this course is that Andrei (the instructor) avoids a very common trap that other instructors fall squarely into. What’s that? Wasting a load of time on now-obsolete conventions or syntaxes (jargon-buster: “syntax” is just a fancy way of saying spelling, grammar & punctuation, only in programming rather than normal human languages). As programming evolves at break-neck speed, the hottest thing today might be considered bad practice tomorrow. The beauty of online courses is that you tend to get lifetime access the moment you pay, and they get updated frequently (if they are well-maintained) to catch up with the latest best practices and trends.

  5. Community: Whatever course you choose to take, there will be moments when you’re trying to do the exercises and, for the life of you, you just cannot figure it out. That’s where community comes in: At the beginning of Andrei’s course, every student is invited to to join the course forum, which is kept very active. You can find mentors and buddies here, and Andrei himself often posts inspiring success stories and coding challenges into the #general channel.

  6. Career prospects: Whilst you shouldn’t trust this too much as a metric/get too carried away, it’s normally a fair indicator of a high-quality course if alumni/graduates have afterwards been hired as software engineers at good tech companies. In Andrei’s case, many of his students have landed roles at big names such as Apple, Google, Amazon, JP Morgan and IBM.

Step 3: Put your skills to the test

Wow - look how far you’ve come! If you’ve been super dedicated, it might’ve only taken you a couple of weeks to learn how to build an entire website from knowing no code beforehand. But wait - just because everything made sense during the lectures, does that mean you remember it all? Even if you can, can you put it all into practice?

We’ve all heard the age old phrase “if you don’t use it, you lose it”. Nowhere is it more true than in coding. Again, I’ve been there and done that: I would painstakingly complete an entire course on JavaScript, only to end up not using my new-found knowledge to build something tangible. Then, within a few weeks - lo and behold - I’ve lost everything I learnt. (Pro tip: Make notes! Lots of notes. Personally, my favourite note-taking software is Bear, as it has features that allows you to mark down code/code blocks as opposed to normal text.)

So, in this section, I’m going to highlight a couple of ways I try to keep up my coding knowledge rather than let it slip away between the cracks of my memory.

  1. Coding challenges: There are many free coding challenges out there - my favourite one is Codewars, because you get to pretend to be a warrior who earns badges and makes allies as you progress through incrementally more difficult challenges. Oftentimes, even though I find that I have been able to solve the challenges, it would take me 10 lines of code when it only takes someone else in the community 2 lines. That’s the beauty of programming; the simpler your solution, the better. Doing coding challenges is not just about building up the confidence that you CAN write code; it’s  also about training your ability to write the most ELEGANT possible code.

  2. Start a personal project!: Got an app idea you’ve wanted to build for ages? Your Aunt Flo wants a fancy personal website to showcase her latest cakes? Now’s your chance to shine! Get your hands dirty by building something tangible with the skills you’ve just acquired. It doesn’t have to be perfect - far from it. Everybody has to start from somewhere, right? At points it might be frustrating, but the high you get as you get so comfortable with your language of choice you can feel the code practically spilling out of you, is probably one of the best things about programming (there’s a name for it too: “coder’s high”!).

  3. Ready to move to real life?: So far, we’ve just been coding away within the confines of our homes (or the coffee shop down the road, but only if it has free WiFi, obviously). You might be feeling a little bit closeted, like you don’t feel you’re good enough to even be telling your friends and family you’ve started coding. You DO know how to code, kind of, but you don’t think you’re good enough to call yourself a coder just yet (that’s called “Impostor Syndrome” by the way - check out this brilliant article on how to overcome this very common problem). Like a singer who’s secretly got a beautiful voice but only sings in the shower, you’re really missing out on the community out there IRL (in real life). And I assure you - the community is friendly, intelligent and always welcoming of beginners.

  4. Meetups & Hackathons: Once you feel ready (or, arguably, if you wait until you’re ready you’ll never do it), sign up for meetups and hackathons. There’s a load of free, high-quality events out there (I like Hackathon.com, Eventbrite and Meetup.com), ranging from casual meetups where coders bring their laptops and work on their own stuff, to large-scale hackathons (jargon-buster: A “hackathon”, often shortened to “hack”, means that a group of coders or even designers and entrepreneurs sit together and create an app from scratch over an insanely short period of time, often just 1 or 2 days - hatch London is a great example).

And that’s all from me - although I myself am still very much a beginner coder, during my role at SheCanCode I have really grown passionate about helping more women consider transitioning into a career in tech. If any of my tips above resonated with you, or you have any comments, let us know.

Happy coding!

P.S.: Check out #100DaysOfCode - you’ll be glad you did.