How to be a better software developer. Four things no one ever mentioned
Some time ago, one EPAMer asked me a question: what is worth learning to become a better software developer? Unfortunately, I didn’t have an answer ready at the time. So, I gave him a reply from the top of my head.
Spis treści
Introduction
It was something along the lines of „It is worth learning more high-level stuff, like software development or the processes of delivering code to the customer, instead of focusing on learning a new library or a new language. It is because this changes quickly, and it will be more helpful for your career if you focus on timeless things.” This EPAMer was a very good programmer, he was (and probably still is) more productive than most of his colleagues.
However, after some time, when I could think more about what good software developers should pay attention to in order to be even better, I concluded that my advice could be much better if I focused on something other than technology. Why is that? Because if someone is a skilled and productive programmer, will learning a new library give him any advantage? Will learning a new library, framework, or even a language change a lot for such a programmer? I don’t think so.
If we focus on things outside our comfort zone, we will get a stronger synergy with what we already know than if we added knowledge of new technology to our repertoire. For example – will the skills of negotiating with the client be more beneficial for an efficient software developer than knowledge of the Dapper library? In the long run, wouldn’t improving mental performance make us better off than if we learned another programming language instead? Won’t good presentation skills increase our chances of entering into cooperation with a business and starting our own company? If you think so and want to be a better programmer, I invite you to read my revised answer to that EPAMer, which I will give today.
Go dance
Antifragility is the word Nassim Nicholas Taleb proposed to describe the phenomenon with no name. What does it mean? Try to answer the question: what is the opposite of fragility? You’d probably say – endurance, robustness, or being solid. Well, according to Taleb, it’s a bit more complex. A fragile system is one that, under the influence of external stimuli, worsens its condition – it degenerates. On the other hand, a robust/endurant system does not change its state under the influence of external stimuli. i.e., its condition is not worse than before the stimulus. But how do we call a system that becomes „better” under the influence of stimuli? That is what Nassim Taleb calls „antifragile” in his book with the same title – „Antifragile.” But does such a system make sense? Does it even exist? Of course! An example could be the process of evolution, our body, capitalism, or Bitcoin.
When a volcano erupts on the island, it will destroy the local flora and fauna. Still, the ecosystem will develop under the influence of the stimulus, and eventually, it will flourish. This is what happened after the extinction of the dinosaurs. There was a catastrophe that wiped out most of the species on Earth. But the ecosystem adapted, and new species were created in it – 65 million years after this catastrophe, the new species are sending rockets to space.
What happens when our body gets hit? First, there will be a bruise, but over time, the muscle will strengthen and become stronger and stronger.
What if a restaurant in the area goes bankrupt? Another one, probably with better food, will appear after a while in the area. And so on! Examples of antifragile systems are countless.
Programmers are usually the people who are great at coding, but if there was no electricity, we probably would not be able to set a campfire, get food, or build a shelter. In social situations, we may have challenges maintaining a conversation, and at weddings, we sit on the sides more often than we rock on the dance floor. We have most of our “skill points” assigned to one skill. Therefore, my advice to programmers who want to be better than before is to do things we do not do daily. Go to your first martial arts class, make a YouTube video, sign up for a dance class, spend 20 minutes meditating, write an article for a newsletter, or try to set a campfire. Anything that makes you feel uncomfortable, and you will do it, will make you grow more than yet another .NET memory management course.
Throw the alarm clock out the window and eat a carrot
A few years ago, I caught a throat infection – a minor one, manifested as a slight soreness in the throat. When I had to say something or swallow, I felt a minor irritation, but when I drank warm tea, the irritation disappeared for a moment. Everything was fine until I started having trouble falling asleep because of my throat. After all, it bothered me; how was I supposed to fall asleep? The first night was hard, but I got tired and mentally weakened the next day. I worked, still moisturizing my throat with a warm tea. However, after the third sleepless night, I could not think, lost track of time, had trouble keeping my balance, and lost consciousness for short moments (the effect of not sleeping for 72 hours). Skipping to the end of the story – everything ended well. I stopped drinking tea during the day to soothe a slightly irritating throat and… I fell asleep. If only I had thought earlier that the reason for being unable to sleep was not the sore throat itself but the liters of tea I drank every day, I would have saved myself from this vicious circle.
What has it taught me, and why am I writing about it? It is because I have experienced how much sleep is needed to maintain mental capacity, creativity, and focus. For us – programmers – all these skills determine how good we are in our profession. Since I couldn’t draw such an obvious conclusion – like the one about drinking large amounts of tea – when I was sleep deprived, won’t it negatively affect my other decisions if I’m extremely tired? It probably would.
In addition to sleep, our health is an equally important aspect – and I cannot stress enough just how important it is. We live in a world where commercials about processed food bombard us, and a minute later, we will see an advertisement for a medicine for some health problem caused by our eating habits. I remember a case where on Fat Thursday (a Polish holiday when, according to tradition, we eat donuts for a day), an advertisement for a local bakery selling donuts was played on the radio, followed by an advertisement for a medicine for gastric problems. An excellent example of the message we get today is to eat what you want, and if there are any issues because of this, you will get a pill to solve your problem.
Will this approach work in the long run? If you think so, then you shouldn’t do anything. However, if (like me) you see that this design has flaws and is not a good long-term solution, then it will be wise to do your research and act accordingly, i.e., take responsibility for your health!
Answering the question of the person mentioned in the introduction, today I also consider the long-term factors affecting a programmer’s performance. And, apart from sleeping, taking care of our health is the factor that will allow us to maintain our abilities throughout our careers.
Set your long-term positions
Programmers and other IT professionals are among the highest-paid on the job market today. At a young age, many of us can already have our lives set; we can secure the future for ourselves and our families. However, for some reason, few people do that – we do not care about our finances.
Wealthier people live longer, sleep more soundly, and have less stress. It’s intuitive – since you don’t have to worry about the future, your head is calm, which translates to general well-being. But that’s not all! Contrary to the popular opinion that „money does not bring happiness,” a well-known study from 2010 suggests otherwise (albeit up to a certain threshold – above which the increase in happiness is minuscule). Wealthier people more often take care of their health, have time to develop, and care about the environment!
So, what should I do, you ask? I will not tell you whether you should now invest in Chinese commodities or US technology companies, gold, silver, or Bitcoin. Instead, it would be best if you did your research and, based on the conclusions, set your long-term positions on what you think will allow you to multiply invested assets in the coming years. And you can achieve it by… not being a statistical person.
Don’t be a statistical person
A statistical person (at least in Poland) reads less than one book annually. I used to be close to that statistic. I thought reading was just another form of entertainment, like movies or games. To some extent, that may be true. Back in school, we all hated reading because we were forced to do so and had to read the least exciting items from the entirety of literature. This probably did not help me or others expand our knowledge with books.
In one of the books (unfortunately, I don’t remember the author), I read that „reading 100 books a year starts to pay dividends after 30 years”. It was a shock to me! How is that possible? 100 books per year? If this is possible, how wise can you get, what kind of knowledge can you possess after reading so many books? After some time, I understood how intelligent people think – they plan their lives, do not reject things out of laziness, and act as they feel is right. They do read books.
If you think that after 30 years of reading, you won’t be a better person, software developer, or parent, then you probably shouldn’t listen to me, don’t read books. However, if you answered „yes, I will be a better person” to such a question, it is probably wise to follow this path. And you don’t need to plan these 3,000 books. Start with one book, and the other ones will soon follow.
Reading expands your worldview, allows you to understand the surrounding reality, and gives you knowledge. All of this will make us more antifragile. And that makes us better programmers.
Conclusion
Did you agree with the statement in the introduction that learning something outside of your comfort zone would be more helpful to your career in the long term than just another library? If not, you’re probably not reading this anyway. If you did agree, start now. You don’t have to tackle everything right away. Take the first step… and sign up for a dance lesson!
This article was originally published on wearecommunity.io. The article’s main photo is from envato.com.