Now that I have been in the software engineering game for about twelve years, I thought this would be the right time to list some bad developer habits. Some habits that may remind you of a few colleagues, and possibly yourself. It goes without saying that I have never exhibited any of them, personally.
Anticipating future requirements
Ah yes, the beauty of coming up with a software design that is ‘ready for the future’. “Implementing that one feature the client was talking about is going to be so easy thanks to my design!”. Guess what, you can’t predict what your client will want a month from now, let alone a year from now. The thing about the future is that it tends to pretends itself differently than you expected almost every time. And then you find yourself doing more refactoring than necessary because you need to remove parts of a system that are now dead weight. Plus, you made the initial implementation harder and more time-consuming then necessary. So just build what you know is needed now, and do that well. That will be difficult enough in most cases.
Being a push-over
How many times do I hear developers complaining about how management doesn’t give them any time to do the right thing. Well then make management listen to you. “But I don’t like to be involved with politics,” I hear you say. Well, wake up and smell the roses because politics is sure involving itself with you. Stand up for the quality of your codebase.
Believing the hype
A new year, a new buzzword. XML, SOA, RIA, cloud, there’s no end to them. Really, there is no need to run after these things all the time. In fact, if you have a memory that functions you will remember some buzzwords that by now are dead and buried. And how many of them are just about the pendulum of computing swinging (think fat server, thin client vs thin server vs fat client). Know your classics.
Yes, we’re geeks and we write software. It’s so easy to feel intellectually superior to those clueless marketing and management guys, isn’t it? And we’ll throw in some tech-lingo for good measure if they’re being annoying. Most of the times, non-technical people are quite good at getting their message across. Us developers however, struggle with explaining what we do to others. Now who’s being dumb here?
Ruby vs Java vs Python vs C# vs PHP vs Scala etc etc. So often the tone of conversations about languages and tools gets so heated. Come on guys it’s only programming. Can we please just stick to acknowledging the core strength of each language? That should help us making a calm and rational decision about what to use for a project, instead of flame baiting the other camp with yet another crappy benchmark.
Getting lost in a bubble of silence
How cool is it work on some issue, just program the day away, uninterrupted by thoughts of the context or weight of the problem at hand. Us developers just love to spend a lot of time this way. Some of us do get a nagging feeling “hmm maybe I shouldn’t be spending so much time on this detail,” then to ignore it and just continue hacking.
Yes you counted right, there’s seven bad habits here. I got on a roll.