I wanted to document, both quantitatively and qualitatively, what it’s like to learn to code. For anyone completely new to this, I hope it helps. To any vets, your feedback is incredibly valuable.
To begin, I started from actual zero. I didn’t know what a <div> was, a function, loop, the difference between front-end and back-end, and honestly I think I had never used a curly brace in my entire life.
I began reading blogs, detailing people’s personal journeys with coding. The most influential, for me, outlined how she became a developer in 1 year, making several original web apps along the way. She estimated her time spent learning to code (having documented every day she actually spent learning) around 300 hours.
When I actually committed to this Project, I oscillated between “how fast I can learn this”, and “how effectively I can learn this”, the latter was without consideration of time (and not to be confused with how efficiently can I learn this). I created a plan, knowing well that things would change as I moved forward. In the time since starting, I’ve more or less kept to the original concept while tweaking details along the way.
I determined with focused practice, 3 hours a day, every day for 100 days, I would reach the 300 goals in, more or less, three months. Getting to the bloggers (who I based much of this project around) proficiency. I reached that today. I still have quite a bit of work to do. A base-level plan is a great way to start to learn to code in 100 days.
Second I determined FOCUS was probably the single most important variable. It seems that many people “work” or “study” for much longer hours (I believe much of which is hyperbole), and see diminishing progress.
An analogy that I like to use is if you give a bodybuilder and a novice the same weight to work out with, will they achieve the same results (or more specifically will they achieve equal muscular stimulation?) The answer is obviously no. Rest time between sets, movement quality, heart-rate, range of motion, time spent in eccentric vs concentric is all variables in the gym. All to say that, how you use the tool (time, in this case) is equally, if not more, important than the tool itself. Reducing all of “learning to code” down to “time spent” simply wasn’t a helpful metric alone.
Study Sessions would be no longer than 1 hour. After which I would take between 5-15 minute break before starting the next session.
All notifications would be turned off every device I owned. None of the tools I would use would even have the ability to distract me.
Using a focus app (Forest for IOS) I would set a timer before I started a session, and then leave my phone in the other room. This allowed me to track actual time “in-focus”
No other tabs would be opened. If I had a question, I would simply jot it down, and move on. (This became painful later on when trying to diagnose errors, but led to more time trying to reason through and solve problems in my own code. i.e. a super important skill)
If I saw that my hour was up, regardless of where I was in my lecture or in my code, I would stop.
My focus broke. I would count this as any time my mind wandered in any way.
If I started thinking about problems at work.
What I was going to have for lunch.
If I was working in a coffee shop and started eavesdropping on someone else’s conversation
Or, If I started fiddling with things on my desk or daydreaming of any kind.
If my focus extended beyond the 60 minutes (which happened on the rare occasion I truly lost track of time. Usually deep in a project) that time would count. Thus leading to the possibility of 90/60 minutes of focus or a 150% focus for that session.
Side Note: I used a screen time restriction on all social media to 8 minutes a day, across all devices. I can’t attribute this to better focus (since I didn’t also conduct this independently while having a limit of, say, 2 hours) but I think it definitely helped, at least my mental health.
I split my learning into three distinct Phases. These three phases will help in knowing how to learn to code in 100 days.
Each Phase is 50 days long. Split into five, 10 days Sections.
Phase 1- Learn
The learning Phase was all about figuring out “The right questions” to ask.
There was so much (and still is so much) about this world that I don’t know or understand. Learning the fundamental concepts was the first goal.
With that understanding, I could begin to create a mental map of the road ahead, and more importantly, find better tools to help me along my way.
There were some hiccups here, with direction.
For example, I started with CSS, then HTML then moved to JS, then React. Realized I didn’t know enough JS to learn React so went back to JS. Learned some Node and Express, then back to React.
Phase 2- Practice (Where I am now)
The goal of this Phase is to create as much as possible.
To make things, either through code along, prompted projects, and even personal projects and experiments.
One of the best tools for this was learning a new method, and then the next day (leaving a little time to forget) test me by trying to build a small, invariably ugly little application using it.
Many of my apps are beyond hideous. Inelegant code, little to no styling, but every once and awhile I’ll write something and just look at it thinking “Wow, that’s actually pretty badass”
Phase 3- Build
This is all about building big, fully functional apps.
Working only projects that take weeks or even months to fully see realized. This is about trying to simulate, as close as possible what it’s like to actually be a developer.
When I started, I didn’t even know what would be important to track. So things have grown, quite a bit, since day one. I spend about 3-5 minutes updating my spreadsheets before and after my hour-long Sessions. As well as 15 minutes at night writing a summary of everything I learned that day. Tracking is a crucial process in knowing how to learn to code in 100 days.
Here’s a link to Phase 1 and 2 Tracking as of today! There are accompanying Google Docs with notes, and summaries of what I learned every day.
Phase 1 Notes
Phase 1 Focus Tracking
Phase 2 Comprehensive
Before listing out the tools I use, I really want to warn you if you’re thinking about starting on this journey. It’s not about the specifics of the tools. It really isn’t, and it’s hard not to get caught up in that. It’s about the application of the knowledge, that’s where the real learning happens.
When you JUST start out, find an instructor online that you like, and make sure the course is up to date. Those two will get you 80% of the way there. Keep moving forward, momentum is your friend.
As you’ll see below, I like Colt Steele, his style is great BUT at this point, I’ve realized I need to see other people write code. So in addition to learning new material during a course, I’ll search on YouTube for the same specific topic that he’s teaching, and watch how other people implement that technology. There are so many ways to do the same thing. Now….. tools!
I used the editors here to complete HTML, CSS, JS, and React.
This and FreeCodeCamp are where you start.
What’s nice about them is the blogs that are featured on their site.
I also signed up for their newsletter which features some interesting articles and quick reads to expose you to more of this world.
Avoid at all costs, honestly.
Now obviously you’ll need to go here, but youtube is kinda like the slimy underbelly of learning to code. You go in for something that you need, but (quite literally by design) you’ll be enticed to stay, go off on tangents, and start thinking to yourself “Hmm I wonder what extensions he’s using on VS Code” or “Wow, I do need to know the top 7 tricks that ex-Facebooks used to get an interview”
Get it, get out. Other than that, there are a few good Youtubers, who have udemy courses. Which leads me to…
The Web Developer BootCamp (Colt Steele Udemy)
A great, great, great introduction to full-stack web development.
Slightly outdated. In all honesty, I cut it short when it came to the backend because almost everything they were discussing and tools they were doing needed to be modified in some way.
At the time I wasn’t great at reading documentation, so I ended up spending more time trying to make code compatible than actually progressing through the course.
The Modern React BootCamp (Colt Steele, Udemy)
I’m still working on this now. So far, I would give it (and plan to) 5 stars.
In addition, I just bought
The MERN full-stack guide (Maximilian S., Udemy)
CSS- The complete guide 2020 (Maximilian S., Udemy)
Beyond this, in my notes, I list specific documentation I read on a daily basis, blogs, and specific YouTube videos.
Next, as you can see I’ll be working on both deepening my understanding of backend development, as well as design and CSS. Kind of seem at odds right? But setting goals is the perfect way to know how to learn to code in 100 days.
Post more on Reddit, and get more involved in the community (timing is pretty awful, I know).
Create projects and seek feedback from other developers.
Have actual conversations with developers and in an attempt to uncover my blind spots, and to help tweak my trajectory.
Publish on Github.
Build something aesthetically pleasing (lol).
I hope this was helpful if you’re just starting out on your journey. If you have any questions for me, please feel free to reach out. I’d love to talk to someone about this, considering I haven’t in the past 100 days.