Learning to Code
November 28, 2020
In a few days, I start my first job as a Software Developer. A few people asked me about how I taught myself, so I decided to put together some resources for anyone who was interested in doing what I did.
A huge disclaimer: I've been obsessed with technology ever since elementary school, where teachers plopped me down in front of an Apple IIe and showed me how I could make my own Mad Libs and where I learned the amusing novelty of
20 GOTO 10 in BASIC. The joy of seeing a computer do exactly what I programmed it to do carried with me all the way through high school and beyond.
I recall making web sites for one of my old bands. Around that time, I was also getting really into Photoshop--designing the majority of said band's first album art. In high school, I learned a ton of stuff from their Cisco Networking Academy. There was also a summer internship at a local technology company: I learned about AND gates, made them a Flash animation for their web site, complained about having to use Linux instead of Windows (🤦🏻♂️), and left to pursue music. Some years later, I remember making a simple app (click on my friend Diaz's face and hear him scream) on the very first Android phone.
So, this is definitely not an "I went from zero coding experience to developer in just six months!" type story, but I do believe that anyone who wants to do this can, regardless of experience level! I think the key is having a genuine interest in doing this and not just seeing it as a lucrative career opportunity.
Have a look at this video by Brad Traversy that talks a little bit about this:
If you're still excited about learning, let's dig in!
My Learning Regimen
The curriculum I followed was loosely based on what my spouse was learning through Prime Digital Academy, which is fairly typical of a coding bootcamp. I would ask her what she's learning that day, and I'd go and learn it myself. When she got an assignment and starter code, I would look at the code to get the general idea, and then start from scratch, reading the docs along the way.
The main topics are the following:
When I felt like I had a good grasp on something, I would find a different resource that covered the same topic, and I would go through that course/video/article as well. For every new topic, I would probably do a total of 2-3 full course tutorials on any given topic.
One thing you pick up on is that there is more than one way to skin a cat. If there doesn't seem to be one clear way of doing things, I defer to that technology's documentation. Every framework or library has a "Getting Started" guide, and that's obviously the best place to start.
Probably my most-used resource was a free subscription to LinkedIn's Lynda.com, courtesy of my public library. I highly recommend checking with your library, as this is normally a service that costs around $30/month!
I watched dozens of courses, but these are the ones I learned the most from and that I would recommend completing in their entirety:
- React.js Essential Training by Eve Porcello
- Express Essential Training by Emmanuel Henri
- Advanced Express by Daniel Khan
As I'm sure you're aware, you can teach yourself anything on YouTube! Here are some courses that really helped me:
- React JS Crash Course by Brad Traversy
- Learn the MERN Stack by Brad Traversy
- What the Flexbox?! by Wes Bos
freeCodeCamp is one of the best resources online for learning to code. I would highly recommend it for people who are starting with absolutely zero prior experience, as the pacing is slow and covers everything, beginning with the absolute basics. I completed the entire Responsive Web Design section over the course of a few months, again, in tandem with everything else here.
The Odin Project
The Odin Project was a resource that I didn't discover until later, and if I could go back, I probably would follow their Foundations and Full Stack curriculums in their entirety, as they use a variety of different resources and the curriculum stays updated by the community.
Things I Tried To Do Daily
- One kata from Codewars
- One random video from YouTube before bed (or, sometimes, while falling asleep in bed 😂)
Feel free to reach out!
October 5, 2020
If this is your first time visiting my site, welcome and I hope you like it! If you've been here before, welcome again and I hope you don't notice any changes--other than faster load times! 😉
Taking a cue from Wes Bos, and also with some help from Tania Rascia's excellent article, I recently decided to migrate from Wordpress to Gatsby. I wish I could say that I was solely motivated by performance, but truth be told, I was also looking for an excuse to cut my hosting bill. (In case you didn't know, Vercel offers free HTTPS-enabled custom domains on their blazing fast serverless platform. This means, if you can
build it, the certificates will come. 🙏🏼)
In addition to saving on hosting, I can also say goodbye to all the server maintenance that--while genuinely fun for me to troubleshoot and maintain--was getting in the way of my ultimate goal of building out my projects portfolio, as well as gaining more experience with development.
Gatsby turned out to be an excellent choice, then. There's lots of other options, but what really pushed me over the edge was the sheer amount of plugins and community support avaiable for Gatsby. I've been able to find tutorials for pretty much any scenario that I needed. In addition, I was able to put all my React skills to work, and I've got another repo in my GitHub that I'm proud to share with the world.
As you can see, the Lighthouse score for my site is now mostly green, and there's a great article on FreeCodeCamp on eeking out even more performance, which I may re-visit in the future. For now, though, I'm happy to leave this be for a while, and start working on some new projects!
A huge shout-out to the Twenty Twenty Wordpress theme, which is what my old site was using. There are some small differences (some intentional, some just because I made calculated decisions about whether they were worth the effort), but it is very true to the original. Wrestling with Material-UI was less fun than it has been in the past, and I may re-visit Tailwind CSS for my styling needs in the future. However, I still love Material-UI for quick-and-dirty styling for simple web apps, like those in my portfolio.
Feel free to poke around the source code, and let me know if there's any changes I should make. I'm always looking for ways to improve. ✌🏼
June 19, 2020
As part of my learning regimen, I've been doing a daily code challenge on Codewars. So far, it's been going very smoothly, and I can often think up an algorithm and get it coded in under an hour--with some solutions coming to me immediately.
Today, however, I had to use my first life line, after racking my brain for over an hour.
The problem, as described in the "Kata", involved finding unique characters in a string. Specifically, checking whether a given string was a "pangram", which is a sentence that contains every letter of the alphabet (e.g. "the quick brown fox jumps over the lazy dog").
Of course, my first naive approach involved all kinds of desperate Regex patterns, and keeping a counter, and then checking whether the total count was at least 26 (one for each letter of the alphabet), but I had to abandon this path when I realized just how lost I had gotten.
Fortunately, it didn't take much time to search online for a hint, and my pal "Google" led me to Set, which immediately got me to my solution:
const isPangram = (string) => [...new Set(string.replace(/\s/g, "").toLowerCase().split(""))].length >= 26;
I know every experienced coder will tell you that the best skill one can have is Googling the solution, and I strongly agree with that, but it also feels nice to be able to think up an algorithm all by myself. However, I won't beat myself up too much, because the next time I need to find unique values in a set, I'll know exactly where to look!