By Yury Zelensky
Developers were once widely believed to be semi-magical creatures, known for their mysterious talent for fixing everything from your television to your microwave. In the last decade, however, the public perception of the profession has dramatically changed, with programmers seen as experts in demand on a global scale. But a question still remains: What makes good developers great? It's impossible to look into this complex issue in full in a brief article, but the main factors that contribute to excelling at programming can be covered.
Factor #1: You Have to Be Talented
There is a prevalent myth out there that talented people are just born talented, and everything that they reap as a result of their talent is part of something inborn. Society's obsession with celebrities (from John Lennon to Steve Jobs) comes from surface-level perception, without awareness of the effort put in to reach excellence.
Talent definitely exists. To be a great developer, you need to have talent, as a starting point, your ground zero. And, of course, not everyone is born a talented developer. For 99 percent of people, programming is not their calling. Three, at most five, people out of a thousand have a talent for programming. The situation may seem different in Canada, the U.S.A., and Israel on the surface, achieved thanks to immigration and not because more talented developers are born there. But, if we quickly look at global statistics, according to a 2013 study by research firm IDC, there are 18.5 million developers in the world, a tiny portion from the world population. Of those 18.5 million, not everyone was born with an innate talent for programming and not everyone will become great. If you take away specialists who come into the profession for superficial reasons, the number of truly gifted developers is much smaller.
Factor #2: Focus and Curiosity
To be great, you need to possess natural focus, extreme concentration, and discipline, coupled with an inborn curiosity and desire to analyze the world around, getting to the bottom of how things work. Developing is quite a specific area of work. The amount of patience and diligence it involves calls for a love of programming, not just the desire for financial stability or guaranteed employment. A great developer enjoys their job, and out of consistent daily enjoyment comes the enthusiasm necessary to withstand all the hard work that comes with the profession. Truly gifted developers don't need to be pushed to be disciplined or focused when on the job; they possess those qualities organically.
Factor #3: Standing Out from the Crowd
Besides s love for programming, being able to do the job better than others is an important factor. You may love your profession, but that does not mean you will always be in demand or that your niche will be a financially lucrative one. But, if you are leaps ahead of everyone else in terms of your skills, you will always find success.
Factor #4: Practice, Practice, Practice
The most important factor to achieve greatness is the realization that there is no speed elevator to the expert level. Even individuals who are most talented in their area of expertise have to put in years of nonstop work and development to be great. Despite the number of false, ready-made success recipes casually thrown at us every day, programming takes years or even decades to master. Degrees, book learning, and development courses are the surface of the craft, not its core. Only experience provides a reliable foundation to build on. Books describe solutions that worked in a particular space-time, for a particular problem and a particular developer. They may or may not work in a new situation, especially in such a dynamic industry. Extensive research shows that to become an expert in a certain area, you need to put in 10 years of experience, or 10,000 hours. Only that experience allows you to dig into your solutions bank and pick the right ones, or create brand new ones, applying them in the right way at the right time.
Factor #5: Never Stop Learning
Many people get their degree and freeze in their development. There is certainly a ceiling you can hit in perfecting your professional skills, but most people don't reach it. Not everyone possesses the wisdom of realizing that fulfilling tasks is not just working for someone else, but is also working for you first and foremost. A professional is always learning, while pushing others to learn, making it a win-win situation for everyone.
A classical university education is a starting point for further growth. You begin with the foundation that your teachers help you lay and then you erect the building on top of it yourself. It's important to learn to study and develop because that's what programmers will have to do in the real world, every day. If you want to do the same thing day in day out, this profession is not for you.
After looking at the five main factors of being a great developer, one might ask a logical question:
Can You "Breed" a Great Developer?
One of my first teachers had a theory about looking for future experts in kindergarten. The approach seemed a bit extreme to me in the past, but now I can see what was meant. You have to find rough diamonds before anyone else snatches them. I started programming on a napkin when I was nine and wrote my first program on a calculator. Today, kids can enjoy an endless number of easy-to-use free tools, like Scratch, to start coding, and their parents can discover their knack for it and support them all the way.
Because of this, some people are over enthusiastic about the next generation of programmers, lost in the illusion that because kids already code on their mobile phones in drag-and-drop games, programming is firmly established as the second literacy. The only thing the industry gains from young coders is that no diamond seeps through the net. But, kids coding on their phones does not increase the number of diamonds out there. Computer courses for kids mean a bit of fun and socializing, but it's possible to find potential superstars too, and help them get the best early start possible.
The main question to ask is: Have developers put their 10,000 hours in? Perhaps after having done that, there isn't any more room for growth and they will have learned everything there is to learn. But, in the majority of cases, one can keep moving forward, even if only by an inch or two. Developers who stopped learning will never become cream of the crop. If they pressed pause on their evolution even for a few years, the gap in knowledge will be very difficult to bridge. This profession lasts a lifetime. When you hire developers, try to make sure you grow your team by attracting specialists who constantly challenge themselves. If you are an aspiring developer, understand that continuous professional growth and dedication to learning will be part of the job—every day.
About the Author
Yury Zelensky is chief technology officer at Itransition. In this role, he is responsible for controlling and improving SDLC processes and non-functional software quality attributes. He also manages technological expertise, research and development activities, software, and IT architecture elaboration and audit, company talent pool, and business development. He began his professional career as a software developer in 1998. Since then, he has worked as a system analyst, team leader, and software architect. In his free time, Yury enjoys literature, philosophy, programming, artificial intelligence, and machine learning.
This article was contributed for exclusive use on Developer.com. All rights reserved.