I am interested to gain a better insight about the possible reasons of personal inefficiency as programmers (and only in programming) due to – simply - our own errors (because we are humans – well, almost all of us).
I am not interested in how much we are productive or in how many adjustements the customer asks for when the work is done, but where and how each of us spend that part of its time in tasks that are unproductive and there is no one to blame except ourselves. Excluding ego - feeding and / or self – gratification, what I am trying to get (for all of us) is: what are the common issues eating our time; insight on reasons for that issues; identify simple way for us, personally (not delegating actions to other or our organizations), to correct our own problems.
Please, do not think in academic terms but aim at the opportunity to compare our daily experiences and understand what are and how we try to fix our personal deficiencies.
If you are interested to respond to this post, please:
- integrate the list if you see something important (or obvious) missing;
- highlight or name honestly your first issue tellng the way you try to address and solve your issue acting on yourself and yourself only in a sort of "continuous quality improving"
My criteria for accepting the answer is: choose the best solution (feasibility and utility) to fix one (or more) of the problems of the list. Of course, selecting an error is not a vote on our skills: maybe we are hyper professional programmers and we lose ten minutes only every year or we are terribly inefficient, losing a couple of days a week: reasons for inefficiency could be really the same - but in a different scale.
A possible list:
- Plain error in the names (variables, functions).
- Inability to see the obvious in your code. Misreading. Lack of concentration.
- Trying to use a technology you have not mastered.
- Errors with data types.
- Time required to understand your previous code or your documentation.
- Trying to do something more than requested because you enjoy it
- Using solutions more complicated than required because you enjoy it.
- Plain logical errors.
- Errors due to your fault in communications.
My first personal issue: "Trying to use a technology you do not master." I have to use daily several technologies and I often need to spend significant time correcting code because my assumptions were plainly wrong. Reasons for this: production needs put high pressure and make difficult to find the time to learn.
I try to address this reading technical books - as many as I can - even if this actually consumes a lot of time.