← Return to Essays

What does it take to be a great Software Developer?

By Vitor Freitas June 05, 2016

Before getting to the college, I had no idea I wanted to be a Software Developer. Actually I enrolled in the course of Information Systems back in 2008 without having a clear idea of what it was all about. But it ended up changing my life for good — I discovered my passion and met the woman that would become my wife a couple of years later.

Even though I have remained in the academic field after completing my Bachelor degree, getting a Master’s degree in Computer Science and now doing a PhD in the field of Information Processing Science, I have always worked in the industry and in my personal projects in parallel.

For me the academia was just the vector that introduced myself to the world of programming and software development. And I’m very glad about that, but having a degree tells absolutely nothing when it comes to craft fine pieces of software.

Of course, knowing about all the good practices of software engineering, algorithms, data structures, algebra, mathematical logic, graph theory, statistics, project management, administration, accounting and even philosophy, can be very beneficial. But those knowledges does not belong to the universities. It is spread all over the internet. And we can learn in so many different ways. As matter of fact, we learn more by doing things, by experiencing them in practice, than by reading or listening. And it is very beautiful. Every day is a good day for you to develop your skills. All the resources are in the tip of your fingers.

“I hear and I forget. I see and I remember. I do and I understand.”

— Confucius

The life experience of doing college, the university environment, getting to know people that share the same interest is a rich experience. But, as for anything in life, it is not for everyone. If you feel it is gonna be important for you, go ahead and do it. If not, it is absolutely fine too. It will not define whether or not you will be successful in life, either if you will be a great developer or not. No doubt it can open some doors for you, but that is a different discussion.

So, what exactly does it take to become a great Software Developer? Among many things, I would say the most important are discipline, passion, positive attitude and practice.

Discipline is essential to achieve great results, to keep learning and developing your skills, to overcome the laziness and the procrastination when it comes to the boring parts. Because the art of software development goes beyond programming. I think we both agree that discussing with a customer, writing a test case or creating documentation is not as interesting as developing a new feature. But them all play a very important role in the quality of the software you deliver.

Passion must be the fuel of your career. The pleasure of developing a software should be greater than the pleasure of delivering the final product. If you love what you do, you are on the right path. Over our life time, we will spend thousands of hours working. Nothing better than spending all those hours with something we love, something that make us feel good about it. Passion gives you energy, makes your working life less demanding and more pleasurable.

Have a positive attitude. Be the glass-half-full person. See opportunities where others see problems. Always look at the bright side. Software development is an intensive problem-solving activity. Positive attitude helps with your creative thinking, gives you inspiration and motivation to overcome the difficulties. An open and clear mind is very important to solve problems. Also, there is nothing worse in a working environment than having to deal with persons with negative attitude.

Now, it does not matter if you fulfil the previous requirements, i.e., having discipline, passion and a positive attitude if you do not practice.

“Each man practices as he feels inclined. It is said the warrior’s is the twofold Way of pen and sword, and he should have a taste for both Ways. Even if a man has no natural ability he can be a warrior by sticking assiduously to both divisions of the Way.”

— Musashi Miyamoto in The Book of Five Rings

I will throw some names, and you take a couple of minutes and think about them. Wolfgang Amadeus Mozart, Musashi Miyamoto, Garry Kasparov, Usain Bolt, Ayrton Senna, Coco Chanel, Billie Holiday. Without arguing, they were the best. Why? Because of their natural abilities? Perhaps. Truth is I cannot tell. But something I can tell you for sure: None of them would be the best if they have not practiced.

I’m not saying you have to be the best. What I’m saying here is that practice will lead you to perfection. Perfection in a romantic way. Never forget that circumstances change, the world change, the knowledge evolves, and there will always be room for improvements. It really does not matter if you do not have natural ability for programming and software development — practice will eventually make you a great Software Developer.