DEV Community

Jonathan Adly
Jonathan Adly

Posted on

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

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.

Alt text of image

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, etc.)

  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

Top comments (2)

Collapse
 
souhayelbj profile image
souhayelbj

Very nice website. I am really impressed and motivate me to see that.
Everything is ok (django, git) but JavaScript i found it difficult to use it.
Any advices?

Collapse
 
jonathanadly profile image
Jonathan Adly

Don't get in REACT/VUE yet - Stick with Vanilla JS as long as you can. What really helped me - is a learning exercise to build a single page application with just Vanilla JS (Project Mail in CS50W). Not practical in real life, but very helpful knowing the ins and outs of JS.