It is a mild December afternoon. I’m sitting in a café in Warsaw, drinking delicious coffee, and listening to silent music in the background that helps my creativity. Behind the window it is nightfall, on the street, you can see only single people. On the opposite side of the street, blinking lights remind me, that Christmas and New Year are coming soon. End of the year always reminds me, that it would be wonderful to look into open topics, which I was not able to finish because of many reasons. One of them is my blog. I looked into topics that I collected some time, and I found the perfect topic for Friday’s afternoon. Today I decided to write less technical, short, and light text. I write it mostly thinking about programmers, but nevertheless, I think that ideas are universal and can be useful also outside the IT world.

Maybe you sometimes think if you are a good specialist. Perhaps you have already written many applications in your career. Could you honestly say, that the quality of software produced by you was good? Do you think that your coworkers are glad to work with you? Do you implement your own initiatives? On which level you are? How to set a level which you are currently on? Do you know your strengths and weaknesses? Are you working on it? How to become a good programmer? What should we do to get better and better?

I ask myself such questions very often. Mostly I think, that I cannot treat myself as a good programmer. It falls out of my very critical thinking about my self-development. My inner critic, always says “Dude, you have to know all technologies, It would be good to know also foreign languages, and speak in a really clear way, take care of your presence, also about your health and many, many other things that lack time does not allow doing.”. Natheless I think, that I choose a good career path and consequently realized the plan to feel successful in my life.

My techniques on how to become a good programmer.

Maybe I will sound like a random self-development coach from the internet, but one polish classic saying says “Without a self-development you are in the ass”. Of course, coding is not the most important thing in our life, and times, when programmers were sitting all day long in the basement without any need to talk to anybody, passed away. Today real specialists in IT not only write code but also have to interact with many people, giving advice, gathering requirements, or explaining their own ideas to other programmers.

Underneath I place some of the rules, which I follow, which helped me to reach far in my career in a really rapid way with a small amount of energy put into it.

5W rule

What is the difference between a junior developer and a regular developer? Which attributes of programmers decide if a person will be a burden for a team instead of support? Why some of them are becoming remarkable programmers and some of them remain on the average level? A lot depends on willingness itself and approach to life. I believe that one of the most important things in self-development is asking many adequate questions. Answers to the questions can give to someone with more extensive experience, but we can find answers also on our own over the internet. This will be one of the best ways. The best questions start with “Why”.

Name 5W is derived from 5 x Why. The rule says that if we want to thoroughly know any topic, after asking five times “why” we get into the nitty-gritty. Imagine yourself, that you obey this rule in every rankle topic connected with your work. Try it! I think it’s one of the quickest ways to the promotion to a higher level and become a good programmer. 

Learn how to talk to with stakeholders

Conversations between programmers and stakeholders are not an easy topic. Mostly the problem is that programmers are using a lot of technical words and shortcuts. For technical people, it’s mostly understandable but for “normal” people not.

How to learn to communicate with such people then? The answer is easy and sounds stupid but it works. Just learn how to explain technical aspects like you would explain it to children, or even better to your grandma. Anyway, try to explain to your grandma how SSL works. It’s really good exercise. I like to ask this question during job interviews. Answer not only allows me to recognize the level of knowledge on SSL but I also see how someone uses simple analogies to explain complex topics. When someone has this skill, he/she will be a well-paid consultant, but also a good mentor. Being on mentoring we can go to the next point.

Teaching others

Passing knowledge to others is a marvelous way for self-development and an ideal way to become a good programmer. Teaching others, you learn a lot. It happens often, that people with lower experience are asking questions on topics that seem to be obvious and we would never ask ourselves about it. It allows understanding the reasons for occurring some problems that we used to find in software and also helps to avoid them in the future. Doing a code review also forces you to extend your knowledge. Teaching others develops the skill of passing the knowledge in a clear and precise way, as well as helps us to understand better our interlocutors.

Search for better solutions

Do you know why “fresh blood” is so appreciated in projects? It’s common that well-organized and structured projects are not renovated and updated. Everything is held on the same good level but nothing more. Sometimes these projects are even on the bad level and the team does nothing with it. There is a commonly known saying “If it works, don’t touch it”. That’s why many projects are far away from trends. Versions of libraries, methodologies, architecture and the way of resolving issues remain the same from the beginning to the end of the application lifetime, just because it is convenient.

If you are looking for a recipe for how to be a good programmer, regardless if you are a new or old team member, be this “fresh blood”, who searches for better and newer solutions. In pursuit of that website like thoughtworks.com and their technology radar will be helpful.

Become an interviewer

If it is possible, endeavor to have a new additional duty – being a technical interviewer in your company. It will be for you not the only motivation for learning new things. Leading a job interview learns us many priceless soft skills. Besides leading a job interview itself we learn also how to build constructive feedback and assay the skills.

Leading technical interviews gives me a lot of power and confidence. I often don’t get answers for topics that seem to be easy and seemed to be obvious when I was on the candidate’s level. I realize then, that in fact at some moment in my life I stronger pushed a throttle and overtook some of the people with similar experiences counting in years. I’m not thinking now about how I can become a good programmer but I think about making my situation even better and becoming a true software architect. My sad inner critic falls then into a depression and is saying nothing to me for a long time.

Summary

In summary, I would like to only encourage everyone to develop not only programmer skills but also soft skills. Soft skills are not less important than technical skills and should be fostered regularly. Do aforementioned points I would add also sharing knowledge in a form of a blog or any other IT portals as well as public speaking. Intentionally I didn’t write anything about public speaking, although I think it is one of the most important life skills. I just don’t want to be a smart aleck on topics that I know only theoretically. I think I will record some time a video on how to be a good programmer, which will be an extension of this blog post.

If you reached that moment of my post I would like to thank you for reading it and I wish you persistence in pursuit of your dream goal.

I would like to also invite you to like my profile on Facebook and Instagram. If you want to ask some questions join our group on Facebook or just go to the contact page.

The Polish version of this article is available on my polish blog codementor.pl.

About author

Hi,
my name is Michał. I’m software engineer. I like sharing my knowledge and ideas to help other people who struggle with technologies and design of todays IT systems or just want to learn something new.
If you want to be up to date leave your email below or leave invitation on LinkedIn, XING or Twitter.

Add your email to be up to date with content that I publish

Categories: Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *