I’ve started and failed many times to learn computer programming over the years. Upskill is the first course I’ve ever stuck with until completion and I’m now in a good position to continue my learning!
I’ve wanted to learn computer programming for many years. I’ve tried learning via many different resources and I always ended up giving up when either I got in too far over my head or lacked the discipline to continue. Often I would learn things and not know how to apply to it. Codecademy, for example, is a great resource to learn some basic syntax of HTML, CSS, Ruby, Git, etc. but it doesn’t show the user how to actually take and apply that syntax to a new project. I finished the CSS course but still had no idea how to start a CSS file from scratch! Which led to me going back to square one trying to figure it all out.
FreeCodeCamp and The Odin Project are also excellent resources but the former quickly went in way too deep beyond my comprehension level and the latter is a collection of free resources so it’s easy to lose focus switching between programs within the course. I was having a hard time with each of those programs and didn’t have the knowledge and discipline to finish until completion.
In spite of my initial frustrations and how many times I’ve quit, something deep inside of me kept burning with a hunger to learn how to write code. In spite of not fully believing in myself, I knew that plenty of people from non-traditional tech backgrounds were learning to code and becoming employed programmers. Tech is one of the few, true meritocratic fields where a diploma isn’t required and all that matters is your portfolio. Over the years I’ve spent a lot of time doing research on how people to learn to program and, after many false starts, finally found a resource that worked for me.
As a frequent reader of the r/LearnProgramming subreddit, about six months ago I came across this post from a programming instructor named Rob Dey who posted about his new free web development bootcamp called Upskill. Rob was telling the LearnProgramming community that he was giving away his new course for free. The post quickly shot up to the top post all-time in the subreddit where it remains the most upvoted post of all time.
What hooked me into Upskill is the entire course is videos of Rob Dey coding up a fictional web app startup called DevMatch from scratch. You don’t have to do anything other than write your code exactly the same way Rob is doing. The key here is to never copy+paste your code but to instead type it out by hand. Typing the code out by hand will help build the muscle memory of writing code.
Even though I feel like I don’t understand 90% of what he was doing in the videos, I have a much better high-level understanding of how all of the pieces of a webapp fit together after completing the course. Some of the most talented developers I know tell me they still look up basic HTML & CSS properties from time to time in order to remember how to do things.
Before starting the course I had previously done a little bit of work with GitHub and the command line, but I no idea how GitHub branching worked or how to handle working on a project in increments. Upskill taught me these things and I’ve even learned how to delete a GitHub branch when I’ve completely screwed it up so I can start over (move fast, break things!).
I emailed Rob twice for help during Upskill when I ran into a few Rails database errors, but never heard anything back. Luckily, this forced me to rely on Google, Stack Overflow, r/LearnProgramming, and r/Rails to search for answers and to also ask questions. Knowing how to properly search for the answer to a question you have and to properly ask for help are extremely important if you want to work as an engineer and/or with engineers. Even though I never heard back from Rob, I was able to search and ask for help elsewhere and move on.
The Upskill videos also spend a lot of time mentioning specific resources and telling users to simply Google them to read through the documentation. This doesn’t bother me, as I’m just trying to learn basics and I don’t expect a free course to provide me with the same level of depth as a $20k bootcamp, but it may bother other users. Just something to keep in mind!
Upskill, in my opinion, also doesn’t go into enough depth where the student will be able to finish the course and immediately get a junior dev job. But, it was a very good next step after finishing Codecademy. It also seems like it would be a very good resource to do before joining a formal bootcamp program (like HackReactor) or a more in-depth online course.
Sign Up for DevMatch!
Head on over to my version of the DevMatch webapp and play around with it yourself! You can even create an account to see the inside of product as a user. Feel free to create a free account or a pro account. The billing for the pro accounts is handled via the Stripe API, so be sure not to use your real credit card info unless you want to be charged! If you need a test credit card, use the digits “4111 1111 1111 1111” with any expiry and CVC. You can also view my code on GitHub here and the official GitHub repository here.
The New Economy
Marc Andreessen put many entrenched industries on notice a few years ago when he said that software is eating the world:
…many people in the U.S. and around the world lack the education and skills required to participate in the great new companies coming out of the software revolution. This is a tragedy since every company I work with is absolutely starved for talent. Qualified software engineers, managers, marketers and salespeople in Silicon Valley can rack up dozens of high-paying, high-upside job offers any time they want, while national unemployment and underemployment is sky high. This problem is even worse than it looks because many workers in existing industries will be stranded on the wrong side of software-based disruption and may never be able to work in their fields again. There’s no way through this problem other than education, and we have a long way to go.
Reading and writing code is often discussed as the new literacy of the future. Regardless of whether you believe the techno-optimists and futurologists, it’s true that technology is and will continue to be automating many jobs out of existence from blue collar jobs like truck drivers to cushy office jobs like stockbrokers. Almost every industry in the world will look completely different once the internet revolution is completed. This will change society as much, if not more than the shift from an agricultural-based economy to factories and the shift from manufacturing to a service economy. We’re still in the very early stages of the internet revolution and the changes will continue to reverberate throughout the economy.
We can sit and argue about specifics or timelines of when these changes will take place, but the truth is that the ability to think through a logical sequence of steps and to truly provide and follow clear instructions will be increasingly valuable in the new economy. More and more jobs will require technical expertise and those who aren’t equipped to work in this environment may soon be out of a job in the coming decades.
I can’t tell you how long the Upskill course took me to complete, though looking at the original Reddit post announcing the course, it’s timestamped as being posted six months ago. My focus was more on writing code every single day and submitting it to GitHub. Even if I only had time for about a 5-10 minute lesson and one commit, by coding every single day, even on days I was extremely tired and needing sleep, I’d still do a quick lesson.
By forcing myself to stay disciplined and code every single day I was able to push through and complete the course, even if on many days I didn’t have the confidence that I could do it. I’ve posted before about the Non-Zero Day method I use and it’s helped me make more progress towards my goals in life than any other method. Motivation comes and goes, but discipline means putting in work even when you don’t want to. Front loading a little pain and discomfort can pay off exponentially in the long run. And it doesn’t mean to literally never take a day off – It just means put in work even when you don’t want to, even if it’s just a little bit every single day.
What’s Next for Me
Upskill was an excellent course to build on my understanding of basic syntax (via Codecademy) and to see how things fit together at a high-level, but as I mentioned above, I’m nowhere near ready enough to work as a developer full-time. It was good enough to wet my appetite and now I’m ready to continue my learning.