by karntrehan

These are the key non-coding skills all programmers should have

by rawpixel on Unsplash

As programmers, we do a lot more everyday besides writing amazing code.

Yes, coding is what the majority of us love to do the most and what people associate us with the most. But there are various other skills involved in being a great programmer.

Below are some of these skills I think we sometimes fail to acknowledge. They are worth nurturing further to become a better programmer and also a better person.

Reading

We read daily.

Be it a fellow programmer's code, (sometimes bamboozling) documentations, blogs, forums or Jon Skeet facts on StackOverflow, we read constantly.

The more we read, the more we know about a technology, a framework, or others’ views and experiences concerning said technologies and frameworks.

The day we stop reading, we risk becoming obsolete. That is how fast the field of technology moves. The best way to do something today may not be the best tomorrow.

Hence, the more we read, the better we become.

It is really important for me to read others’ code and have an opinion on that in order to understand what good code looks like. That is how I can write better code or suggest improvements to the code that I inherit.
- Burhanuddin Rashid

Writing

We write a lot of non-code content in our projects. This includes beautiful documentation, comments, and commit messages. Some of us enjoy spending our time writing blogs.

Having good writing skills in our documentation and comments makes our code easier to understand, debug, and maintain. A good commit message can help save hours in the future when you want to identify what exactly changed in your code base.

Writing non-code content does not come naturally to all of us. Feedback and motivation from peers helps a lot.

We ask for feedback, we work on it, and we improve. And if we don’t always ask, just go ahead and give us the feedback compassionately anyways, we would value it the most.

I think when you write blogs, you want it to be perfect because a lot of audience is going read that, so you learn more and more. Also second thing is I always believe writing things down helps you never forget them.
- Manjula Dube

Listening

We listen and translate constantly. We constantly convert non-tech feature requirements into tech solutions.

When we hear “Add a button to do X”, we think of the various implications that change could have, the code involved, the things it could break as well as the user experience.

We care about our users as much as everyone else on the team.

A supposedly simple requirement could get us thinking for hours. We listen and ask questions. Debate a feature’s value. We do not want to miss out on any details, as fixing missed requirements later becomes very frustrating and expensive for us.

Listening is a very basic and one of the most important skills any Developer should have. The easiest way to understand the requirement is by “empathizing”. Put yourself in the shoes of the client or the end-users and look at things from their perspective. Ask yourself questions like:
• How does it solve the problem?
• Is it intuitive enough?
- Sanket Sahu

Communicating

In my opinion, ease of communication defines the success of an organization. How easily different stakeholders on a team can communicate to one another dictates the chances of us reaching our goals successfully.

We have ideas. We like to share them. The easier the communication channels are, the easier it is to share ideas, know what is expected of us, and contribute to the commonly aligned goal.

If communication is difficult around us, it becomes a red-flag and makes things difficult for a lot of us.

As a developer, it is important to communicate compassionately with your design team. Once you receive designs, and you have feedback, ask the designers “What was the thought behind this?”, “Is this what the user wants?” Asking the why rather than saying “.. these could be better”, helps establish effective communication and ensures your feedback is well-received.
- Faiz Malkani

Prioritizing

We are constantly giving tasks priority scores.

Should I work on this feature or that? What would help me? What would help my team? What would help the users? Would someone else write this better? Should I try to write a perfect solution from the get-go or write something that works now and then refactor it to make it better before I ship?

Prioritizing tasks well can help us deliver better and reduce wasted efforts on redundant tasks.

Priority is important as there is always room for improvement in development and there are many features to add and many issues to solve. If we do not prioritize, the project will be never ending. I mostly prioritize things “time taken, impact, end result, effort, value to user, value to business”
- Amit Shekhar

Camaraderie

We are great team players.

Software usually involves a large number of people from different teams. Each release involves efforts from backend, frontend, API, designers, product managers and testers, among others. A bug in the backend system is not a backend error, but a team bug. We all take collective responsibility for it and help solve it.

The more we think and work as a team, more successful all of us are individually.

Within a team, team work helps in getting the work done at a faster pace as we are aware of strength and weaknesses of each member. Just like in a game of cricket, knowing the strengths of your players helps identify which bowler should bowl to which batsman, enhances your chances to win the game.
- Nikhil Thakkar

Mentoring

Many of us are self-taught and are constantly learning.

We may not know the best way to do something from day one. Hence we look for mentors. Mentors help us identify mistakes early on, cultivate the right mindset and become more confident.

As our confidence grows, we start trying new things. We sometimes make mistakes, learn from them, and share our learning with the world. This is when we start being mentors to someone else.

Mentoring, in my opinion, is more like BitTorrent. You have pieces of the whole, no one person has everything, and you’re always sharing what you have with others who don’t, even if you have 1% of the file.
- Aniket Kadam

Community contributions

As we grow, we start understanding the extremely important role the community plays in our growth and start contributing back to the community openheartedly.

We start looking for local meetups, conferences and open source projects we can contribute to. We give away our most important talent for free, for the growth of the community. Be it through giving talks, attending talks, supporting speakers, organizing meetups, writing blogs, open sourcing stuff, improving existing open source stuff, etc we do our part in the community.

We are the community and play a vital role in its growth.

Did I miss a skill? Want to discuss any of the skills in more detail? Want to share a personal story related to one of these skills? Should this be a part of an education curriculum? Comment below or connect with me on Twitter!