I’ve been chewing on this since the latest Android update hit Jessica and my phones, and I posted about it here. Basically, software design has gotten crazy over the last few years. With technology going mainstream, and most people carrying computers in their pockets in the form of a smartphone, software design is much less of an art form than a race. The problem as I see it, though, is they don’t know what they’re racing towards, other than to be first. There is nothing wrong with that, either. Though sometimes I wish developers could be just a bit more altruistic when they make their choices.
I earn my living writing software. I’ve been writing software for a very long time, way before the Internet was commercialized, and way before most people even had a home computer. I’ve watched the industry evolve and change from being a niche to being part of everyday life for most of the population. It happened very quickly, too.
Most developers get into a mind-set of “that would be a cool feature” so they do it. We spend a lot of time in our heads, solving these programmatic puzzles. Sometimes the only reason we add a feature to a program is because in our heads, we needed to see if we could solve this puzzle. Once we’re done, we look for the next puzzle to solve. Its not necessarily about who would use this feature, or why, its about solving the puzzle.
Having fallen into this trap many times before, I try to follow certain rules to make sure that software I write follows a certain set of guidelines. I’ll try to outline these guidelines here.