Environmental Evolution

I guess that's really redundant. It's because of the environment that we evolve, but it seemed especially true when the environment itself is evolving due to the changes that are happening. Very cyclical. Interesting.

This afternoon Rock Star programmer was asking some totally left-field questions, and I answered them because I knew the answers and I didn't want to appear to be insensitive and not answer him. Then other conversations sprang up, and in the end, it came back to the idea that Rock Star thinks that there are some broken things that need fixing. Now I'm not one to stand in the way of solid improvement, but if things are working - even just mostly working, then there just might be a reason that they are being handled the way they are. For instance, it could be silly, but the way things are being done may be a little broken due to audit or compliance rules. Nothing we can do about that, but if you don't know there's a reason for a certain action or process, then it could appear to be at least inefficient, and in that case, old Rock Star sees inefficiency as a reason to act.

Again, I have to admire his heart. It's in a decent place, he's trying to fix things that, for all he knows, people have been complaining about for months. Problem is, Rock Star doesn't bother to actually find out if there's a reason, or if people are really bothered. He sees the inefficiency and treats it as if it were horribly broken, and wants to attack the problem.

This, understandably, puts people off. For instance, if you have a way to move a gallon, and once a week you need to move two gallons, it's annoying that at that time you have to make two trips, but it's not as if you can't move any water - just not enough to make it in some trips, some of the time. There's inefficient and then there's broken. It's important to understand the difference.

Unfortunately, when we try to explain this to Rock Star he counters with the classic argument: ...why are you all trying to stop me from doing my job? I just want to improve things. Indeed. How can one possibly know what needs improving until one understands the reasons for the current process or problem? It may very well be as efficient as possible - given real-world limitations of money and time. Again, I'm not against improvement, but trying to fight for a 1% improvement in something that's basically working and leaving some other things totally undone is just not a good way to strike a balance.

And like it or not, business is about trade-offs and balance. You can't spend a man-year on automating something like a letter opener. It's about as efficient as it gets. You just have to accept that you have to manually open letters you get in a day. Now if we received millions of pieces of mail, that'd be a reason to improve it, but what we get? It's just not worth it.

Understanding that there are priorities, and always will need to be priorities, is important to being a good developer. You have to understand how much to do, when, and what the payoff is.