I've worked with hundreds of software developers and took an active role in hiring many. Most of them were smart and talented people. Yet, a handful number of them were distinctively better at what they do regardless of their experience.

You may also know such developers from your experience.

When they are senior developers, they are often the "go-to" person in the team or even company. If they are junior developers, they are often swift learners.

I continuously encounter a common trait in such developers, and I will talk about this trait in this article: Being curious. I call such developers "curiosity-driven-developers."

In my opinion, being curious contributes to their success more than it seems at first sight. Curiosity helps developers become masters of their areas by fueling their ambitions. Anyone can be a developer, but only the curious excel at what they do.

They say curiosity kills the cat. While that may be true for a cat, that's exactly the opposite for a developer. Curiosity is what makes great engineers stand out from regular ones.

Staying relevant in software development requires constant learning and improvement. Curiosity helps a developer with learning in two ways. First, it keeps you motivated during learning so you don't get bored. Second, it highlights new learning opportunities that you would overlook otherwise.

But what does it mean to be a curiosity-driven-developer? What do they do differently? How can you, regardless of your experience, apply your curiosity to be a better developer than before?

They Uncover the Layers of Abstractions

Staying relevant in software development requires constant learning and improvement because the tools, languages, and frameworks change rapidly due to paradigm shifts.

Recent paradigm shifts focus on a particular goal: reducing complexity. Cloud computing, containerization technologies such as Docker and Kubernetes, and front-end libraries such as React are examples of such paradigm shifts. Low-code and No-code platforms allow non-developers to build apps quickly and deploy with one click.

But reduced complexity comes with a price: They become more difficult to fine-tune and may not behave as you expect at certain times.

Curiosity-driven-developers apply their curiosity to reveal the internal workings of abstractions by reading the source code. Knowing how they work internally provides several benefits:

  • They can use the frameworks more efficiently.
  • They encounter fewer issues, produce fewer bugs.
  • When they encounter issues, they troubleshoot them quickly.
  • They avoid outdated or incomplete documentation and making assumptions about how things work.

Sometimes complexity does not hide behind the libraries to make your life easier but hides behind the runtime and host environments you run your applications on. Take browsers as an example. Curious developers create the best performing web applications because they learn about how browsers render a webpage and how JavaScript engines execute their JavaScript.

They Are Not Ashamed to Ask Questions

The key to learning something starts with accepting what you don't know and not seeing this as a vulnerability.

Curious developers are always on the lookout to discover things they don't know. And they aren't afraid of asking either.

Did someone mention a technology that you haven't heard of during a meeting? Be curious and ask about what it is and what it does right away. Asking questions shows that you are paying attention, and it lets you follow the rest of the meeting and stay in the conversation.

If interrupting the flow is not possible, take note of what you heard and look it up later. When you join the follow-up conversations after the meeting, you will be able to understand and contribute.

They See Bugs as Cases to Crack

Every bug is a behavior that nobody expects to happen, from the developers who wrote and reviewed the code to the test engineers who verified it. In essence, every bug is a potential learning opportunity.

Bugs teach us how libraries and frameworks we built our code on might work differently than our expectations. Bugs show us our blind spots and behaviors that we overlooked or didn't bother to verify.

Debugging an error is a curiosity-driven process. What might have gone wrong? Maybe something is going wrong at a specific service? Maybe there's network latency?

Curious developers dig deep to find the root cause of bugs because the actual cause of a bug can be well hidden in a place far away from where symptoms show up.

Curious developers understand the fix fully before committing it. They don't copy-paste a code snippet from a StackOverflow answer without grasping why and how it solves the issue.

They Step Out of Their Comfort Zone

You are in the comfort zone if you can do your job with the knowledge (languages, tools, frameworks, etc.) you already know. It feels safe at first, but when prolonged, it turns into a swamp. It gets more difficult every day to get out of it.

Curiosity is the antidote to getting trapped in the comfort zone because it encourages you to learn new technologies.

Curious developers look for opportunities to get out of their comfort zones. They do that by taking a task on a particular module of the project they're not familiar with or moving to another team that works with different technologies.

There is always a healthy balance of how much you need to be out of your comfort zone. If you step out a lot, you can be overwhelmed. This feeling can hinder your ability to do your everyday work productively.

For example, if you're already comfortable with JavaScript, you can step out of your comfort zone by learning TypeScript before learning Java.

They Question Every Requirement

As a software engineer, you must understand the requirements of what you're working on well. Often even better than the users who are asking for it.

Curiosity plays an essential role in requirements analysis because it allows you to ask more and various questions to understand them, and it helps you see new perspectives.

Curious developers question every requirement before touching the keyboard. Who needs it? Why is it required? What kind of edge cases are there? What are the dependencies? Which features does it combine or contradict? How much maintenance effort will they need in the future?

When you ask a lot of questions, you learn the context and boundaries of the requirements. You comprehend the requirements from the end-users' point of view, not just from a JIRA story or a wall of text.

If you blindly follow what the requirements ask you to do, you could be out of a job soon because the machines have already started sharpening their skills at converting requirements to code.

They Are Curious About Other Disciplines

Curious developers aren't only interested in technology. They're curious about different disciplines, such as physiology, history, or economy.

Being interested in other areas helps you to combine information from multiple disciplines in your way. For example, you can use your physiology knowledge to create better UX for your users.

How to Foster Curiosity in the Workplace?

You shouldn't have to give up your evenings and nights to satisfy your curiosity. Making curiosity-driven-development part of your daily working routine is better, but companies must collaborate for that to happen.

Recognizing the importance of constant improvement and learning in the workplace is crucial for companies to keep innovating. Therefore, companies should create a development culture where curiosity and learning are encouraged.

What things can a company do to foster curiosity and learning?

Cross-team transfers help developers to gain new experiences in various parts of the technology stack. Companies should open the available engineering positions internally before hiring externally to achieve this. This way, you can consider switching teams to gain experience in different sets of technologies.

20% time is a project where employees have one day per week to work on their side projects. Although Google eventually stopped the practice due to concerns about productivity drop, I believe that it can foster productivity and innovation with the right culture.

How do I know? From experience. We have a similar practice at Mendix called Crafting Days where every engineer can spend two days per month on whatever they like. It can be an innovative idea in the platform or self-learning, such as trying out new technologies. Presenting the results is encouraged to share knowledge.

Learning budgets are useful to visit conferences and purchase books or online subscriptions. Curious developers can use this perk to network with other developers and master their interests.

Book clubs where people can come together and read books related to their common subject of curiosity.

An open, flat engineering culture where ideas are valued based on their contents rather than the person speaking it. A culture where architectural decisions don't originate from ivory tower architects but from the teams instead.

Tight deadlines imposed by management without the consent of the teams' approval is the number one curiosity killer. Why? Because it leaves no room to act on your curiosity. Even if you learn something during the fast-paced development, you won't have a chance to stop and think, how can I write this class better?

Final Thoughts

Software development is a profession that one can practice without a degree. That is how self-taught software engineers are born. And having a degree does not mean you are allowed to learn less to stay relevant.

Curiosity is necessary for natural, motivated learning for any software developer. Curiosity is the true friend to improve yourself and become a better developer every day. With curiosity, you can get to spend each day working toward becoming a better developer.

To summarize, you can make use of curiosity-driven-development by incorporating the following into your workday:

  • Ask more questions. This can be about requirements or a technique you haven't seen before.
  • Learn how runtimes, libraries, and tools work under the hood.
  • Debug errors with curiosity to get to the bottom of them.
  • Don't stay in your comfort zone for long. Step outside of it regularly to stimulate learning.
  • Use (or demand) perks in your company that encourage you to use your curiosity.

Thanks for reading!