5 top non-technical mistakes made by programmers
There are two sets of skills that a good software developer needs to cultivate: technical skills, and non technical skills. Unfortunately some developers focus only on the technical part. When this happens they will develop some bad habits from which the following are the 5 top non-technical mistakes:
1.- Lack of discipline.
“Discipline is the bridge between goals and accomplishment.” Jim Rohn.
I’ve always thought that discipline is one of the most valuable skills, not only for being a software developer, but to be successful at any other area in life It is also true that usually it is very hard to find people who are both brilliant and disciplined.
Steve Pavlina highlight the 5 pillars of self discipline… “[...]Acceptance, Willpower, Hard Work, Industry, and Persistence. If you take the first letter of each word, you get the acronym “A WHIP” — a convenient way to remember them, since many people associate self-discipline with whipping themselves into shape.[...]” I highly recommend to read his series of articles in self discipline.
As I explained in my previous article: 5 tips for creating good code every day, my personal approach is to follow these steps every day.

- Have your own to do list for the day
- Do one thing at a time
- Do it right
- Don’t finish something until it’s completely done
- Better late than sorry BUT better sorry than never.
2.- Big egos.
My experience says that big egos and programmers go hand by hand, the main problem of having a big ego is that it actually prevents you from realizing that you have a big ego, a few indicators that may help you to know if your ego is way too big are:
- You consider yourself the best programmer.
- You block conversations.
- You ask for code reviews not to get criticism but to show how good your code is.
There are many good articles about programmers and their ego in the Internet, I would recommend two of them, this article from Mike Bernat: Egoless programmin and from stackoverflow.com this discussion thread.
3.- Being a bad communicator.
“If I am to speak ten minutes, I need a week for preparation; if fifteen minutes, three days; if half an hour, two days; if an hour, I am ready now“. Woodrow Wilson
As human beings communication is our main activity. Being a good communicator is hard but essential in our profession, we are continuously exchanging opinions about designs, code, having peer reviews, writing documentation, trying to convince someone else that our design is better, writing code…
Good communicators are those people that when they are explaining something, their explanation is:
- Focus. They just talk about what is need to be understand.
- Clear. Easy to understand.
- Concise. Nothing to be added, nothing to be taken.
For being a better communicator, I have two advices:
- If you think you are not a good communicator, prepare what you are going to say until is focus, clear and concise.
- If engaged in a conversation, first listen, then think and then talk.
There are a few more tips for improving communication when having a meeting in this previous article I published “7 best practices for taking decisions in the development team“.
4.- Forgetting about the customer.
“If we don’t take care of the customer… somebody else will.”
You are there just for one reason- your customer. It’s easy sometimes to forget this point. I have been in teams where focus was on technologies and platforms rather than in having a happy customer. We would expend months creating a framework that didn’t deliver any value to the customer, and by the time we were about to start using it, we would discover that it won’t fit our user needs.
5.- Not prioritizing the work properly.
Developers who are always gold plating, researching new and more interesting technologies, over engineering solutions or just doing whatever they find more cool are impediments to the project, I’m not saying that is not normal to engage into lateral activities from time to time, we all need distractions, but if you find yourself usually in the previous situations you may reconsider the way you prioritize your work, again I will recommend you to read 5 tips for creating good code every day.
Related posts:
![[Google]]( http://www.makinggoodsoftware.com/wp-content/plugins/easy-adsenser/google-light.gif)
[...] Top 5 errores no tecnicos cometidos por programadores [ENG]www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mi… por elpetecan hace pocos segundos [...]
Top 5 errores no tecnicos cometidos por programadores [ENG]
8 Jul 09 at 7:44 am
[...] 5 top non-technical mistakes made by programmers at Making good softwaremakinggoodsoftware.com [...]
5 top non-technical mistakes made by programmers at Making good software « Netcrema - creme de la social news via digg + delicious + stumpleupon + reddit
8 Jul 09 at 7:50 am
[...] http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/ [...]
5 top non-technical mistakes made by programmers | OmniSpear Web Solutions
8 Jul 09 at 8:14 am
Your link to “gold plating” should be: http://en.wikipedia.org/wiki/Gold_plating_(analogy)
Dan
8 Jul 09 at 10:30 am
Things are focused.
pablo
8 Jul 09 at 11:44 am
Great points. #4 and #5 are symptoms of not understanding the goals, values, and needs of the business. Managers / leaders can help by talking with developers about what is (and is not) important to the business (and their jobs by extension).
Here is some related advice for developers at http://devshaped.com/2009/04/remaining-valuable-to-employers/. The interviewees include some well respected leaders from the Microsoft technology community.
Derek Hatchard
8 Jul 09 at 12:33 pm
[...] This post was Twitted by nes49 [...]
Twitted by nes49
8 Jul 09 at 12:43 pm
[...] I was reading a post on “Making Good Software” which lists the top 5 non-technical mistakes programmers make. Their top 5 list [...]
Rob Searles » Non-technical mistakes made by programmers: Number 6
8 Jul 09 at 1:11 pm
Good article . My tuppence worth , in brief :-
#1 & #2 professional approach . Concentrating on the job . Thinking for oneself . Avoiding tribalism – “us and them” – and collectivism – “the individual doesn’t exist as an entity” . Community oriented – keeping the best interests of the company etc. in mind .
#3 concise , precise and pertinent . Knowing people . Knowing life . Looking at things from other people’s points of view .
#5 keeping clear view of the business side – the basic business 101 . Maximising capital productivity . Developing the code as an asset , marketing it as a comodity . Optimising costs – minimising downstream costs .
#6 good thinking skills . Understanding truths – theory of knowledge – set theory . Being objective . Having perspective – standing back – seeing the wood from the trees . Design philosophy . Designing by rules – not exceptions . Componentising .
#7 being moral . Being ethical . Being civilised .
Kim
8 Jul 09 at 1:17 pm
Good article…
Nadeeth
8 Jul 09 at 8:32 pm
Just wanted to say that your article is great
I’m gonna tweet this !
cx42net
9 Jul 09 at 12:53 am
This is very beautifull article.. I cud not agree wid u more
Shahid Riaz Bhatti
9 Jul 09 at 4:02 am
Just one more note to add to part 3 “Being a bad communicator”: the notions of clear and easy to understand assume using proper language to describe your thoughts. Eric Raymond makes a good point on this in his article http://www.catb.org/~esr/faqs/hacker-howto.html#skills4.
adnis
9 Jul 09 at 7:08 am
wonderful for even non-geeks…and check out http://www.plainenglish.co.uk
Mary Ellen
9 Jul 09 at 11:16 am
[...] 5 top non-technical mistakes made by programmers at Making good software (tags: programming development mistakes) « links for 2009-06-26 [...]
links for 2009-07-10 « Stand on the shoulders of giants
10 Jul 09 at 12:02 am
[...] This post was Twitted by rmueller [...]
Twitted by rmueller
10 Jul 09 at 7:48 am
Great article! Clear and concise!
Luiz Faias Jr
10 Jul 09 at 8:39 am
Here is a quote that I keep taped to my workstation:
Whatever the tasks, do them slowly with ease, In mindfulness. Don’t do any tasks in order to get them over with. Resolve to do each job in a relaxed way, with all your attention.
—Thich Nhat Hanh
Lee Doolan
10 Jul 09 at 9:55 pm
6. Assuming there is always a customer.
Dominiek
12 Jul 09 at 7:24 pm
One extra point I would like to make about communication: Don’t forget the written form too!
Too many times I spend hours editing developer documents that should be showable to our customers (I’m a Solutions Architect) because the authors have not spent any time learning how to use a word processor application like MS Word.
Try it yourself: Open someone else’s document and switch on the option to view spacing, symbols, formatting marks, etc. It is obvious that many developers only use text editors to write their code.
Spend a few days learnign the basics of Word (or similar programs) and they will serve you well for the rest of your life. IDEs come and go, word processing skills will last forever!
Apply a language/grammar/spell check filter in the language of the customer; replace multiple spaces with tabs or ruler adjustments; remove section headers; learn how to use page throws instead of multiple carriage returns; learn how to use styles to format your headings, not manual changes to font size, bold and underline, etc. Do these things and documentation will be quick and easy to maintain, but most of all, easy to understand by the reader. That is the point of writing it, after all.
Tim Fitzpatrick
13 Jul 09 at 3:22 am
The irony of the spelling error in my last comment is not lost on me
Tim Fitzpatrick
13 Jul 09 at 3:24 am
[...] recent article on the top five causes of poor software quality and top 5 non-technical mistakes inspired me to also provide a top five on software quality bugs. Here is my top 5 list of bugs [...]
Top 5 C/C++ quality bugs | Kloctalk
14 Jul 09 at 8:15 am
[...] gostei tanto deste artigo que resolvi traduzí-lo e publicá-lo [...]
Rafael Lima » Os top cinco erros não técnicos cometidos por desenvolvedores
19 Jul 09 at 9:50 am
Hi Alberto,
I liked so much your post that I translated to Brazilian Portuguese.
See at: http://rafael.adm.br/p/os-top-cinco-erros-nao-tecnicos-cometidos-por-desenvolvedores/
Thanks a lot
Rafael Lima
19 Jul 09 at 9:52 am
[...] sinal, um dos cinco grandes erros não técnicos, cometidos por programadores (original aqui) é: Esquecer do usuário. Lembre [...]
1up4Developers » Blog Archive » Cuidado com Casos de Uso
21 Jul 09 at 2:57 am
[...] livre de Rafael Lima para um post de Alberto Gutierrez [...]
Os top cinco erros não técnicos cometidos por desenvolvedores | Pacote201.com.br
30 Jul 09 at 9:58 am
[...] I was going through the posts of the past month or so, since the job change, and ran across this article on the “Making Good Software” blog about things that keep someone from being a good [...]
Seeping Matter » Actions Speak Louder Than Code
7 Aug 09 at 5:21 pm
This article is poorly written. For example,
“Good communicators are those people that when they are explaining something, their explanation is:”
Here is another example of an awkward sentence,
“If you think you are not a good communicator, prepare what you are going to say until is focus, clear and concise.”
In the second example, the pronoun “it” is missing in between “until” and “is”.
chris
20 Sep 09 at 1:18 pm
Sorry for my poor writing skills, I hope you all will take into consideration that English is not my native language…
Alberto Gutierrez
20 Sep 09 at 2:23 pm
[...] http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/ : 5 erreurs non techniques que les dévs font souvent [...]
Dev Blog AF83 » Blog Archive » Veille technologique : Mobiles, Éditeurs de texte, Navigateurs, HTML5, Base de données, Méthodologies
24 Sep 09 at 7:45 am
I would like to add to the #4 point,
4b) stockholders. It is (unfortunately) those guys that decide what we do, not the customers.
Anders
7 Oct 09 at 5:22 am
humm shareholders is the better term…
Anders
7 Oct 09 at 5:26 am
[...] com algumas questões que devem ser observadas por todo programador. (lista baseada no artigo de Alberto Gutierrez [...]
AgileZ » Você é um bom programador?
21 Mar 10 at 3:45 pm
[...] 在不斷吸取經驗的同時,我一直艱困地學習那些我從來沒被教導過的、但卻是對於成為一個好的開發人員來說最基本的理解觀念。以下是我希望我能在學校就學到的10件事情。 1. 我們永遠是錯的。 (We’re always wrong.) 開發人員有著非常大的自我意識,包含了一些其他的非技術性缺陷,這也是為什麼我們很難去發現我們做錯了什麼。我已經看過太多永無止盡的設計討論,開發人員們總是不斷發表自己的想法…。好了,猜猜看怎樣?我們全都錯了,我們的區別只在於我們犯錯的離譜程度。 [...]
等待雨天 » 大學沒教的 10 + 1 件關於程式設計的事
30 May 10 at 7:09 am
This is my second time i come here. I found a lot of interesting stuff in your pages especially it’s discussion. From the tons of comments on your articles, I assume I am not the only one having all the enjoyment here! Keep up the good work.
Angela
1 Jun 10 at 2:38 pm
[...] Clipped from: http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/ [...]
5 top non-technical mistakes made by programmers | Making Good Software | the leading lady
17 Jun 10 at 6:45 am
[...] with 33 comments X [...]
5 top non-technical mistakes made by programmers | Making Good Software | the leading lady
17 Jun 10 at 6:46 am
hey
6. not thinking independently, not creating and of course what you mentioned …- “the shining objects syndrome”
thanks mate
Chris
Chris Fisher
10 Aug 10 at 8:47 am
[...] I was going through the posts of the past month or so, since the job change, and ran across this article on the "Making Good Software" blog about things that keep someone from being a good software [...]
Actions Speak Louder Than Code | c o d i n g f r o g s
14 Mar 11 at 4:06 pm
the most i like part about egos
really good observation. however, even some developers have a big egos, sometimes they are also really good programmers, but when they read such articles – they feel ashamed
kovpack
24 May 11 at 10:41 am
[...] to fix it: Leave your ego at home. Big egos are one of the biggest non technical issues for any programmer. Keep in mind some basic considerations when making [...]
Top 7 programmers bad habits » OnnoRokom
11 Jun 11 at 1:16 am
[...] – 程序员 译文链接:http://www.jobbole.com/entry.php/977 原文:Alberto Gutierrez 翻译:敏捷翻译 – [...]
程序员常犯的5个非技术性错误 | 五花八门
30 Jun 11 at 4:28 am
[...] – 职场博客 – 程序员 译文链接:http://www.jobbole.com/entry.php/977 原文:Alberto Gutierrez 翻译:敏捷翻译 – [...]
云和山的彼端 » zz程序员常犯的5个非技术性错误
30 Jun 11 at 6:39 am
[...] 原文:Alberto Gutierrez 翻译:敏捷翻译 – 唐瑭 [...]
程序员常犯的5个非技术性错误 — 见贤思齐
3 Jul 11 at 8:04 pm
[...] 原文:Alberto Gutierrez 翻译:敏捷翻译 – 唐瑭 [...]
程序员常犯的5个非技术性错误
24 Jul 11 at 6:57 pm
[...] 原文:Alberto Gutierrez 翻译:敏捷翻译 - 唐瑭 [...]
程序员常犯的5个非技术性错误 – shouso.net
14 Aug 11 at 3:18 am
[...] Not focusing on the customer in one the top 5 five non technical mistakes made by programmers. [...]
My ten development principles « Exploring the World
14 Aug 11 at 8:59 pm
I like the third point “3.- Being a bad communicator.” most, in fact, if I am to do a showcase for my software, I’ll spend one or two days preparing how to show it well.
Jemy
30 Aug 11 at 6:49 pm
[...] 原文:Alberto Gutierrez 翻译:敏捷翻译 – 唐瑭 [...]
程序员常犯的5个非技术性错误 - 博客 - 伯乐在线
2 Nov 11 at 3:40 am