The Runner Who Couldn't Tie His Shoes
And there he goes, folks! Rounding the corner to the home stretch!
What's this?? OH NO!! His shoes just came untied! 😨 Oh, the horror!! He's crashing, burning, and tripping all over himself!! 🤯
That racer trained so hard to win this race. But… he never took the time to learn how to tie his own shoes.
In the world of programming, learning to "tie one's shoes" means learning the basics. The fundamentals.
Shoelaces? Who needs 'em
Not mastering the fundamentals of programming is like trying to win a foot race without knowing how to tie your shoes.
Sure, you can probably make it to the finish line. And maybe you can even beat some of your competitors. But the way you get there is filled with unnecessary pain and difficulty.
Maybe you get really good at flailing your feet without tripping over your laces! But what happens when that 100-meter dash turns into a 5K or a marathon? Will those scrappy tactics still work at that scale? What if the race is up a hill or moves around sharp corners? Now, you're totally screwed.
John Wooden: A Coaching Legend
UCLA basketball coach John Wooden won 10 national titles from 1964 to 1975. Coach Wooden recruited the best high school basketball players in the country.
But yet, on the first day of practice every year, he started with showing his players how to put on their socks and shoes.
Imagine the shock of those recruits. When they walked into the UCLA gym for the first time, they expected to learn the secrets to a successful basketball team.
There are no secrets. The fundamentals are everything.
Enough about shoes. What about software?
This quaint analogy draws direct parallels to the world of software engineering. Maybe you get really good at creating todo-list apps in React, but you never learned why nesting 5 for-loops inside of each other is a bad idea.
What happens when you need to scale an app to serve thousands of users? What happens when your boss tells you to change the theme of your website from red to blue, but you hard-coded every component's hex color?
What happens when you need to switch to a different 3rd-party library, but you have 700 unit tests all depending on code from the old library?
"Skipping ahead" to learn just the skills needed to do a specific high-level task can bring you short-term success. But in the long-term, you are doing yourself a huge disservice by not having a solid foundation of basic software principles and design patterns. Your ability to grow and adapt to new situations is severely limited.
Just like you need to learn how to tie your shoes before you run a race, you need to learn your programming fundamentals before you build the next big app.