Eric Gunnerson is creating a list of his Seven Deadly Sins of Programmers. Here’s my list:
- Lack of Testing – This is my biggest pet peeve. I absolutely pull my hair out over this one. One year I made it a goal at my office to mention “testing” at every single meeting I attended. You can ask my co-workers, if you like, but I did it. Drove them crazy. :) Even if you’re not doing TDD, you should still be unit testing, functional testing, acceptance testing, etc.
- Trusting External Data – If you haven’t verified it, it’s bad data. Of course, if you’re testing properly, you’ll find this one out quickly. :)
- Premature Optimization – We all want our code to be optimal, but putting optimization efforts in at design time is a waste of effort. You’ll likely only make the code more difficult to understand and maintain, and probably won’t even optimize the right things. You don’t know what your bottlenecks are until at least functional testing.
- Designing for anticipated features – As they say, “You aren’t gonna need it”, and “Do The Simplest Thing That Could Possibly Work”. Unless you’re designing some sort of class library or component that needs to be all things to all people, there’s no need to put it in. You’ll probably wrongly anticipate future requirements. You’ll make the code harder to maintain and test. And you’ll waste time now.
- Hacking – Hacking is just an excuse for not taking the to understand the code and fixing it the right way. It will almost always bite you in the a** later on.
- Refusal to learn and adapt to new ideas and technologies. – Well, that’s great that you know everything there is to know about VB 4 and functional programming. I’m sure you can program circles around me in a VB 4 coding contest. But maybe you should check out a couple of those “new” things everyone is talking about…something about “compiling your code” and “OOP”. Not sure why everyone keeps saying OOP all the time. They must be making a lot of mistakes. And what’s that “XP” thing? Isn’t that an OS? An extreme sport at the winter olympics?
- Bad variable/method/object names – I just love seeing a class called “ExternalData” with a method “GetData”. Huh? What kind of data am I getting? What’s the source (other than it being external)? Why do I need this “data”? What’s it for?
That’s off the top of my head. I think I could come up with a better list if I spent some more time to think on it.
Hey, Eric, what are the 7 Heavenly Virtues of Programmers?