What you probably lack as a developer

Hicham Amchaar
3 min readFeb 1, 2021
Photo by James Harrison on Unsplash

Let’s agree from the start, the road to be a good software engineer never ends, it is a continuous learning process for various reasons.

What are those reasons? What should one do to enhance his skill level and then keep it high enough?

Many questions that I, you should think about.

Passion

First things first, the passion. The fuel for achieving great things in life is to have passion and love for what we do.

Photo by Ian Schneider on Unsplash

But what if sometimes or even often, you find yourself not motivated or not having “enough” passion for what you are working on?

From my personal experience, the key is to keep the flame burning by trying to find what we like in what we do. If not, extra-professional activities in what one likes are a good way. Nowadays, it is not difficult to get involved in communities or self-train and start a personal project at home for example.

Dedication

From passion and love comes dedication naturally. Because dedication could come from necessity or stubbornness to succeed, but these are hard ways, they are necessary sometimes but for now just stick with the easy way, the happy one.

Dedication appears in the form of hard work obviously, a great MIT algorithms teacher was saying at the beginning of each new year to his software engineering students:

“If you want to become a great developer, you have to code each day for 5 years. But if you want to become a world-class developer you have to code daily for 5 more years or … take an algorithms class.”

From these words of wisdom, we could say that skill comes from continuous practice, but we must add core computer science knowledge.

Knowledge

Sometimes one has the illusion that he knows well an area because he worked on problems in that specific area for some time. Many developers today, lack basic software engineering knowledge because of the latter thought. Trust me, I know the feeling. We all get absorbed sometimes in what I call the “value-asap hell”. But one should not forget the basics, postpone may-be but do not overlook or ignore completely.

Photo by That's Her Business on Unsplash

If you can explain to yourself or a colleague clearly a software engineering concept, it means that you have a deep understanding of it.

“If you can’t explain it to a six-year-old, you don’t understand it yourself.”

Albert Einstein

I would not go as far as Einstein, because sometimes you need pre-requisite knowledge to understand a topic in simple words.

Anyway, if you cannot do the latter, you have to go back to the basics of that specific area and try to understand them.

Nowadays, for example, date-handling, memory allocation, basic algorithms are, unfortunately, areas that many developers overlook often.

The second cause of the false knowledge sentiment is the technology alienation, that many software engineers suffer from.

I understood this many years ago. I was an energetic junior willing to learn and work hard, but I was wasting my time collecting technology-specific information, rather than focusing on concepts, and problem-solving skills.

Indeed, some subjects are technology agnostic, they are more useful to you than learning many tools (frameworks, languages) that do the same things but maybe differently, and in the long run, that is what makes the difference.

Conclusion

There are still many things to talk about, one small blog article is not enough.

“The only true wisdom is in knowing you know nothing.”
Socrates

I wrote this article as a reminder to myself first, and also as a part of my efforts to give back. Let’s stay humble, and continue our journey’s towards knowledge to be happy and fulfilled.

--

--