The essential skill of a developer

Being a developer requires specific skills and tools. I have put an effort to make a list of all the skills, tools, and techniques that I acquired during my career, and I was surprised by the number of them. During this process, I realized what the essential skill for one developer is.

I am writing this article from a frontend developer perspective, but it could be applied to every modern development branch.


I have created a mindmap of the skills and tools I acquired during my career. It was inspired by Kamran Ahmed's Web Developer Roadmap. Kamran's roadmap made me think what did I learned, how many skills do I have, and are those skills still valid and required. I have used my Toptal profile as a reference of skills and tools because I am trying to keep my profile up to date there.

Mindmap containing skills learned as a developer.

Once I reviewed all skills, I decided to divide my career into three parts, depending on my employment status.

Unemployed years

When I was starting, I didn't know what I want from my career. I was learning about web fundamentals because I was given the opportunity to land a job as a PHP developer once I master the basics. Mastering loops, forms, templates, and AJAX seemed impossible to me. After a few months of sleepless nights and no incomes, I finally felt like I understand the basics.

Although I was at the very beginning, I learned I wanted to become a web developer. Solving problems using code was painful, but satisfying at the same time. Soon I would find out that the effort invested in learning and gaining new skills was worth it.

Organization years

So it began, I started working as a PHP developer. With my basic knowledge, I finally got the chance to work on an actual project. I wanted to build shiny websites and formidable applications, but I didn't know how to do any of that. I don't know about you, but I felt like the world was falling apart. I learned that I knew nothing. How to set up a project? How to start? Where to start?

After endless consultations with my mentor, and about billion bugs and issues, I finally started to produce the code that works. During this period the most important skill I have acquired was learning how to find an answer to the specific problem. I obtained a new set of skills, too, like setting up IDE to help me spend more time coding and less time finding typos, and how to use Composer, for example.

“I learned something new everytime I succeeded. I learned even more everytime I failed.”

After I have worked on different projects for a few years, I was getting comfortable making decisions on my own. I was exploring different approaches how to solve problems. I learned something new everytime I succeeded. I learned even more everytime I failed.

Suddenly knowing how to produce code was not enough. Using tools like Redmine, Git, and Bower was required to increase productivity. Sometimes learning how to use a tool felt worse than debugging Internet Explorer bugs. Moreover, it was time-consuming, too. I had to spend our precious time in learning instead of making money.

At this point in my career, I knew I wanted to become better in frontend development. Soon I switched my job, and I started to work as a frontend developer for the more prominent organization. This organization encouraged proactivity, so learning new techniques and tools, and sharing the knowledge with the team was part of the job.

It was a great time to learn. More tools were introduced monthly, if not on a weekly basis. Choosing what to learn, and what to use was not an easy decision. Investing time in something that wouldn't be a benefit for a project or a team was not in anybody's interest.

I learned how to present obtained knowledge to the rest of the team, too. Speaking in public, even in front of a team that you know is not easy. I am still not comfortable when I have to present something to others. We had team buildings, meetings, and workshops, and I worked hard to be as professional as possible. Again I had to spend our time in other aspects, than in producing the code. This time was different because I knew it was time invested, not wasted.

Freelance years

Last year I started a freelance career. It was a great year for me, I worked with extraordinary professionals on exceptional projects. Working remotely, and juggling projects continuously mean adapting to new surroundings and environments. That is where spending hours, days and months of learning about new tools come in beneficial.

“Learning and using new tools and applications are part of the job.”

In my opinion, I learned more techniques, and tools in the past year than in all previous jobs. I didn't enjoy learning about all of them, but I didn't mind either. Learning and using new tools and applications is part of the job.

Being able to adapt to the new environment is vital for me. I am not ashamed to say that I never used a particular technology or technique before. It is important not to be afraid to learn it. Most people I have collaborated with were flexible and understanding when this was the case.


There is a quote from an old movie that could be applied here:

“Every day in every way I'm getting more and more progressive.”

I learned a valuable lesson that learning was part of the job — a developer could never know it all, it is impossible. Never stop learning and improving yourself. 📚