Skip to content

Why Curiosity is the Software Engineer Superpower

Published: at 01:00 AM
Time to read: 11 min
Author: Mouad Nassri
Featured image for post titled: Why Curiosity is the Software Engineer Superpower

It is a deep and profound instinct in a way that we cannot realize it, and it is the reason why we see some young engineers comes with brilliant innovations and solutions whereas some others with years and maybe decades in the field, who are still just a regular engineers. It is Curiosity, the lust of mind, and the feeling that is instilled in us since childhood, and we can clearly see its manifestation on the kid in his early years, where he is always curious about everything around him, he asks a lot of questions and see everything around him not normal. But as he grows up, that faculty fades away bit by bit, they start accepting prepackaged answers, as well as adopting flawed ideas and ideologies, without looking for evidence.

In this post, we will cover the importance of curiosity in the career of software engineer, and taking it from theological perspective first, then see how important it is in engineering to better understand its major role on our life, and how you as a software engineer can get it back from those killers of curiosity to help you to be innovative and open to learn new things.

Outline:

1. Introduction

2. What is exactly curiosity?

3. Approaching curiosity from:

  • Theological perspective
  • Software engineering perspective

3. Why curiosity is software engineer superpower

5. Case studies where curiosity led to breakthroughs

  • Linux kernel
  • Git version control system
  • SSR (Server-side Rendering)

6. Killers of curiosity

7. Conclusion


1. Introduction

We would not have any civilization or a society if there were not those brave people who conctantly ask questions and try to understand and discover the world around them. Curiosity is the engine and the driving force behind every innovation and achievement in human history.

Software engineering is no different. Curiosity is the superpower that differentiates normal software engineers from great ones. It is the ability to ask questions, to seek answers, and to never be satisfied. It is the desire to understand how things work and to constantly push the boundaries of what is possible.

Sometimes asking “How” is beneficial, but asking “Why” is more important. It is the “Why” that leads to breakthroughs and innovations. It is the “Why” that drives us to explore new ideas and to challenge what we have at hand.


2. What is exactly curiosity?

A curious kid learning programming

Curiosity at its simplest form, is the desire to know or learn how something works. It is the interest in understanding what happens behind the scenes. Sometimes, we fail to recognize its importance, because we were taught to memorize facts and figures, rather than to question and understand and come up with our own answers.

In Software Developement, you might know what a function does, but do you know how it works in memory? You might know that there is a pointer to function, but are you aware of an exploit called Return-Oriented Programming (ROP), which is a technique used by hackers to bypass security mechanisms?

It is about details and understanding the “Why” behind things. You may know what something is, but to understand it, is another thing.


3. Approaching curiosity from a:

The reason why I want to take this subject from those two particular aspects, theology and science, because Curiosity is a gift from Lord to humans, and having a strong theological belief is so important to keep this gift alive and to use it in the right way.

3.1. Theological perspective

An islamic mosque

As a muslim, I want to take this subject from an Islamic perspective, because Islam is a religion that encourages curiosity and seeking knowledge. In Islam, the first verse that was revealed to the Prophet Muhammad (PBUH) was:

Read, ˹O Prophet,˺ in the Name of your Lord Who created(Quran-96:1)

This verse is a clear indication of the importance of knowledge and curiosity in Islam. Allah SWT also said in the Quran:

And ˹remember˺ when Abraham said, “My Lord! Show me how you give life to the dead.” Allah responded, “Do you not believe?” Abraham replied, “Yes I do, but just so my heart can be reassured.”(Quran-2:260)

In this verse, Prophet Abraham (PBUH) asked Allah to show him how he gives life to the dead, not because he doubted Allah’s power, but because he wanted to understand and be reassured. It is clear that Abraham PBUH was not asking out of arrogance or disbelief, but out of curiosity and a desire to learn. Allah SWT said in another verse of the Quran:

And ˹remember˺ when Moses said to his boy-servant, “I will never give up until I reach the junction of the two seas, even if I travel for ages.”(Quran-18:60)

In this verse, Prophet Moses (PBUH) sacrificed his time and effort to reach the junction of the two seas, to meet Khiḍr: a righteous servant of Allah, and to learn from him. This shows that curiosity is not only encouraged in Islam, but it is also a way to seek knowledge and wisdom.

Abraham PBUH asked Allah to show him how he gives life to the dead, and Moses PBUH traveled for ages to meet Khiḍr. They were not satisfied with the answers they had, but they wanted to know how and to understand the details and learn the right guidance.

3.2. Software engineering perspective

A boy drinking cofee while coding

To understand the importance of curiosity in software engineering, we need to look at the history of big projects and also the way software engineers attack problems and come up with solutions.

A great example to illuminate the way curiosity is the invention of web UI component. In the early days of web developement, there was no such thing as a UI component. Engineers had to write the same code over and over again, and there was no way to reuse code or to share it with others.

It took steps and multiple tries to reach its final form. Engineers notice that some web parts were repeated across pages. Templates and server-side includes (e.g., PHP includes, JSP fragments) were invented to reuse the same code across pages. This reduced duplication but was limited to static rendering.

After that, they want to reuse those chunks, but with small variations like colors and size: Props (properties) were introduced, allowing developers to pass data into components making them dynamic and reusable.

How can we change a value in a component and have the UI reflect the change automatically? State management was invented, starting with local component state to cause the component to re-render when state changes.

After that, components in different parts of the DOM tree needed to communicate, how can we achieve that !? Global state management systems like Redux and Context API were introduced to solve this issue.

Client-side rendering (CSR), where the browser builds the page entirely using JavaScript, caused slow initial page loads, especially on slower networks, how can we make render process faster !? Engineers reintroduced Server-Side Rendering (SSR) with modern frameworks.

So, it is clear that it is question after question, trying to solve issues and come up with brave ideas and innovations. without curiosity and people like those who constantly chase solutions and adventures, we would never have reached the level of intelligence we see today.


4. Why curiosity is software engineer superpower

You may find a software engineer that spent years and maybe decades in the field, but he is still a regular engineer. He knows how to write code, he knows how to solve problems, but he doesn’t have the spark that makes him an innovative and creative engineer.

It is Curiosity that makes the difference, it is the reason why we see young engineers who come up with brilliant solutions and ideas. They are always out of comfort zone, they question everything, and they always try new things.

Sometimes, when you confront a new technology or a new problem, you may feel overwhelmed and afraid to go out of your tech stack, you must take a deep breath and follow that weird feeling that always end up with a great joy of unlocking mysteries and filling gaps in your knowledge.

Here are some reasons why curiosity is the software engineer superpower:

1. Spark creativity: Curiosity is the spark that increase creativity. It is the desire to come up with your unique art, and be creative in your career.

2. Drive continuous learning: Curiosity is the driving force behind continuous learning. It is the desire to know more and to always learn new technologies and paradigms.

3. Fuel problem-solving skills: Curiosity fuels problem-solving skills. It is the ability to search for optimal solutions and to solve complex problems.

4. Encourage cross-disciplinary thinking: Curiosity encourages cross-disciplinary thinking. It is the ability to think outside the box and be open to new ideas and perspectives, instead of fixing yourself in a specific field.


5. Case studies where curiosity led to breakthroughs

Here are some case studies where curiosity led to breakthroughs and innovations in software engineering:

5.1. Linux kernel

The Linux kernel is a great example of how curiosity can lead to breakthroughs. Linus Torvalds, the creator of Linux, was curious about how operating systems work and wanted to create his own operating system.

He started by writing a terminal emulator and a file system, and then he wrote a kernel that could run on his hardware. He was not satisfied with the answers he had, but he wanted to know more and to understand how things work.

He was not afraid to take risks and to try to create a whole system from scratch. He was curious, and that curiosity led to the creation of the Linux kernel, which is now one of the most popular operating systems in the world.

5.2. Git version control system

In 2005, while managing the Linux kernel, Linus Torvalds was dissatisfied with existing VCS, particularly BitKeeper, which was not open-source and had limitations in performance and flexibility.

Torvalds developed Git, a distributed VCS, in just a few weeks. Git revolutionized how software is developed, allowing developers to collaborate on massive projects efficiently.

5.3. SSR - Server-Side Rendering

Unlike the normal CSR (Client-side rendering) where the browser builds the page using Javascript after fetching raw data, SSR do all the rendering part within the server and send the HTML result as a payload to the client by conserving the cost of processing and performance and take all the hustles of libraries and frameworks processing out from the client’s machine.

How it works ?

  1. Request: A user requests a web page.

  2. Server Processing: The server renders the page, combining templates with dynamic data (e.g., from a database or API).

  3. Send HTML: The server sends the fully-rendered HTML to the browser.

  4. Hydration: After page load, JavaScript enhances events and interactivity (e.g., button clicks, animations).


6. Killers of curiosity

a boy crying on the corner of a school's library due to bad grades

Sometimes, certain things can stop us from being curious. These things make us lose interest in asking questions or trying to understand more. If we don’t notice them, they can block our growth and creativity. We list some of those killers depends on their effects:

6.1. Education systems

Traditional education systems often emphasize rote learning, memorization and grades over critical thinking and questioning. This can stifle curiosity and discourage students from exploring new technologies and trying to understand what’s happening under the hood, and also force them to learn for grades only and not to use this knowledge and its usages in real life.

6.2. Arrogance

Arrogance can be a significant barrier to curiosity. When software engineers believe they know everything, they stop asking questions and seeking new knowledge. This can lead to stagnation and a lack of innovation.

6.3. Illusion of knowledge

The illusion of knowledge occurs when individuals believe they understand something fully when, in reality, they do not. This can prevent them from exploring new areas of knowledge and trying new technologies and paradigms.

6.4. Toxic forums and environments

StackOverflow’s harsh critiques and downvotes on beginner questions can stifle curiosity and discourage learning. Instead of fostering growth, this unwelcoming environment often intimidates new developers, making them hesitant to ask questions or explore further.

7. Conclusion

Curiosity is a far deep and profound instinct, in a way that we often fail to realize it. It is a natural trait within us, clearly manifested in children at an early age, as they question everything around them see everything as not normal. Unfortunately, over time, society, family, and schools destroy this divine gift.

A software engineer must reclaim this trait and eliminate all curiosity killers by adopting a mindset of constant exploration and learning. They should cultivate the practice of asking questions and seeking to understand the inner workings of every concept or technology.