Know your weaknesses

Written by Rasmus Rønn Nielsen, 2009-06-15

Most jobs have a special stereotypes affiliated with them. When we think of say, an accountant, an athlete, a realtor, a pizzeria owner, or a teacher, we automatically get some ideas of how that person would be like. A person who chooses a specific profession is likely to apply to the same mental profile, as another person who also happens to choose the same profession. This mental profile contains good and bad characteristics.

Programmers are definitely no exception. In this post I will go through some of the bad characteristics of the typical programmer stereotype. By being aware of our weaknesses, we stand a better chance of reducing them. If you are not a programmer, I encourage to read on anyway. The basic principles apply to most professions.

The superman syndrome

Programmers want to be seen as the superman programmer who perfectly solves every problem thrown at him. In this process, we tend to disregard time expenditure completely, which is not in the employers interests. A good programmer spends 10 work days fulfilling a set of requirements 100%, while the great programmer suggests his manager an alternative solution that fulfills 95% of the requirements and can be implemented in 10 hours - he/she realizes that almost perfect is often preferred if the development time is dramatically reduced. David Heinimeier Hansson did a great talk on this subject at Railsconf 09.

Rigid values

Another very bad programmer habit, is to have rigid values. We believe in something so much, that we refuse to reflect on these values. The classic example are the Windows users who hates Linux and vice versa. If you think of it, this a major weakness! Many of us love our favorite language so much, that we risk being run over by a new fancy much better language because we do not even care to look at it (PHP'ers - that's you guys!). Don't take that risk. Be open to new technologies. Read about technologies you have never imaged you'd work with, and widen your professional spectrum. You might learn something!

I myself are reading up on Python, C#/.NET, PostgreSQL, and Google Web Kit at the moment, even though I cannot see myself using any of them in my daily work.

Continuous learning

Being a great learner is vital to become a being a great programmer. The tools and paradigms of our craftsmanship is evolving faster than in any other industry. Unfortunately many programmers tend to convince themselves that just because they see themselves as a great [insert favorite language here] programmer they don't want to bother learning new stuff. Doing this, is cheating the world from what a great programmer you could have become! If you do not understand the immense value of continuous education you'll become mediocre. As Robin Sharma puts it: You are either learning or decaying.

Understanding your business

As any other employee a programmer's ultimate task is to either generate money or to cut expenses for their company. Therefore, it is vital to understand the business principles in the company by whom you are employed. Most of us make the sin of saying "I'm just a programmer, what do I care about business?" If you don't understand how your work saves/generates money, how can you do your job (which is to generate/save money) optimally? Invest some time in understanding your company's business model!

Get into shape

The traditional image of a programmer is a nerdy guy with glasses sitting in the company's basement filled with cola and empty pizza boxes. Even though the reality is far from this, programmers do not very often value the value of being in shape. Being in great physical shape enables you to perform 100% mentally. In addition, staying fit will even make you more positive and happier. Start by scheduling a few short jogs on your next holy hour. You might be surprised how much extra mental energy you'll suddenly have.

Clarity breeds action - action yields results

The first step towards elevating our professional life, is becoming aware which specific areas of our lives that need improvement. I hope this article has somehow inspired you to see these more clearly. Give yourself five minutes of absolute peace to think about which areas would yield the best immediate results.

The rest is simple - set goals (review these regularly), and act upon them. When will your journey towards greatness start?

If you enjoyed this article and want more, I'd recommend The Passionate Programmer by Chad Fowler.