DEV Community

Cover image for What is the real way to become a good programmer?
EmersonEhing
EmersonEhing

Posted on

What is the real way to become a good programmer?

I have been asking myself a lot since the beginning of my journey about what I should really learn. Besides the language with which I will encode ideas, structures and algorithms, what else should I learn? I know that the technical requirements are immense, I know that soft skills are of paramount importance. Working in teams, sprints, rites, discovering the details of a development that will (or not) go into production, applying the different levels of testability, what is the pattern design of best applicability for each situation, knowing when and what technology to use... taking knowledge of what the market needs, everything seems important and at the same time, not. Look to the side and see the subjects of the moment, cloud infrastructures, machine learning, artificial intelligence, quantum computing and so on and so on... they are not new subjects, but they have gained momentum due to other technologies that made possible a better development of them. Without the advent of big data, you wouldn't even be reading about machine learning and deep learning now. Without technologies like 4g, and now 5g, mobile development would have taken other directions, and so on. There is an invisible current that connects all things. One step leads to another and some steps lead to jumps. But what about me? With my scarce time, with my short life and my days of only 24 hours? What path should I follow, what technologies should I use, what areas should I explore? Knowledge has grown exponentially and I as well as my colleagues are only acquiring a superficial knowledge of things, we are small wikipedias, everything very shallow, we learn enough to put in practice only the small parts we need. It's quite obvious the result of this, isn't it? Jacks for all trades? Crippled professionals? Paid amateurs? There are ways of generalities and specialties: I can be a specialist in a certain area, but if I don't learn about the things which surround and connect, I will never see the forest, and worse, the day will come when I will become just a rotten trunk of a tree fallen a long time ago.

Another question that erodes me, while restructuring my lines of thought, and usually this leads to a positive factor, is the dynamics of different technologies that often seem to contradict each other, I mean, can I create a technology for people without at the same time in some way exploiting them? Life is full of contrasts, and that's great. When things go too well for a long time, the world becomes stagnant. Overcoming challenges and always searching for new solutions is essential for the human being to evolve, and so is the world of the developer. Without problems there are no solutions to be found, therefore, there is no employment. Sometimes I look at the long lists of demands of some job vacancies and I think: "Wow, this is monstrous... how will someone know deeply all these topics, all these technologies, and still have the proper practice for a professional performance?", then I remember some truths: the boss doesn't want to know how you did, he wants to know if it's ready, if it's safe, if it's scalable and if it has quality. The rest is detail, it doesn't matter the fashion framework, if you used functional concepts, if everything is clean, if there is any technical debt left to be solved in the next months, time is now and every minute spent must have a counterpart: the result of the work and in this the generation of value. Moral and philosophical discussions can be cool, but only when it happens at coffee time. The agile team calls for agility, it is very self-explanatory. "Ah, but contributing to open source projects for free is communism...", nobody cares. "Vim is much better than other editors...", really? Nobody's worried about which crutch you walk with, as long as you arrive at your destination. People like to fill their own void with frivolities, both the void of soul and intellect, and this has made the world chaotic. I'm sorry if you look at your colleagues who are not vegan, we have been eating meat for over a hundred thousand years, respect your ancestors. I'm sorry if the competitor launched a product like yours a week before you, but what were you doing? Discussing politics and religion? Playing video games and ping-pong? Don't think you're going to change the world by developing a food delivery application, or one more javascript framework. The real changes in the world happen first in the soul of man, when his spirit is touched by a revelation that makes him change his attitudes and his path.

Speaking of changes, I have adopted a minimalist attitude in my work, I like the idea of clean code, reusability, I like to code intentionally, I like to code aiming at the generated value, I like to use only the necessary dependencies and I hate redundancies, I love the idea that a well written line of code generates less comments to be written. Archetypal dismantling of multivariances and multivalences, poetic clarity of tangible aesthetics. Obfuscation and demateriality. I am a man of contradictions and I love complexities. You also know this: simplicity is not being simplistic, and to know how to make something simple, we have to have a deep knowledge of what we are doing. I think part of my fascination with the world of technology is due to the fact that I like to be always learning, to be dazzled by what's new and to engineer new possibilities to create, to generate, to do something new. And so I surrender myself to my destiny: to learn, detached from everything that can leave me behind; light, ready to be taken by the most fluid path. Without fear, without prejudice, respecting those who know more and integrating myself to a team as if it were my family. Programming is more than writing codes in any language, programming is above all communicating with your fellow men to generate value to the company and customers. Programming is a science and an art that starts at the core. Becoming a programmer is a lifelong endeavor, which without love and passion, will not result in the fullness desired, there will be no grace achieved, but only one more stressed person. Don't forget, commit yourself with the best of yourself, whatever challenge is imposed, whatever task is given, do it with dedication, do it with wisdom and know that you can always count on other people to overcome the obstacles.

Top comments (0)