When I first started my journey to become a professional programmer almost 2 years ago I focused almost entirely on the “learning how to code” aspect. While this is very important, and something I would recommend to beginners, there are other aspects to becoming a great programmer that are just as, if not more, important than actually knowing how to write code. A lot of these things apply to all manners of professions but really become evident in the programming industry.
Arguably this is the most critical aspect of being a professional programmer, even more critical than the code writing aspect. Whether it is your client, your boss or other programmers there is an essential need to be able to communicate. This doesn’t just mean being able to speak eloquently or write beautiful prose. You need to be able to listen and determine what the other person is trying to tell you…even if they could work on their communication skills.
It is easy to learn and practice writing code, it is another beast altogether to learn how to read code. Chances are you’ll spend as much, or more, time reading code as you do writing it. You need to be able to look at a body of source code and determine what it is doing, and hopefully why it is doing it. Some of that is gonna be based on the quality of the code that you’re reading. Do the variables and functions have proper names? Are blocks of code kept short and sweet? Does the documentation do a good job of providing the details needed without interfering with the actual code reading process? But, even if the code doesn’t have these things you still need to have some capability to determine what poorly written code is doing.
defend your position
This goes hand in hand with proper communication. You need to be able to defend why you did something that you did, perhaps to your client, your boss or your teammates. If you can’t defend your position on why you did something the way you did then you’ll never get any of your cool ideas or concepts integrated into projects. More importantly if you can’t defend your position then your idea probably sucks anyway and if it doesn’t suck other people will think that it does.
a thick skin
You need to have a thick skin in any career field but it becomes far more of a necessity in the programming industry. Your work will undoubtedly be criticized. Sometimes that criticism is warranted and the person is just trying to help you grow. Other times the criticism is going way overboard and maybe the other person had a bad day or is just being a prick. Either way, constructive criticism or not, you need to know how to take it. Either absorb the knowledge they are trying to throw your way or just let it roll off your back. If you take criticism personally you will fail in this industry and likely grow to hate programming in general.
wrapping it up
Obviously writing good code is a big part of being a professional programmer. But, don’t fall into the trap of thinking this is the only thing that matters. The software development industry is hugely complex and you aren’t going to be only working with computers. You’ll work with human beings too.