How I learned to code & built a real software product in ~ 6 months

Image for post
Image for post

On May 21st, 2020. I wrote my first ever line of code as part of Harvard’s CS50 online course. Six months later, I pushed a production ready web application (see https://joyful.gifts) for the whole world to use. Below is how I approached learning, the journey, and some unconventional advice for those learning to code to build products.

Image for post
Image for post
First line of Code in C!

How I learned.

Please note, this journey from the very beginning was about being flexible as an entrepreneur and a builder as well as be able to use the best tools available to solve real-world problems. Take it with a grain of salt if your goal is primarily to take an entry-level job as a software developer, it may not apply.

Here is how I approached learning,

1- I focused on building and getting joy from what I built. If it felt like grinding, I knew I was doing it the wrong way

2- I didn’t compare where I am or my tech stack with anyone. If it works, it’s reliable and joy to work with, it means I was in the right place

3- I put a lot of effort in searching for true experts in the field, and ignored marketers trying to sell me the latest hyped tutorial

4- I kept a close eye on and validated advice in developer to developer platforms (super-technical podcasts, developer forums, niche subreddits are good places to start)

5- I familiarized myself with new tech as needed, but only dived deep if it solved a specific problem that I have now! (Sorry — I still don’t have a problem that SPA’s would solve)

6- I didn’t shy away from “hard” things if they solved a problem. Docker is hard, but solved a problem that I had, so I went there.

7- Given a choice, I always choose the proven and tried technology over the new and shiny.

Journey.

This should be as an overall guide rather than a specific step by step direction, software development evolves very quickly and resources gets outdated quickly. Additionally, there are smaller topics that one needs to learn along the way to ship products where a simple tutorial will do (GIT, Bootstrap, third party integrations, deployment, ect.)

1- C & Intro to Algorithms via CS50

2- HTML/CSS fundamental via FreeCodeCamp

3- JavaScript via eloquentjavascript

4- Python/Flask via CS50

5- Django — Beginner via the book “Django for beginners

6- Using Django + Modern JavaScript via CS50W

7- Docker via Dive into docker

8- Django — Professional & best practices via “Django for professionals” and “Two scoops of Django

Unconventional Advice (maybe?).

1- If you want to learn, learn something brand new. If you want to build, build using what you already know and proven to work.

2- Popular tools doesn’t equal useful tools.

3- Seek the advice of older developers who had seen a disaster or two. Avoid tech-hype guys/gals.

4- Learning to code is like learning to read or write. Only useful if you have something meaningful to say.

I am happy to answer any specific questions about my journey or joyful.gifts — Best way is at Twitter

Written by

I do a couple of things → JonathanAdly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store