Opinion

Two skills I value and look for

Skills that are most valuable in engineering

Atharva Inamdar
4 min readJul 27, 2022

--

This is my opinion based on my own learning at the start of my career till today that I see or expect from engineers. These skills are also something that I think distinguishes great engineers from others. My experience is from the software engineering industry, but this can apply to many others.

Photo by Todd Quackenbush on Unsplash

Research

The first skill is research ability. The dictionary definition is as follows;

to study something carefully and try to discover new facts about it

It derives from the old French phrase “to search again.” This is important. To me, a good engineer doesn’t simply say “I don’t know”, they say “I don’t know but I’ll find out.” If there is a new or unknown concept to someone, they should be able to research and find out almost everything there is about it. There is rarely anything that is undiscovered or not invented in the software industry. Usually, the challenge is quite the opposite, there is an abundance of information and multiple ways to solve a problem.

Researching for solutions, problems or simply to understand a system or behaviour will yield great benefits. Firstly, it increases our knowledge of the subject, helps us understand the theory behind something and eventually apply it in practice. Research can also inform us if others are using a piece of software or if they are facing the same challenges. I find myself saying many times that a problem isn’t new to our industry. The point is, there’s no need to reinvent the wheel, so to speak. Many companies need to pick an existing solution and implement it. So searching the web, reading blogs, asking vendors, asking colleagues all count as research contributing to this.

Another trait I attribute to this skill is the ability to evaluate options and make a good decision. How? Well, research leads to broadening our knowledge base, which increases our understanding of the subject and allows us to dive deep into it. As a result, a good engineer is familiar with a wide range of methods, tools, and theories that can be applied to the problem or task at hand.With this broad knowledge base, they can evaluate options, understand the nuances and make good, justifiable decisions.

Ultimately, you can find information to help you do your job in an easier, simpler, and lazy manner. My own approach is to spend the effort researching and then find simpler solutions/methods/tools to make my life easier while still achieving the intended objective.

Troubleshooting

The second skill is troubleshooting. The dictionary definition is as follows:

to analyse and solve serious problems for a company or other organization

to identify and correct faults in a computer system

Let’s focus on the first part, “To analyse and solve serious problems.” In the context of software engineering, we’re solving problems in code and systems. Troubleshooting starts with analysing the symptoms (system behaviour and errors). This is where many engineers let themselves down when they say “it’s broken” or “it doesn’t work”. Failing to state the problem symptoms clearly is a red flag for me. Either the person saying this doesn’t understand how to view the errors or doesn’t want to make the effort.

Many error scenarios or behaviours in software present themselves as stack traces or some log line being printed. The ability to read and understand these logs is important. Once the starting point is correct, the rest of the troubleshooting process should be logical and methodical.

Once the symptoms are understood, the next step is to analyse the cause. This tracking requires prior knowledge of the code/system or research to find it out. Narrow down the areas at fault and work backwards till you get to the line of code or system causing the error. Fortunately, computing systems are determinate (let’s not get into quantum computing). The processor runs instructions as directed by the code. Your application might fail because of a bug in it, because of some data passed to it, or because of an external system dependency. In-depth knowledge of your system or the ability to research it will help you get to the root cause of the problem. Logical thinking and critical thinking will be key in troubleshooting.

Finding the solution is usually simpler. The solution will become apparent through troubleshooting. It is sometimes necessary to rewrite code due to a fundamental flaw in the design, system, or logic. However, this too will be apparent through this process.

Let me know what you think; agree or disagree? Are there other skills you consider important?

--

--