How I Completed My First Web Design Course on freeCodeCamp
Tags: webdev, beginners, productivity, programming
Published: 2023-02-23 07:00:50

I first heard of freeCodeCamp in 2021 when a friend of mine successfully landed her first web development job through self-learning. She recommended [freeCodeCamp](https://www.freecodecamp.org/) as the No.1 resource to get started with programming. I decided to give a try, but soon got swamped by my day job and left it aside.
Fast forward to Feb 2023, I resigned from my job without any backup plan. The only thing I knew was that I missed building things from scratch and needed a goal to keep my life together. This time I completed my 1st [Web Responsive Design course](https://www.freecodecamp.org/certification/Shangguan_Wang/responsive-web-design) in 18 days. 

![Certification of Completion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oy96859ry5za540lnn9y.png)

Here is what I learned through this journey:
## Find your "Why"
Coding, just like anything in life, is not easy. To accomplish a challenging task, There are two steps:
1. Find a reason to do it.
2. Do it.

Counterintuitively, Step #1 takes 80% of the work. Before rushing into an online course, write down on a piece of paper what your motivation is for completing this course. Do you want to build a website for your own side project? Are you curious about programming or just want to acquire a new skill? No matter how trivial the reasons are, they will be your North Star to guide you through the bumps on the road. Once you have your list, make this course the No.1 top priority, Every morning when you wake up, no matter how busy the day ahead will be, the first thing is to crash several challenges, and same thing before bed.

## Make a plan, adjust dynamically, and stick to it
In my prior life, I worked as a bid manager at a big tech company. Every time we received a new request for client proposals, the first thing was to make a plan: Who needs to complete what by when? 
Mark your calendar, and set the daily targets realistically. I felt content about myself when I coded my first HTML static page until I realized there are 16 more units to go, at the current pace it could take me months to finish the full course. So I decided to condense my plan more; otherwise, I may never finish. It is reasonable to adjust your plan, after all, cramming is not the best practice for absorbing knowledge, but be sure to track your progress rigorously.  

![I set up a Calendar in Notion to track my learning progress](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8n94dkgc03k9mm0gu3g.png)

## Ask for help
I often wonder why hair volume is a concern for many senior developers, until I learned what a bug is. Bug is inevitable, and I'm feeling inevitably frustrated, spending hours trying to find what went wrong, only to learn I forgot a semicolon, or mistyped a variable name. So before you pulling your hairs all out, ask for help. Developers are naturally willing to share knowledge and help each other, that's the spirit behind open-source projects and the internet. Fortunately for introverts, there are online forums like [freeCodeCamp forum](https://forum.freecodecamp.org/) and [stackoverflow](https://stackoverflow.com/). If you are still stuck, chat GPT is your best tutor. 9/10 times it points me to the right direction, no judgement no shame. 

![Snippets of my one-on-one lesson with Chat GPT](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xne0t19yzmxz2w8pqqj3.png)
As you are marching towards your goal, learn in public is a great way to fuel the momentum. Consider joining [#100DaysOfCode](https://www.100daysofcode.com/) challenges on Twitter or Github. There are days I felt lazy but pushed it through because I still need to tweet my challenge, and I also got inspiration from other posts under the #100DaysOfCode hashtag.

I hope you feel set to success for reaching your programming goals. Let me know what valuable lessons you learned from your own journey, and I will be sharing more self-study coding hacks. 
Happy Coding!