Non-Programming Skills Every Programmer Should Have

On October 19, 2012

I have read plenty of articles where experienced programmers talk about skills and qualities that every good programmer should have. Usually, they suggest some tips and books that are strictly related to programming.

But I think there are also some non-programming skills and qualities that a good programmer should have. These skills won't necessarily improve your programming, but they will help you to become an all-rounder programmer(if such a term does exist!)

For each skill, I've recommended a book that I found to be most useful. It was tough to select only one book as I've read several books in each category.

So what are these skills and qualities that you need to have?

Let's start with the most basic one.

Social Skills
This is probably the most basic skill that everyone knows they should have, and that's why it's highly ignored. I can tell this from my own experience. Whether in college or office, being social always works in your favor.

Many times, we ignore small things like saying a simple 'Hi' to a coworker or greeting them with a smile. I had this problem during my school days, and also for some part of college life. If you just start greeting a coworker, you'll see they too start doing the same for you and it will become easier for you to talk to them and discuss any ideas or problems with them. 

Sometimes we don't interact with others because we feel shy or too much concerned about what others think of us. I can't tell you how many hours of my life I have wasted thinking about what others think of me. The truth is no one cares about you as much as you think they do.

It isn't hard to be accepted among your peers. All it takes is just to be yourself and being friendly with others. It's that simple.

You might ask, why minding your own business can create a problem for you? The problem is, others can misinterpret your behavior and attitude. Sometimes, people mistake an introvert for an arrogant person.

I am not saying to go out of your way to please someone, even if you don't mean it.  I only say that you give a little smile, say 'Hi' to your colleagues and just try to be a friend. Still better, help someone with a problem, guide them and be genuinely interested in their lives. It's not that difficult.

When you are in touch with others, you will be more aware about things going around you.

Recommended book: How To Win Friends and Influence People by Dale Carnegie. This is one of the best books that I've read on improving your social skills. All the advice in this book is still relevant today.

Designing Skills
Basically, designing means how your software looks and works. The purpose of a designer is to design a software that's better than what already exists. A designer makes sure that a software is easy to use, transitions smoothly from one screen to another, and the user has no confusion in achieving his goals with the software.

In my earlier posts, I have mentioned about the importance of design in creating great software. It can be easy, or difficult, to think like a designer, based on how you are used to thinking while writing programs.

I started learning programming in 2002, when I was about 18 years old. But it's only been an year, since I came to understand the importance of design. If I had spent some time in college learning to design, I would be designing better apps than I do now. I hope you don't make the same mistake.

A programmer's aim shouldn't be to simply write good programs, rather it should be to develop really great products. Even the basic knowledge of designing can help a long way in accomplishing that.

Recommended book : The Design of Everyday Things by Donald Norman. This is the best book on design I have ever read. If you know nothing about design, then this is the first book you should read, as it will make you understand what design really means.

Business Skills
Creating software is a business. Senior managers and team leaders expect you to behave in a certain way when dealing with clients and partners. You need proper email etiquettes, dressing sense, and need to act with responsibility when dealing with clients. 

Also, it's good to have some management and leadership skills. You should be aware of the latest trends and activities in your area of specialization.

I think it's a good idea to consider yourself as a brand that stands for something. It's not enough to say you are a good programmer or great with a particular technology. When applying for a new job, show how you can increase the value of the company.

If, in addition to being a good programmer, you can also get some of these skills, it would help you become a better negotiator and advance further in your career.

Recommended book : What They Don't Teach You at Harvard Business School by Mark McCormack.

Startup Skills
Few years back, I would have never considered working for a startup or even making something on my own. I thought it was better, and easier to get into big companies and get a good pay package and that's about it.

But, after about a year of learning things on my own and trying to build something independently, I can't tell you how great it feels when you work for yourself. You are free to make that software or game that you always wanted to, but didn't have time or resources.

Today, I would highly recommend any young graduate to consider working for a startup, as his first job. Though it's not exactly like working independently, still, you are much closer to making things that you believe in, which is simply not possible in big organizations.

The experience that you get and the things that you learn will be much more valuable, than that extra pay you get by working for some big company. Also, if you ever plan to create your own product, you will know the proper way to start and finish building it.

Recommended book : Made in Japan by Akio Morita.
Perhaps, the best book on startup and management that I have ever read. The reason this book stands out is Mr.Akio Morita(co-founder of Sony) shares his experience on creating a business with value and integrity that also supports innovation. 

I have read many management books but most of them focus on the American style of management. This book explains the Japanese style of management which is completely different from the American style. It makes you think and challenge your basics on managing a company. Simply superb.

You should also check essays by Paul Graham and Hacker News to get some invaluable resources and tips on startups.

Creative Skills/Drawing
It's a bit difficult to explain this exactly. But, I think being creative helps you a lot, in coming up with new solutions, or looking at problems through different angles.

You can be creative in any field, and the best thing is, this quality stays with you when you try to solve tough programming problems. Recently, I started learning drawing(on my own) and think it's a good break from programming.

You can choose your own creative pursuit. It can be drawing, playing guitar, writing, or simply anything that brings out the creative person inside you.

Recommended book : Keys to drawing by Bert Dodson.

I am still not sure whether I should have included this one or not. The only reason I am including this is because I have personally benefited a lot from this single quality more than any other skills/qualities I have mentioned before.

For those who don't care about meditation, please note that it has got nothing to do with any religion or culture. You can meditate even without being religious.

It’s very easy to get frustrated when you sit in front of your computer for most part of your day. I know how irritating it is when you are deeply involved in doing something, and someone suddenly pops up and starts talking about trivial stuff.

This is where you will see the difference that it makes, when you become a more spiritual person. You can just start with meditation by focusing on your breathe for 10-15 minutes daily. I would love to talk more about this. But it's best if you learn it from the experts, who are a zillion times better than me at explaining it and also integrating it in their lives. 

Believe me, you will feel more calm, peace and satisfaction by being a spiritual person. You won't get irritated easily and almost never have stress again if you are able to practice this for a long time.

That also means, you will be able to focus properly in your work and handle office related stress in better way which will definitely help in becoming a better programmer.

Recommended book : Zen Mind, Beginners Mind by Shunryu Suzuki.
This is the toughest one to choose because, I have literally read at least a hundred books on this subject. Honestly, I only recommend this because I am currently reading it and found it really good.

You are limiting yourself in many ways if you only concentrate upon improving your programming skills. When you try to become good at these other skills, your quality of life as a programmer will improve and you will be able to make better applications with these new learned skills.

share this on : twitter | facebook | google+