My Love/Hate Relationship

I love automation. It does things for me, so I don't have to remember. And it takes care of tedious tasks. And it handles boring things so I can focus on what matters.

Until it breaks.

Then, I hate automation. How do you make sure your alarm clock will go off at exactly 6:00 am without waiting for the hour to roll around? Change the time? But then you're not sure it got changed back exactly right. Change the alarm? Same problem. So you can test, at most, once per day.

Can you tell I'm having automation issues today?

A Design Flaw is not a Bug

I realized the other night that no one else cares whether a problem is a bug or not.

Let me be clear, I'd seen evidence of this, and understood intellectually that they didn't get why it matters. The other night, I realized that it never will matter to them.

I'm a professional programmer. I deal in algorithms and data. I classify everything. Classifications are important in my world. The classification of a problem is important to me on a gut level, as well as having an important function in this case.

So, to all you non-programmers, listen closely. Programmers, remember this idea.

A bug is when the system does not work as it is intended. If there is a bug, we need to fix the code, so the program works as it is designed to. When the design is bad, it is not a bug. It is a design flaw. If we treat design flaws like bugs, you end up with a program that does the wrong thing perfectly. When the problem is not a bug, we have to re-design the program (or a portion thereof) or you don't get what you want.

Design flaws and bugs are fundamentally different, and we should treat them as such.

Rant: How to throw money at a problem

There are two ways to fix a problem of inefficiency.

The first, and simplest, is to beat it into the ground with money and hardware.

The second is to fix the inefficiency.

Right now, I'm having a lesson in why the first does not work. We wanted to speed up the site. For business reasons, no one wanted to allocate time to address the problems inherent in a four-year-old system that was originally designed by someone who was relatively new to the language. So, we put the system on two web servers behind a load balancer. There were a few wrinkles, but we were ironing them out one at a time, until we hit a snag. The balancer (which is shared, so we can't reconfigure) has a timeout of 30 minutes. For reasons I won't go into here, we need a minimum of 40 (and a little more for security).

So, now, we either have to address the inefficiency in such a way that we can produce a division of labor (my suggestion) or apply a quick fix that will regenerate sessions if they are routed to the wrong server.

This frustrates me. The whole reason that the higher-ups (I was not part of the decision) went with a load-balancer was to avoid doing work. Now we have to do work to support the load balancer, and it's not even going to fix the original problem.

I just want my site to be well-structured, efficient, and maintainable. Right now, it is none of those. And it stinks.

BlogCFC was created by Raymond Camden. This blog is running version 5.9.6.002. Contact Blog Owner