Making Good Software

A blog by Alberto G (Alberto Gutierrez)

Written by Alberto Gutierrez

July 7th, 2009 at 9:43 am

5 top non-technical mistakes made by programmers

with 49 comments

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.
homer-simpson-doh

  • 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.

49 Responses to '5 top non-technical mistakes made by programmers'

Subscribe to comments with RSS or TrackBack to '5 top non-technical mistakes made by programmers'.

  1. [...] 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 [...]

  2. [...] 5 top non-technical mistakes made by programmers at Making good softwaremakinggoodsoftware.com [...]

  3. Your link to “gold plating” should be: http://en.wikipedia.org/wiki/Gold_plating_(analogy)

    Dan

    8 Jul 09 at 10:30 am

  4. Things are focused.

    pablo

    8 Jul 09 at 11:44 am

  5. 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

  6. [...] This post was Twitted by nes49 [...]

  7. [...] I was reading a post on “Making Good Software” which lists the top 5 non-technical mistakes programmers make. Their top 5 list [...]

  8. 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

  9. Good article…

    Nadeeth

    8 Jul 09 at 8:32 pm

  10. Just wanted to say that your article is great :)

    I’m gonna tweet this !

    cx42net

    9 Jul 09 at 12:53 am

  11. This is very beautifull article.. I cud not agree wid u more

  12. 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

  13. wonderful for even non-geeks…and check out http://www.plainenglish.co.uk

    Mary Ellen

    9 Jul 09 at 11:16 am

  14. [...] 5 top non-technical mistakes made by programmers at Making good software (tags: programming development mistakes) « links for 2009-06-26 [...]

  15. [...] This post was Twitted by rmueller [...]

  16. Great article! Clear and concise!

    Luiz Faias Jr

    10 Jul 09 at 8:39 am

  17. 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

  18. 6. Assuming there is always a customer.

    Dominiek

    12 Jul 09 at 7:24 pm

  19. 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

  20. The irony of the spelling error in my last comment is not lost on me ;)

    Tim Fitzpatrick

    13 Jul 09 at 3:24 am

  21. [...] 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 [...]

  22. [...] gostei tanto deste artigo que resolvi traduzí-lo e publicá-lo [...]

  23. 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

  24. [...] sinal, um dos cinco grandes erros não técnicos, cometidos por programadores (original aqui) é: Esquecer do usuário. Lembre [...]

  25. [...] livre de Rafael Lima para um post de Alberto Gutierrez [...]

  26. [...] 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 [...]

  27. 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

  28. 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

  29. [...] 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 [...]

  30. 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

  31. humm shareholders is the better term…

    Anders

    7 Oct 09 at 5:26 am

  32. [...] com algumas questões que devem ser observadas por todo programador. (lista baseada no artigo de Alberto Gutierrez [...]

  33. [...] 在不斷吸取經驗的同時,我一直艱困地學習那些我從來沒被教導過的、但卻是對於成為一個好的開發人員來說最基本的理解觀念。以下是我希望我能在學校就學到的10件事情。 1. 我們永遠是錯的。 (We’re always wrong.) 開發人員有著非常大的自我意識,包含了一些其他的非技術性缺陷,這也是為什麼我們很難去發現我們做錯了什麼。我已經看過太多永無止盡的設計討論,開發人員們總是不斷發表自己的想法…。好了,猜猜看怎樣?我們全都錯了,我們的區別只在於我們犯錯的離譜程度。 [...]

  34. 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

  35. [...] with 33 comments X [...]

  36. 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

  37. [...] 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 [...]

  38. 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

  39. [...] 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 [...]

  40. [...] – 程序员   译文链接:http://www.jobbole.com/entry.php/977   原文:Alberto Gutierrez  翻译:敏捷翻译 – [...]

  41. [...] – 职场博客 – 程序员 译文链接:http://www.jobbole.com/entry.php/977 原文:Alberto Gutierrez 翻译:敏捷翻译 – [...]

  42. [...]   原文:Alberto Gutierrez  翻译:敏捷翻译 – 唐瑭 [...]

  43. [...]   原文:Alberto Gutierrez  翻译:敏捷翻译 – 唐瑭 [...]

  44. [...] 原文:Alberto Gutierrez  翻译:敏捷翻译 - 唐瑭 [...]

  45. [...] Not focusing on the customer in one the top 5 five non technical mistakes made by programmers. [...]

  46. 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

  47. [...] 原文:Alberto Gutierrez  翻译:敏捷翻译 – 唐瑭 [...]

Leave a Reply