I have recently been thinking about the importance of humility for software developers. I feel that the more I learn about building software the humbler I become, knowing I do not have all the answers. This attitude helped me a lot in my life as a software developer…
I was OOP expert after 3 years of study or so I thought…
I remember thinking that I knew Java and Object Oriented Programming pretty well when I was finishing my Bachelor degree. Why would I not think that? I had great marks, aced all the classes, read a couple of books and in general thought like I had a good handle on this Java and OOP thinking.
During my Master degree, I attended a class about Object Oriented Programming in Java. I enjoyed the subject and I thought it will be a fun and easy class… The class was fun, but it was far from easy! I realized how much more there is to the subject and how much more there is to learn…
Fast forward a few years- I ended up reading about GRASP (General responsibility assignment software patterns) and once again felt like there was a breakthrough in my understanding…
Then came the Domain Driven Development and Design… Do I need to say more?
Now I know much more about OOP and Java than I did after finishing my Bachelor degree. I also know that there is more to learn both in terms of knowledge and in terms of skill.
Being humble is being open to learning more
The main point I was trying to illustrate with this story is the amount of learning that happened after the perceived mastery. I am not saying here that I was not competent in the topic after the studies, but that there was so much more to it.
When you have the realistic view of what it takes to really master a subject, you will not stop learning. In many disciplines, especially in an ever-changing field like software development- full master is impossible. New things are introduced and added to the field constantly.
To put the advice I am giving here into one sentence: Be humble about your own knowledge.
There is more left to learn than you may realize, often you won’t know what you don’t know.
I knew that JavaEE was the best way to build enterprise software or so I thought…
When I started working with enterprise software I was working with the JavaEE and JBoss. Back then I was quite convinced that the latest version of Java with JBoss server is the way to go.
I heard about Spring Framework but given that I was working with (in my opinion superior) JavaEE, I was quite happy to dismiss it. After all what good comes from learning frameworks that are not based on “standards“?
If you read my blog, you will realize that I am currently working with Spring extensively and I am loving it. It is a great framework and for most cases, I actually prefer it to JavaEE.
Don’t fool yourself into believing that your tool is the best, just because you know it
For me, this JavaEE to Spring move was just one of many times where I realized that I was fooling myself that I know the answer.
This is not as much about overestimating your knowledge in one area, as it is about being open to different, new ideas. Maybe there is a reason why someone prefers a different language than you do?
There is a short and very good article called Give it five minutes where Jason Fried describes the moment where he learned a similar lesson. In brief- when someone invests large amounts of time working on something and believing in an idea, it is unwise to dismiss it straight away, simply because you originally had something else in mind. Give it five minutes. You may learn a lot if you open your mind a little.
To remember this advice, let’s summarise it- Give it five minutes, keep your mind ready to change.
I know how this process should work, what can he possibly teach me?
I have been in multiple situations where I would be discussing with someone how to improve a software development process in a project I was part of at that time. Very often I would start “listening” just preparing my responses. Of course, I was right (I would think), what can that person teach me?
When I look at these moments now, I think about the wasted time. So many times, the answer to a problem was right there, but I would not listen- I would focus predominantly on my own responses…
Listen to others, genuinely trying to understand
When I started listening to people, my life as a software developer became much easier. In fact, it made such a difference that I list it as the first Soft Skill for Software Developers in my article I wrote for the Scott Logic Blog.
You need a certain level of humility when listening to others. You need to be open to understanding and even open to changing your own mind.
If you listen with this deep intention to understand, you will not only understand better but the person that you are listening to, may open up more and give you a better picture. Once they know that you understood them, they may even become open to change.
This idea of understanding others as a key to working with people is explored at length in The 7 Habits of Highly Effective People– a book that I can’t recommend highly enough if you want to learn how to work better with others.
This advice can be summarised as- Listen to others trying to understand them first.
The balance between humility and confidence – beat the impostor syndrome!
I want to make it absolutely clear here- I am not advising you to develop an impostor syndrome! If you have not heard of the term, here is the Wikipedia definition:
a concept describing individuals who are marked by an inability to internalize their accomplishments and have a persistent fear of being exposed as a “fraud”
I was not naturally a humble person. While some people suffer from impostor syndrome, other may be blinded by an illusion of mastery. Both are bad and both can be damaging.
If you feel like an impostor, I am not telling you that you are validated in your thinking. All I am saying is that there is power in keeping your mind open, being realistic about the amount of knowledge out there and deeply listening to others. There is also power in being confident and not stressing too much about being a “fraud” or not. If that idea crossed your mind, you are likely better than many self-validated “masters” out there.
Realizing how vast the field is and how impossible is to master it all may help you fight that syndrome. The fact that you feel like there is so much to learn is good- you are ahead of the game compared to those who think that they mastered it all.
You are not a “fraud” because you don’t know everything. Nobody does.
The lessons I am talking about here made a big impact on the way I see things and the way I work. Keeping these ideas in mind and staying a bit humble made my life much easier. In summary, my advice is:
- Be humble about your own knowledge.
- Give it five minutes, keep your mind ready to change.
- Listen to others trying to understand them first.
These are the simple rules that helped me a lot. I hope they can help you as well. Keep your mind open and don’t stop improving.