Learning Software Development — Focusing on Fundamentals

Photo by Maxwell Nelson on Unsplash

Roughly two months ago I began my journey with Launch School. Up until that point I had been trying out a variety of different learning resources online all of which were initially free. I initially started out with Free Code Camp. I did not particularly like their format as I didn’t feel like the learning was sticking, so I went looking for something that would fit my learning style better. Around that time, Jet Brains had a promotion running for three months free in their academy, so I went and started learning Java using a project based format. While I felt I was learning something, most of the time I spent feeling frustrated while trying to solve programming problems with inadequate tools. I did not have the basic understanding to follow along with the language documentation, and I was missing some core understanding about programming basics. Basically the problems that JB Academy was asking me to solve were too advanced for my level of understanding. I did limit myself to what they called beginner problems even though the system would recommend me advanced problems when I would complete one. This limitation did not seem to help.

After spending many weeks trying to create a Sudoku solver without having a real understanding of data structures and how to access and manipulate them, I was beyond frustrated. The solution that finally let me move forward was some copy-pasted Stack Overflow solution. Unfortunately I think this is a stopping point for a lot of beginners in learning how to code. In this type of situation, its not your fault that you don’t understand how to solve the problem you are being asked to solve. You lack some fundamental basics, and in my case the program I was following was not doing a good job of teaching the foundations. Sure it feels nice to have a working project or to finally move past a difficult question, but you can’t get there if you can’t access and manipulate the data! Luckily, I didn’t quit but instead decided to explore my options some more.

This is when I found the Odin Project. What I liked about this program is that they rely on outside documentation to help teach the language. I completed all of the web development 101 course and about half of the Ruby Programming course. Throughout the course you are sent to the documentation which helps reinforce reading and understanding the language specific documentation. I didn’t stop studying with the Odin Project because I thought it was bad program. On the contrary, I learned many good habits. During the Ruby programming course as everywhere else, Odin relies on resources that are outside of their program. Basically they aggregate a resource reading list, organize it into a learning program that makes sense, and adds in skills checks in the form of projects for you to complete. Unfortunately this process is 100% self-directed. Unless you know someone that can review your code or answer questions for you, you are on your own to figure things out. Most of the time for me I was able to get through the difficult parts and then learn a hard-won lesson. And anyone that has struggled through something and gotten to the other side I think understands that these are the biggest learning moments.

While I was studying Ruby with Odin, I kept coming across Launch School. Odin relies on many of the public resources that Launch School has developed to teach the Ruby Programming course. I was impressed with the detail in the Launch School curriculum and decided that I’d take the time to go through the entire Ruby 100 free course that Launch School offers. I was so impressed at how my understanding was growing by building a better foundation and a thorough understanding of the basics, that I decided to enroll in Launch School at the end of RB100.

At this point, I’m at the end of the RB101 course and just finished up the final project in that class. The thing that really struck me the hardest was that I didn’t really struggle to complete the project. Which is not to say I didn’t learn anything from it, but rather that I have a much greater understanding of the fundamentals of programming that I wasn’t getting before. I’ve spent many hours drilling basic problems over again, ready the Ruby documentation, and understanding what makes a good function definition, a good variable name, and so many other little basic pieces that putting it all together just works now for me. As a result of all of this practice, I’m much more confident in my ability to solve admittedly easy programming problems. I’m sure that my practice and persistence up to this point has helped. However, without focusing on the fundamental pieces, I don’t think I would be at this point now.

Learning Software Development