This morning I read a post where an engineer in his mid-forties gave his views as an "old-timer" in the industry. He aired his frustrations with what he called churn in technologies: having to learn the new latest-and-greatest thing because our industry is so fast-paced and fickle.
He spent his early career working long hours with little sleep, in hopes of hitting the lottery on startup equity. Now he has little energy or patience left for the constantly shifting landscape of new frameworks.
Unfortunately, this story isn't unique. Plenty of engineers burn themselves out in their early careers only to find that their startup equity isn't worth millions.
We'd all love to get fabulously rich in just a few short years. But that's unlikely to happen. So it's wise to think about how you can set yourself up for long-term success in your software career.
Below, I'll discuss the learning path that I've personally laid out for myself after giving it a lot of thought. I'll discuss which skills I'm focusing on and why.
I hope that you'll find this helpful and that it helps you plan your own learning path.
Focusing on the constants
It's true – there is a lot of churn in tech. Frameworks change, technologies shift, and we often find ourselves learning something brand new.
But I believe that by focusing on the technologies that don't change, you can kick-start a flywheel that will make you a more productive engineer today and make it easier for you to learn new frameworks when they come out.
I'll go into more detail below, but here's the short version:
- Almost all your Internet experiences involve databases, and most databases use SQL.
By focusing on the constants, you'll master the foundations of modern web development and set yourself up for success in your career.
With that, let's dive in.
Databases, databases, databases!
When technology historians look back at the period of history we're living in, it's going to be all about databases.
Basically every action that you take on a smartphone or computer involves a database operation. Whether you're sending a text, checking the weather, or setting an alarm - that's all using a db somewhere. Hell, you're even using a database when the advertising overlords listen to your conversations.
If you put your reductive-thinking-cap* on for a second, you'll see that all of your favorite websites and smartphone apps are basically just beautiful interfaces for database interaction.
* an underrated instrument indeed
That trend isn't going to change anytime soon.
Companies don't just rely on databases to power online experiences. They also use them to store critical data like revenue metrics, marketing performance, and the dietary restrictions of their employees.
In short: databases are the backbone of the web – and of businesses! – and they're here to stay.
As web developers, we should know how to use databases. And, in particular, we should invest in learning the most common way to interact with databases: SQL.
Note: There are databases that don't use SQL. However, if you're picking a paradigm to really dig your teeth into, SQL is the way to go because it's more widely used and very standardized.
SQL isn't going anywhere
Okay, so databases aren't going anywhere. But what about the way we interact with them. Could that rug get pulled out from under our feet?
To answer that, let's look at where the innovation is happening in the database space. (pun very intended)
Database technology is flourishing right now. It feels like there's a new database coming out every day.
But despite all this newness, there's a lot of stability in the interfaces that databases expose. Database creators continue to choose SQL in large numbers.
Take CockroachDB, for example. It promises scalability with a simple SQL interface. The db can be scaled up to many servers (aka "nodes") without the user experience changing. Apparently the founders worked at Google, where sharded MySQL clusters were a huge pain.
The message from the CockroachDB team is pretty clear: let's keep the best parts of databases and fix the broken parts. And clearly they think that SQL falls in the "best parts" category.
This brings us to our first long-term bet for web developers...
Learn SQL and the Underlying Concepts
You heard it here first, folks.
You can get all of the goodies of a booming database industry through the tried-and-true query language of yore.
Databases are the backbone of the web, and a ton of 'em speak that good 'ol Structured Query Language. It's likely that every company you'll ever work for will pay top-dollar to someone who's good at SQL.
The key, though, is to learn more than just the query language that databases use. When I say "learn SQL," what I really mean is: build a strong understanding of SQL and the concepts used to build well-designed database tables.
That's right! It's not just a syntax thing. If you want to master this skill, you'll need to invest in understanding relational database modeling concepts.
Once you understand these concepts in depth, learning new Object Relational Mapper (ORM) frameworks will be a breeze. These frameworks include the likes of Rails, Django, and SQL Alchemy. They provide nice abstractions for working with SQL databases, and they'll be much easier to pick up if you properly understand SQL.
It's likely that every company you'll ever work for will pay top-dollar to someone who's good at SQL.
Now that we've uncovered the first long-term bet, let's move onto the next one.
Your Browser: A Window to the Web
Browsers are so ubiquitous that we don't even think of them as a platform to build for.
It's common to ask: Should I build for iOS or Android? But it's very uncommon to ask whether you should build a website. For most businesses and organizations, the answer is an obvious hell yea.
Most people think of their web browser as the Internet. That's how powerful this platform is.
The language and syntax will definitely evolve over time. But honestly, you'll be unfazed by most of these changes if you have a deep understanding of the language. You'll pick them up very quickly.
The key here is to develop an in-depth understanding of the language. I'm talking about understanding things like Scopes, Closures, Object prototypes, IIFEs, and the likes.
What should you learn first?
I recommend you tailor your learning plan to your career goals. Keep in mind, though, that career goals are not the same as what you do day-to-day.
What's on your learning roadmap?
What technologies do you think will be around for the long-haul?
What does your learning plan for 2021 include?
I'm curious to hear how you're thinking about building a sustainable career.
Leave a comment below and let me know!