Do I really need to practice writing a for-loop for the hundredth time?
I just finished my 20th coding challenge for the day and i variables are swimming through my brain. It’s great because I understand it, right? Maybe a couple months ago I would have been stuck for hours trying to figure out how to sort that list. But now, I fly through the challenges. What’s next?
Coding challenge websites like LeetCode or HackerRank are fantastic practice when trying to learn or practice a single concept at a time. They allow coders to practice and absorb valuable programming concepts like Data Structures and Algorithms, without having to write an entire program to run and test it. However, while these websites might be beneficial for learning small pieces of a program, they don’t teach you how all these pieces fit together.
How do I go from writing a small, simple program to building a well-rounded application?
If you’re like me, this is one of the many walls you’ll hit on your coding journey. Writing a simple back-end calculator app just isn’t cutting it for me anymore. I want to create something with a little more weight but… the gap seems pretty big.
The web is brimming with information about programming and software development. But so much of the information is centered around accomplishing one, very specific, very low-detail aspect of an application. How do I put it all together? How do I jump from writing a couple of Java classes to writing a large-scale web app? For me, even something as simple as setting up my application folder directory was confusing and inhibitive. How am I supposed to keep a proper directory when I don’t know how all the pieces fit together? Sure, I could copy the folder structure from another app on GitHub. But if I don’t understand how everything fits together, then how am I going to know how to fix it when my pieces aren’t communicating with each other properly?
Read a book!
Thankfully, there ARE resources out there that teach you how to increment your programs to the next level. Unfortunately, there are almost too many resources, especially online. It can be daunting to wade through heaps and heaps of Google pages, and for many self taught programmers it can be difficult to know where to begin.
For me, investing in a few good books helped so much. Yes, there are plenty of free, online resources. But books can often provide some advantages that online resources may lack
Books are well structured.
There is a definitive beginning and end, and each part of the book builds on what previous parts of the book covered. Books are created with a learning curve in mind. Many online tutorials are created by other programmers who are documenting their learning journey. These blogs can be incredibly useful, but they also sometimes jump from one concept to the next, and occasionally rely on the assumption you have a basic understanding of other concepts. Concepts that you might not have covered yet.
Often, online resources are not centered around a learning curve, but instead offer learners a ton of individual resources and it’s up to the learner to decide which concepts to start with and how to advance. This can lead to gaps in your knowledge, difficulty in understanding the material, and confusion on where to proceed. This isn’t to say that online resources are never structured. But they aren’t all structured, and with the huge number of online tutorials and blogs, it can be difficult to sift through the content and find one that meets your needs.
Books cover narrow topics.
I am so easily overwhelmed by the amount of information on the internet. How daunting! Sometimes it is difficult determining where to begin and which material is relevant, and it’s especially hard not to get disheartened with how much you still don’t know!
Books, however, keep you centered on a single topic. You don’t get distracted with a hundred links pointing to a hundred different resources teaching about a hundred concepts that you haven’t even heard of yet. I have occasionally fallen victim to the Savage Learning Cycle: I’m learning this ALLEGEDLY BASIC concept, but to understand it I need to learn this, but to get that I need to learn this…
You know what I’m saying. Thankfully books have a very linear progression and focus on a specific scope of knowledge. Once again, there are certainly online resources available that accomplish this too. But if you are struggling to learn a specific concept because it seems like every online resource assumes you already know x (which assumes you already know y, which assumes you already know z…) Then finding a book with a more narrow focus might be incredibly beneficial.
What am I reading?
For my Java journey, the Head First books have been incredibly helpful. I started with Head First Java, Then moved on to Head First Design Patterns, and I am currently working through Head First Servlets & JSP. These books teach you complicated concepts in a refreshingly easy to read manner (think Java for Dummies but easier) and it strips away all the “fluff,” focusing only on details you need to master a particular goal (preventing the Savage Learning Cycle). My favorite part is that these books show me how everything fits together. It doesn’t just teach an idea as a stand-alone notion. It does give the reader an intimate low-level understanding, but it also gives a high level overview of how a concept works in the Big Picture.
As for bumping my applications up to the next level, I’ll let you know how it goes!