by Paul Rail
Why I coded every day for a year, what I learned, and how you can do it, too.
I was looking to switch careers. The world today is not at all the same as the one our parents grew up in. Consequently, a lot of the career advice my parents gave me was simply no longer relevant to the landscape we have now.
I had a career in a field I enjoyed, but in an industry that is dying. There seems to be only a small handful of industries that are booming today. My friends who got into the software industry seem to be quite happy with their professions. If I knew then what I know now, I would have started this process 10 years ago. I want to be where the world is heading, not where it’s been.
I was determined to make this happen. Doing so meant not putting it off. I was going to start immediately, so that in another 10 years I wouldn’t look back and say “I wish I had gotten started on that a lot earlier”.
So I decided to code everyday for one year. Let me tell you about my experience.
I started by doing some research on learning how to code. I found things like Codecademy and freeCodeCamp, free resources to get my feet wet. There was a lot to learn, and it was going to be a long journey that required a lot of discipline. But, I thought, the more work I put into it now, the more it will pay off later.
And then I discovered an article talking about this challenge called #100DaysOfCode. There are two main requirements in order to complete the challenge:
- Code a minimum of an hour every day for 100 consecutive days
- Tweet your progress every day with the #100DaysOfCode hashtag
So this is a system to give you structure, direction, and public accountability to keep you on track. And it seemed like a great way to motivate myself and keep up that progress.
The idea was to code every day, turning it into a habit. You couldn’t allow yourself any excuses that you’d normally make when putting off something. This “forces” significant strides forward over time that you would otherwise take much longer to achieve, or not achieve at all.
There are additional benefits as well. Since coding involves concepts that continuously build on each other, if you go several days without coding, a fair amount of knowledge is lost.
Apart from that, the founder of #100DaysOfCode welcomes you to make it your own. So to really accelerate my learning, and to make major progress towards achieving my goal of landing that developer job, I actually dedicated myself to pursuing the challenge full time, instead of just one hour per day. And after that I reached that magical 100 Day mark.
However, I still wasn’t job ready. There was simply a lot that I needed to learn. But I was making great progress, and I was determined to continue until I finally got that job. So I just decided to keep going to 150, 200, 250 days…
And so I reached 365 days! Here are some of the major things I was able to accomplish by coding every day for a year:
- Completed dozens of coding tutorials, courses, and books
- Solved over 100 algorithms and interview coding challenges
- Participated in a two-day hackathon, where the project was selected to be presented to the company’s board members. They then decided to push it forward to the next development stage
- Got accepted into a full time software development program with a less than 1% acceptance rate
- Contributed to the freeCodeCamp beta expanded curriculum
- Wrote course content for the Odin Project’s new Ruby curriculum to help other aspiring developers learn to code
- Built a working clone of Facebook, the entire back-end and front-end completely from scratch, and have it live on Heroku as one of my featured projects in my portfolio
- Landed my first regular stream of income, working for a client remotely, which lead to getting hired permanently
That last point, getting a regular stream of income and that full-time position, is the highlight and the culmination of all of my previous achievements that led me to reach this point. But this is not a pursuit to be taken lightly.
Not an Easy Challenge
Leaving my previous job to pursue my goals meant that I had more time — but it also meant that I had more on the line. Many people walk into this with big ambitions and give themselves lofty goals that they can’t reach. So for many people, sticking to the recommended one hour per day is probably best.
But what I’ve observed is that even with the most basic criteria, most people who try this challenge fail. Many people start #100DaysOfCode with the aspiration of getting a job as a programmer (Literally tens of thousands of people from all over the world), but few of them actually achieve their goal.
And this is despite an abundance of quality resources and guides, many of which are even free. It’s just a simple reality that the majority of people don’t see their goals through to the end. They fail primarily due to lack of determination and excuses.
I discovered and joined many groups filled with people who were trying to learn to code. Some of them I found were:
- spin-offs like 180-Days-Of-Code
- Slack channel groups that dedicated themselves to working through a particular coding book together with a goal of doing a chapter every week and discussing/comparing notes.
In every one of these groups, the participants are active, enthusiastic, and determined that they will do what it takes to get that job… for the first week.
Then the excuses and delays and no-shows start rapidly pouring in. The chats would get quieter and quieter, the posts and updates would become less frequent. These new mini-communities would all start off roaring like a bonfire and then quickly dim down to a candle and flicker out.
I would often even go out of my way to try and encourage others to keep the enthusiasm and momentum going. I’d offer to help out any member that was stuck on something or needed assistance. I’d provide an alternative explanation on a concept they were struggling with (even if I wasn’t an admin or team leader).
From my observations during a year of doing this, I estimate that out of every 10,000 people who begin learning to code online around the world every year, less than 100 endure beyond a couple of months.
Those that give up are not going to reach their goals. Those that are determined and keep it up are going to be the ones who get jobs.
So how did I do it — and how can you?
There are several things you can do to help you stay on track and reach your goals. Some of them are described above and include:
- giving your progress some structure and accountability with something like #100DaysOfCode
- setting small incremental goals and reaching them along the way
- finding groups to join and learn along with
And even though these groups did not really endure and succeed as a whole, it was still beneficial for me to join. I was not going to let the low engagement and defeats of other people around me have an impact on my own determination to continue progressing.
The most important thing I did
You need to understand that when you have an ambitious goal like teaching yourself how to code, it’s going to require some sacrifices. You have to be willing to do that.
My social life often took a back seat, as did my video game time, and I was not keeping up with the latest hot show on Netflix. There were also days where I really didn’t feel like it, but I needed to make “some” progress. You need to remind yourself that it’s all about delayed gratification, making short term sacrifices for long term gains.
Other things that helped me
I also used WakaTime and Clockify to keep track of how many hours I spent coding each day. This gave me an additional boost of encouragement as I aimed to beat my daily or weekly average. I even ranked very high on their global leader-boards on a regular basis.
There is also something to be said for paying for something. For a long time, I managed to find resources that were completely free. In the beginning, I highly recommend sticking to free resources, at least for the first couple months. This will give you a chance to find out if you actually enjoy this stuff or if it is not for you. If you decide that it’s not for you, or you do enjoy it but you just can’t last past a couple of months, then you will have not lost much besides time.
But after that, I found that some paid resources are actually better than some of the free ones. And actually dropping money down on something in itself has a real motivating effect on some people who need extra motivating. Often, you are more likely to take something seriously if you have paid for it.
I am being honest in acknowledging that I did miss a handful of days in that time period. But, I’ve always been upfront about it in my public posts. The founder of the challenge has this to say on that topic:
“You can skip a day here and there for unplanned situations, but not more… You are allowed to miss a day (but then make it up by adding one more day to the end of the 100). The goal is to become consistent, no matter what life throws at you.” - Alexander Kallaway, creator of #100DaysOfCode
The progress and the outcome is what really matters, and is the whole point of the exercise. I found it much more encouraging to just own up to missed days and continue, as opposed to resetting the counter each time. And I was going to be much more productive overall if I took days off, so long as this was only on very rare occasions, when I really needed to.
Some of the gaps included my mom’s 60th birthday, a bachelor party camping trip, and Christmas. Otherwise there were no excuses. I coded on New Year’s Eve and New Year’s Day. I coded when I was sick, and even the morning before I went in for surgery and the day after the surgery. ?
You can pretty much see what days I missed right on my GitHub profile page: https://github.com/PolarisTLX. But some gaps represent time when I was in remote regions without internet access and couldn’t commit code to GitHub. But I made it a point to load a coding book onto a tablet that I made sure was fully charged before leaving. (It’s not my favorite way of learning code, but it can be nice to change the learning method up at bit and try a different medium every once in a while.)
Finally, one group of days early on is missing. This happened because I deleted a GitHub repository when I got frustrated with a merge conflict, and just decided to delete the repository and replace the data in a new one. I did not realize that it would erase nearly a week of commits from the record. *table flip*
My 365 day progress summary
So in 365 days I have progressed through the following accomplishments:
- learning how to use a code editor and making simple static web pages
- building functional calculators and weather apps
- building simple interactive 2D platform games
- getting comfortable with full-stack development with multiple languages, frameworks and operating systems, and creating a complete RESTful social networking site from scratch (where users can signup with their chosen password, post, like and comment, upload their own photos, create events, send and accept friend requests and event invites with other users etc)
- creating course material for helping other aspiring developers learn how to code.
I have reached a point where potential clients and employers in the tech space now see me as an asset. I am now getting paid to code as I can create what they want, solve their problems, and offer real value. The work is paying off, and I’m just going to continue getting better.
I hope you enjoyed reading about my journey. I strongly recommend you to try out the #100DaysOfCode challenge. If you liked the post, please clap ? to spread the word and motivate others.