DEV Community

Cover image for The Paradox of a Software Developer
Harley Ferguson
Harley Ferguson

Posted on

The Paradox of a Software Developer

The Paradox

At some point in your journey as a software developer, you’ll reach the paradox.

The paradox is unavoidable and plagues all developers at some point in their career.

Now you may be asking, “What is the paradox?”. It’s this:

→ I feel like I’ve learned so much

→ I feel like I don’t know enough

These two counteracting feelings will take you through mountains and valleys. Moments of “I’m such a great developer and I’m doing so well” quickly followed by “I don’t understand nearly enough and was this the right career choice?”

Both feelings exist simultaneously and both will grow the longer you hone your craft. The more you learn and grow your skillset, the more you’ll become aware of tools, technologies, languages, concepts or frameworks that are out there that you currently know nothing about or have no experience in.

It’s an example of Einstein’s quote, “The more I learn, the more I realize how much I don’t know”.

This paradox is applicable to many aspects in life but particularly as a software developer. The reason being is that our industry evolves and changes at such a rapid pace. Often, as soon as you’ve mastered one framework, there is another one ready to take it’s place.

So how do we overcome the paradox?

I don’t think you can ever truly escape it but I believe there is an approach to help lesson it’s impact and increase your own confidence in your technical abilities.

The approach:

→ Specialize at what you enjoy doing and are good at

→ Obtain a general understanding of other aspects that you fear you don't know enough about

First things first:

Accept that you don't need to be an expert in everything. Don't waste your time trying to understand everything deeply because it's impossible. There is just too much. Rather acknowledge that there is value is knowing a little about everything and a lot about a little.

Java developers don’t need to know the latest changes to C# and frontend developers don’t need to know the crazy in-depth queries that one can write in SQL.

The confidence to overcome the paradox comes in specializing in something that you enjoy and are good at (your niche), followed by having a general understanding of the other things that are out there. The things that you hear about and suddenly have that sinking feeling followed by the thought, "I don't know enough".

Use that feeling to hone in on what you don't know and use it to your advantage. Use the paradox against itself.

Here’s my real world example:

I enjoy and love building frontend applications with backend-as-a-service technologies.

So I specialized in that to increase my technical knowledge and value that I can provide my teams and clients. React, Flutter, Angular, Firebase etc. That’s my niche and that’s what clients pay me for.

I then hear of technologies that send fear down my spine. "Should I know that?". "What if a client asks about that?". That's the paradox kicking in and showing me what I next to need to gain an understanding of.

Recently, it's been things like machine learning, Unity game development, low-code platforms etc. There is huge value in me gaining a good understanding of those things without needing to become a specialist in it.

I simply ask myself these 3 questions when researching something new:

What is its purpose?

When is it used?

How does it work?

We should be able to answer these 3 questions within a couple of minutes of researching. Let’s take machine learning for example:

→ What is its purpose? To allow software applications to become more accurate at predicting outcomes

→ When is it used? In projects that process data to help determine patterns or trends

→ How does it work? It uses algorithms to “learn” information from data without needing to rely on a predetermined equation model

There we go.

In 2 minutes of research, I’ve gained a super high level understanding of machine learning. I don’t know enough about it to go a build a model but luckily that’s not what I specialize in (currently). I have expanded my knowledge to be able to have a conversation about, use it in a sales meeting or identity a use case for it on a project.

Moral of the story:

Specialize in your niche. Generalize in everything else.

Join my newsletter, The 10X Developer, for weekly actionable insights and advice on how to become a better developer.

Top comments (1)

star-codex profile image

No shame in the niche, it's the root of all progress. Nice article. :)