Summer of 2015. After a short stint of 6 months as a marketing intern at a pretty cool start-up in Dublin, I decided to head back to my home country with no real plan.

As a marketing graduate, I started looking for marketing jobs and, during that period, I felt compelled to check out the new web development courses at Khan Academy, a website that I previously used to learn some basic programming. I went through multiple courses and, in a couple of weeks, I noticed I would spend 5 or 6 hours a day studying that stuff.

It became harder and harder to ignore the significance of my enjoyment in learning programming. That motivated me to make a decision: instead of spending a couple of years working in marketing while studying programming, I decided to make the commitment to study full time so that I could get it over with after a few months (hopefully without paying for anything).

That would mean that I had to do something that most people in their mid-twenties, like me, wouldn’t consider doing or, if they would, probably couldn’t. I decided to live with my parents’ for an indefinite period of time.

With a fresh sense of commitment and especially motivated to get back my autonomy, I cranked up the number of study hours from 5 or 6 a day to somewhere between 8 and 12. This process lasted for a few months, and I ended up going through multiple emotional states: from feeling excited and motivated to having occasional periods of slight despair to feeling like I was losing my ever-weakening sense of sanity, and then back to the excitement and so on. Back and forth. Over and over again. Multiple times (Thank God for mom’s cooking).

For several years, every time I attempted to learn programming at home, I would feel overwhelmed with how hard it was to learn from poorly formatted tutorial articles. Thankfully, online education went through a period of profound innovation, which changed everything.

I‘ll now try to describe how it happened while presenting my views and feedback regarding the resources I used.

I first chose Khan Academy, because of how easy it was to get started. The way it works was pretty great too: I would write code and the output would be immediately updated on a small window. A few years before, I would try to learn C++ by reading articles, which was pretty tough if you have no one to help you. This time though, I had a pretty convenient visual support and there wasn’t any compiling/saving/running process, unlike other programming languages or learning methods. That allowed me to focus on learning and learning alone.

A lot of stuff wasn’t clear for me, though: it was pretty frustrating to me that I seemed to be unable to learn the difference between the native JS syntax and the syntax belonging to third-party libraries (which KA uses). I also found it a bit weird that I didn’t seem to be able to figure out how to make the projects I was working on available anywhere else outside of the Kahn Academy environment.

Anyway, since I had previously completed the basic JS course, I moved on to everything else: I checked out the courses on HTML/CSS, SQL, and jQuery, and I learned how to use programming to create games. A particularly interesting course was Natural Simulations, where students learn to apply programming to create animations that simulate various phenomena like harmonics, magnetism and particle generation.

I also did the whole computer science block which included Algorithms and Cryptography.

Despite being very interesting, some of these courses seemed to be too advanced or hard for Khan Academy’s style of teaching.

Pros

Completely free — Khan Academy is supported by donations (similar to the Wikipedia model).

Immediate feedback — you can immediately see the result of your work when you’re programming, writing code on a box and seeing the output on another.

Very friendly and lighthearted approach.

The requirement to build projects and the high number of exercises maximize knowledge retention.

Cons

The programming challenges felt poorly designed as content got more advanced.

The teachers and challenges were sometimes too friendly/childish, which certainly works great for younger students. However, given that some of the material was a bit too hard, it just felt weird. Imagine if concepts like nonperturbative renormalizability and diffeomorphism covariance were discussed on Sesame Street. (I have absolutely no idea what those words mean, by the way).

It was a bit hard to get help and ask questions. Which is very understandable given that the whole thing is free anyway.

The way challenges were designed required students to finish them sometimes in very specific ways (you could write correct solutions that wouldn’t be accepted by the grading algorithm).

It’s very dependent on its own specific environment which makes it a bit hard for students to use their code anywhere else (although it is possible).

So after finishing everything I had to finish on Khan Academy, I wanted to move to resources that felt more professional. After trying to figure out what made the most sense for me by reading reviews and opinions, I narrowed the choice down to Udacity and Team Treehouse.

Team Treehouse seemed very well structured. A somewhat more professional and polished version of Khan Academy. Udacity seemed bigger and a bit messier (at least at the time). In the end, I chose Udacity, because it seemed to be more focused on teaching a new entire skill set instead of specific languages or tools. Also, Udacity’s contents are all free (although only the paid version has coaching, grading, code review, etc), whereas Team Treehouse required a monthly fee (which seemed very affordable, actually).

Udacity

Since I was in the “There is still a lot of basic stuff to learn before committing to a specific field” part, I decided to sign up for these three particularly well-reviewed courses:

1 — Introduction to Computer Science

Great course and great teacher. Most of its issues, which are pretty minor, are related to the fact that it was one of the first courses in Udacity, so sometimes it felt a bit dated. I learned a lot nevertheless and laughed plenty of times at the unique style of humor of the teacher, Dave Evans.

2 — Programming Languages

Great way to understand how some of the low-level stuff works, but it was a bit too advanced for my purposes. I did my best to finish the challenges on my own but barely completed the final project without checking out the solution. That was fine though, as I wasn’t particularly interested in deepening this subject. The teacher, Westley Weimer, was great and pretty funny too.

3 — Web Development

This one is pretty interesting, because it’s taught by one of the founders of Reddit. His own experience as a developer was frequently used for making some very useful points across, which was pretty fun. However, the whole course felt rushed as it had too many difficult concepts moving too fast. Nevertheless, Steve Huffman as a teacher gave clear explanations.

After these 3 courses, I felt like I was starting to have a pretty good grasp on the basics of programming. I felt ready to actually focus on what I wanted to do: front-end web development.

My goal was to sign up for Udacity’s Front End Nanodegree courses but I decided to try out the intro to HTML CSS, JS from Coursera after some friends recommended it to me. I felt that learning the same concepts from different sources could be helpful.

Despite the fact that the teacher was very thorough with his explanations and seemed to clearly understand the point of view of students learning that content, the course felt too traditional and not at all adapted to online learning. Both Khan Academy and Udacity had innovative ways to teach. The former used the aforementioned system of the dual boxes (code and output) and the latter had videos of the teachers’ hands drawing and writing on a whiteboard (a tablet actually) while explaining concepts. Coursera’s course though was not all that different from a filmed lecture. But like I said the content was explained very clearly, which was really nice.

I learned a lot from this course and I would definitely recommend it, provided you are able to endure what at times felt like a somewhat excruciatingly boring learning experience.

Back to Udacity

By now, I had spent around 6 weeks learning online. I was finally going to dive into a specific field in a way that was structured to maximize job value. In this case by checking out the courses in Udacity’s Front-End Nanodegree.

Again, the contents themselves are free, but everything else is not. I decided to take the risk of not paying for anything and only access the content. Then, if I ended up feeling that an actual certificate and code reviews were useful, I would sign up and submit the projects for evaluation.

I felt very drawn to the idea behind Nanodegrees: their structure was focused on having students complete several complex projects while learning from related courses. That meant that you had the freedom to create something by yourself and put it in your portfolio (some of those projects are partially set up previously for you, though).

Online certificates don’t mean much, but your own personal web page displaying some of your projects does. And Udacity knows that. That approach made all the difference for me given that my background had little to do with tech.

This was the most important part of my learning process, so I’ll give a rundown of how it went. The Nanodegree was separated into 6 projects, which students were required to finish:

1 — Building a portfolio site

The whole idea of having a project consisting of building your own portfolio page was brilliant. You would learn both programming and how to develop your own personal brand. The supporting courses themselves could have been a bit better. They’re too focused on best practices and modern approaches, which is awesome but, for beginners who know next to nothing, it feels like everything’s going a bit too fast. Their reasoning is solid though, they feel students can learn the language’s details easily by searching online if they have to. However, the lack of proper introductions to some basic concepts, made me truly appreciate the knowledge I acquired with Coursera and Khan Academy.

The project’s supporting courses also included some content about responsive design and dealing with responsive images. This stuff is very important, but again, it felt way too early to make students think about these things since the basics were a bit shaky. Honestly, I felt like their approach could have been better from a pedagogical point of view. I frequently felt frustrated at the lack of detailed explanations.

As for the project, I finished it according to their specifications and improved the design after searching for inspiration online. You can check it out here: http://pesteves8.github.io/

2 — Interactive resume

I was really happy that this course introduced some new important concepts like dynamically loading data on a page. Again, I didn’t feel like things were being clearly explained, though.

The course introduces several important concepts like third party libraries (jQuery) and using JSON as a data structure, while briefly requiring students to interact a little bit with an external API (Google Maps). The project itself was very useful for me since I actually used it as my online resume. I also made a PDF version from it.

3 — Classic Arcade Game Clone

I really loved this one. The contents of the supporting course (Object Oriented Javascript) were way harder, but I didn’t mind at all because the teacher was really, really good. This course cleared out a lot of very confusing concepts about Javascript. As for the project, it was really fun, and months after finishing it, I would still sometimes go back to it to change or add something. I was very thankful for the teacher’s clear explanations. Feel free to play end result: https://pesteves8.github.io/frontend-nanodegree-arcade-game/

4 — Website Optimization

This one included another couple of courses about very useful concepts that weren’t explained as well as I’d like. However, I thought it was a great idea to include these subjects since most people neglect them and it really helps students stand out when applying for jobs.

5 — Neighborhood Map

The supporting course for this project was similar to the one about object oriented Javascript. Great teacher, really slow clear explanations and a great balance between lighter, humorous bits, and more serious stuff. The teacher, Ben Jaffe, seemed to have a pretty good grasp of how students feel along the course. This course wasn’t particularly easy since it introduces single page application (SPA) frameworks.

I really enjoyed it and felt that I was learning some of the most important concepts that would actually help me land a job.

6 — Feed Reader Testing

This one is a small introduction to testing. Nothing much to say. It was short and sweet.

After that, I also did an optional project called Calorie Tracker. It required the students to learn a framework called Backbone, by themselves. I ended up doing it because I really wanted to make sure I was good enough, especially since I didn’t have any support, code reviews or certificates.

Finally, I decided to learn some stuff that I kept seeing mentioned around the Internet (like AngularJS) and ended up doing a project of my own. It’s called mrMDB and it’s an iMDB, Metacritic and Rottentomatoes aggregator. Given my interest in movies, I just thought of building something that I would use.

I also made sure I learned some more of the most commonly mentioned tools and concepts that I would find online. Things like AngularJS, ECMAScript 2015, Webpack, CSS pre-processors, modular JS, etc.

If I remember correctly, it took me about 4 months to finish this Nanodegree, including the extra projects and a lot (and I mean a lot) of interruptions and detours to deepen concepts that came up frequently. By the way, Udacity also had some tips on how to set up your Linkedin profile, which was awesome.

Despite Udacity’s minor flaws, I can’t stress enough how great their philosophy of teaching is and how important it was for my development. It also seems clear that they are absolutely committed to becoming better and better.

One last thing: I showed you that you don’t really need to pay 200$ a month, but that would make your lives much easier. So I would encourage you to try it out and see what works best for you.

The Outcome

After all of this, I started sending some CVs. It took a while, but eventually, I got a couple of responses and, after accepting one of them, I got about 2 or 3 more. That was it, I was in. Then, 6 months after starting my new career, I got a contract renewal and a raise (very validating indeed).

After that I was earning as much as any other programmer of my level, getting frequently approached on Linkedin and feeling pretty comfortable with the fact that I had a job that I enjoyed in a pretty safe industry. By the way, this job was focused on Angular and I was also required to quickly learn and understand back-end development with C#/.NET.

Since then, I ended up doing the Full Stack Web Developer Nanodegree and, after that one, I did the Senior Web Development Nanodegree. I should point out that I didn’t make half the effort on these Nanodegrees, as I did with the Front-End Web Development one. I just wanted to make sure that I would have a better understanding of some concepts that I wasn’t well versed yet.

Conclusion

So there you have it. In total it took me about 6/7 months of full time studying to actually get a job as a developer without having to get a certificate, paying for anything, or having the networking and support you get when you sign up for offline courses.

Again, I had the luxury of being able to stay at my parents’ during this period, something that a lot of people with families and bills to pay wouldn’t be able to do. My point is that I’m not really gonna say anything like “Wanna achieve something? It’s simple: work hard, do it! DON’T BE A PUSSY!” or any of that stuff. Each person’s life is different and I’m very much aware of my fortunate circumstances.

Anyway, before all of this started, I spent a lot of hours searching for information on how to learn online or even if I should invest on a career change at all, so this is the kind of post that I would have liked to read at that time. Hopefully, it can be helpful to some of you.

I’m really thankful for living in an era where I have resources like Khan Academy and Udacity, both of which have had a very deep impact in my life and I’m honestly excited to see how companies like these will keep impacting the world of online education as they mature. It really seems like great quality education will only become more and more accessible, opening doors that would have otherwise remained shut for people limited by unrelated circumstances.

Yup, these definitely are exciting times!

You found this story useful or entertaining, feel free to clap away so others can find it.