A software developer’s mindset

Category

Blogs

Author

Wissen Team

Date

April 28, 2023

I have observed some common traits in the brilliant software developers I have come across. I will list six of them.

They have a dislike for inefficiency

They cringe at doing the repetitive task manually and become experts at using regular expressions to do a search and replace. They might use Excel to generate repetitive code or SQL. They write a script to automate chores – like checking the status of a service or deploying a new build of the software.

They sharpen their axe

There is a proverb “sharpen your axe before you start cutting the tree”, so brilliant software developers keep their toolkits in good shape. They master their IDE and know the shortcuts. Developers are familiar with the productivity features - like generating code and refactoring. The IDE is integrated with source control. They have a well-developed Unix shell profile and have aliases for commonly used commands.

They can find problems just by reading the code

There is a bug in production. The average developer will reproduce the bug in the development environment and then debug through the code to find the root cause. Then some brilliant developers can debug by looking at the log and code. They can quickly understand another developer’s code. They can logically play the code in their mind to figure out the piece of code or data that is causing the issue. There is a certain logical rigor with which they can explain the issue and the fix required. This quality is useful when the problem is hard to reproduce. Multi-threading problems fall into this category.

They write robust code for the first time

As they write code, they learn how to handle edge cases. Their switch statement manages the “default” gracefully, not just the known cases. The end condition of their loop is “<=” or “>=” instead of “==”. They use an enum instead of plain “int” constants and compare floating point values while keeping precision in mind. They make code thread-safe by default, and can smell a race condition and stay away from it. Their objects are immutable unless otherwise specified. Their public APIs are minimal. 

They keep learning

You will find their bookshelf full. They read or watch tutorials, and blogs to understand new technologies, and their curiosity will extend beyond their work. They are curious about science, technology, and mathematics in general.

Fearlessness about new tools and technologies

They are ok to get out of their comfort zone in technology, and easily adopt new technology if it makes sense. This trait should not be confused with the fascination for anything considered a “hot” new thing and can cut through the hype and make practical choices. For example, even if they are primarily a Java programmer, they do not think twice if writing a simple shell script gives the desired result in a shorter time.