The growing demand for software developers in the industry has led to an unprecedented race for knowledge, but is this enough?
How it all started
The software industry is growing by leaps and bounds, in the 80s only those who studied computer science were able to understand the complicated instructions that had to be introduced to a mainframe for it to process information. Nowadays software development has become a profession within everyone’s reach, learning websites like udemy or freecodecamp teach anyone who has the patience and passion to develop software without ever having attended university.
Sorry if I discourage you
I am by no means an exceptional developer, or at least I do not consider myself one, but I have seen a couple of people whose knowledge goes beyond what I can call “normal”, I consider that to be a good developer you should know:
- Data structures.
- Analysis of algorithms.
- Best practices in the industry.
- Work as a team (Perhaps the most important).
If you handle all this, I consider that you are a good developer, now, if while doing all this you can identify what is the problem to be solved, what is the solution, and what are the necessary tools to solve it, you are an outstanding developer. If you go further and know the entire software development process and can navigate between each of the stages in a very short time, you are very, very competent.
Now, if your code is scalable, it’s efficient, follow the S.O.L.I.D. principles and therefore it is clean, my friend you are an exceptional developer, but what can we do to reach this level?
Learn, apply, repeat
Learning is what a self-respecting software developer does the most, getting out of the comfort zone and when you think you’ve learned everything, check again because it’s never enough. In my particular case I focus on the following topics:
- Data structures.
- Software Architecture.
- Mathematics (Yes, they are important!)
- Do not marry a single programming language.
Not everything is just chopping code and waiting for praise, the technical leader or software architect roles have requirements in soft skills, those that we see as unnecessary but very well seen by companies such as:
- Analytical thinking.
- Vision for the business.
- Ability to work in a team and to guide other people.
As you can see, and if we summarize everything that I have talked about here, it is a fairly large list that is reserved for the greats, the most important thing is to continue in the learning process and never stop learning.