Resources for becoming a better software developer

ducaale profile image Mohamed Dahir Updated on ・3 min read

I will be documenting here some of the resources and MOOCs that helped me in my journey to becoming a software developer. One thing I would like to note is, when doing an online course, I found exercises to be where real learning happens. If a resource didn't have one as in the case of youtube videos, then to avoid passive learning, I like to pause the video and write the code on the screen.

1. Codecademy

This was where I took my first proper programming course. A cousin of mine showed me the site after he saw me struggling with a Java book 1. At that time, Codecademy was offering courses in Python, Javascript, Php, HTML, and CSS. It has considerably grown since then and has introduced Pro courses which require a subscription. If you are someone who just wants to get feeling for how to code then I would recommend starting with the free python2 course in its catalog.

2. Python for everybody

If Codeacademy was focused on the syntax and basics of programming, then this is where I learned how to write programs that solve tangible problems. I got to learn how to process files, generate reports, store the result in a database, scrape the web, and much more.

3. CS50

This one was an eye-opener for me. In just 12 weeks, it teaches you the C language, some basic data structure and algorithms (searching, sorting, linked lists, hash tables, and tries), PHP (replaced by Python in a later version of the course), HTML, CSS, and SQL. The problem sets are challenging and vary from encrypting messages to recovering deleted files from a hard drive. In the end, they require you to submit a project of your own. I was interested in writing games so I followed Remaking Cave story in C++ and Dive into C++11/14 2 and finally got a working C++ game which I submitted as a final project.

4. Coursera's Algorithms, Part I and Part II

It took me a while to complete this two-part course but was worth every second of it. What I liked about it is how it goes into great length in explaining algorithms and then give you challenging assignments in which you need to apply those algorithms to real-life problems. Towards the end of the course, the professor explains that many of the problems covered in the course could be reduced into a handful of problems, which was mind-blowing.

What I would like to learn in the future

I believe that learning is a continuous process and should never stop. There are gaps in my knowledge which I would like to fill by taking even more courses. These are the ones which I plan to do next:

  1. Nand2tetris: Building a Modern Computer From First principles
  2. fast.ai's Practical Deep Learning for Coders
  3. A Compilers course. Didn't find a good one yet.

  1. I would never recommend anyone to start with java as a first language. Printing a simple hello world to the console requires you to write a class with a static method and to dig two levels deep in System namespace to access println. Not to mention all the capitalization and semicolons that you have to be aware of. 

  2. This was rather an interesting rabbit hole as he shows you some modern C++ features, uses it to implement an Arkanoid clone game, discusses various game loop implementations, and then finally introduces you to entity component system. 

Posted on by:


Editor guide