I’m trying to assemble a list of sins for software developers. Ideally 7, since, well, this is the normal number of sins one would expect.
I’ve come up with the list below. It is by no means definitive, and hopefully I can get enough feedback to improve it greatly.
- I don’t say that all software developers exercise all the time all these sins. Just that most software developers are guilty of at least some of them at least sometime 🙂
A few yeas back, I was guilty as charged on all 7 sins. I still find myself guilty many times of at least 3.
Anyway, here it is:
We, software developers, suffer from the following 7 sins:
1.1. We ship with bugs
- We are not dependable
- We (think that we) are perfect and have nothing more to learn
We don’t learn (or forget) our history
We don’t value our experienced peers
We develop a high tolerance to pain
We don’t manage time effectively
We don’t take enough care of personal health
p>Anything to add, remove, fight for or against? Please let me know in the comments.
Thumbs up to all your rules up there, here are my 2 cents: We have a tendency to reinvent the wheel;
I don’t think “lack of dependability” can be blamed on programmers. Every single new piece of software is an experiment by definition, and experiments can fail — it’s in their nature. As for bugs, even if you ignore the perpetual issue of customer and/or management pressure, there are problems that simply can’t be caught until production. Even unit tests are written from an insider point of view, and as such probably suffer from blind spots.
Same thing about managing time effectively. How efficient do you want to be? Assuming you have any say in how you manage your time in the first place — see above.
The “tolerance to pain” bit is spot-on, though, and I think it deserves extended discussion.
I agree with the part of every new piece of software being an experiment. But, since we know that, we should be very clear on that point, shouldn’t we? Why would we promise something we are not sure we can do?
As for shipping with bugs, I agree that we cannot catch all problems until production. I think however that those are very intricate bugs.
I don’t make promises, Alex. I try to make it clear to all customers that nothing is guaranteed, by the very nature of this noble craft of ours. But I’m yet to meet a customer who understands this, and they’ll twist my words around until they can construe them as a promise of sorts.
Maybe that’s understandable up to a point, since they are paying money. But money can’t change the nature of reality.
I got another one on twitter from @vadimcomanescu :
“After a while we see abstractions in everything we do, even when is not necessary.”
I think another sin is that we don’t take pride on our work. If we don’t value our work, how can we ask others to appreciate it ?