I’m not going to lie to you, I’ve met very few “rock star” software developers. Becoming the “Messi” of programming for any organization is extremely difficult as it is very rare to find any … Why? Well, to become one, there must be an accumulation of exceptional circumstances.
Having said that, we all have the right to dream and be the best version of ourselves, right?
There is a lot of misinformation
The “masses” are poorly informed about what software development really is. And that is thanks to all the movies that show a teenager doing something amazing on his computer while the audience thinks “wow!”, or when a sensationalist media that only looks for clicks spreads misleading information, such as that a 9-year-old has developed incredible software or hacked a website, or a software developer has created an incredible application.
Now, if it’s so easy, why does IBM have 450,000 employees, why does Indra, TCS, CTS, INFOSYS, and others employ hundreds of thousands of people? Are they dumb? And I have written this paragraph for you to think about it for a few seconds …
What is development?
Now, let’s focus on the term “development. ” It simply means that something is not being invented, but something is being created from the knowledge, skill, raw material and effort that is already there.
Software development is somewhat similar. Programming languages are learned, data structure is learned, algorithm complexity analysis techniques are learned, best practices followed by industry are learned and teamwork is learned.
If you have all this under control, you are a normal software developer, without further ado. Now, during the period in which one learns and identifies what the problem to be solved is, what is the solution and then what are the necessary tools to solve it, one becomes a good software developer.
When you know how to handle every aspect of the software development process in a very short time, you are a very competent software developer.
However, an excellent, unbeatable, unsurpassed programmer, that is something else.
The most competent programmers in the world focus on knowing, from my modest point of view, only these three things (almost nothing!):
- The appropriate software code for solving a problem,
- the effectiveness of the software code that has been written and,
- how well the solution will behave when it scales and adapts to a large user base.
As I mentioned in the introduction of this article, this kind of programmer is not very common.
I can assure you that not all programmers are equal and the best ones stand out for their ability to make good decisions in a short time with a very small margin of error (although they are wrong, but much less …).
What you have to do?
Learn and learn and learn. Learn what? Any programming language (or languages) that allows you to write code (preferably with a certain labor demand). The programming language, in particular, is not too important, since it is really essential to know several languages for many reasons. The most important thing to learn are things like:
- Data structures,
- Computer Architecture,
- And about two or three or four programming languages to have more resources to solve problems.
The most important personality traits to be a great software programmer can be developed based on work and effort and with the experience given by the years of work:
- Analytical thinking
- Creative vision
- Vision for business
- Ability to work in a team, either in an office or remotely.
- Attention to detail
Effort and motivation
This involves a lot of work, probably more than 5 years of work are needed, mainly focused on improving and learning, and another 10 years or more of work experience, and the ideal is to do it in parallel based on a lot of effort.
One of the great challenges will be to set goals and measure progress, because the process is so long that motivation can be lost.
And you are the only one that is in charge of that. Who knows? Maybe you go through this post in 5 years and tell us that you have become a superstar programmer.