If you always let a GPS guide you to your destination, will you ever really understand how you got there?
A friend of mine lives six miles from my house. She's lived there for the better part of a decade, but it wasn't until recently that I was able to drive to her house without any direction. That's a little ridiculous when you think about it. This is a house I had visited a couple dozen times and I couldn't get there without assistance.
Why? you ask. It's not because I'm some sort of idiot (okay, it might be). Whether it was my wife in the front seat or the GPS app on my phone, I was always being guided to the destination. With the crutch of a guide, there was no reason for me to spend the energy to memorize the route. So I never (intentionally) did.
I started a landscaping company as soon as I was able to drive. In those days I had one of those cool flip phones that could send and receive text messages and phone calls and nothing else! To get directions to a customer's house, I looked them up on Mapquest (which is apparently still a thing), then wrote them down on a slip of paper (I've been told paper is still a thing, too).
Even though that paper acted like a guide, there was something different about following it. I had to be mindful and recognize where I was at all times so that I could be ready for the next move. No one spoke to me in real time, telling me exactly what to do.
And if the route was closed or blocked, I had to alter it on the fly and find my way back to where I needed to be. Often I'd get lost in the process. But by going with my gut, eventually I'd make that turn that would put me back on a road on the route and I could continue on my way.
And after I found that customer's house for the first time, I'd rarely look up the directions a second time. It just stuck because I had done the work to understand where I was and what I had to do to get there.
Learning to write code — to become a computer programmer — works a lot like driving to a destination for the first time. It's easy enough to take turn-by-turn directions. That's what tutorials and interactive courses do for you — they walk you through step-by-step problems, guiding you to predetermined solutions.
When first starting out as a programmer, it can be really useful to have a guide holding your hand through common problems. That helps get the basics under your belt without worrying about the nuances and complexities that are littered throughout everyday problems — problems that you'll eventually get paid to solve.
But getting to that level — a programmer someone will pay to write code — requires a little something extra. It requires that you know your way around languages, frameworks, and other tools. Along with putting your critical thinking skills to work, you must know how to use those tools to solve problems of all shapes and sizes.
You'll never be a seasoned developer if you're constantly following turn-by-turn directions. You need to put yourself out there. You must get lost in a language, framework, or programming problem. Then you can keep making turns, hoping you'll eventually recognize where you are. Sometimes you'll have to take your flip phone out and call for help. But eventually you'll make the correct turn. You'll recognize the street and you'll have your bearings, knowing exactly where to go next.
That's when you'll know you are a good developer.
We've traditionally organized files by type. But that can make specific files difficult to track down, especially in an era dominated by component-driven development.