As the new year begins, I have been thinking about the things I would like to do in the coming year. New year’s resolutions, I suppose. There are a lot of things that I would like to do, and I am trying to deal with the fact that I can’t do all of them, and if I try I probably won’t do any (or many) of them well. In the process, I have had to (and am still having to) let some of these goals go. They are lower priority dreams, but they are still my dreams and it still hurts a bit to think that they won’t happen, at least not this year. The pain and the process reminded me of an experience I had several years ago that taught me that less is hard.
Up Is Easier Than Down
I was a young scout leader for a group of 12 and 13 year old boys, and one of the other leaders brought in a broom handle for one of the activities. At first I thought he had just failed to plan an activity, but what followed proved to be one of the most memorable lessons from a scout meeting I have ever had. The task seemed quite simple, really: four or five of us were to balance the broom handle atop our outstretched pointer fingers, then we were to lower the broom all the way to the ground. This will really only make sense if I make a few things clear.
- The broom handle had no broom at the end of it. It was just a long, straight stick.
- Each person was only allowed to touch the stick with the top of the pointer finger on their right hand, and those pointer fingers had to be fully extended at all times. Curling your finger to grab the stick was not allowed.
- Each person was allowed to touch the stick with only their right hand. No person was allowed to use two hands.
- If the stick falls to the ground instead of being lowered and placed there, you lose.
- Every pointer finger must be touching the stick at all times, with exceptions of no greater than a fraction of a second.
Again, this activity seemed quite easy. After all, we had gravity working in our favor, or so we thought. Well, we all tried for about 30 minutes, and the stick never got close to the ground (except when it fell). Instead, it usually ended up above everyone’s heads, as high as the shortest scout could reach. You see, unless everyone lowers their hand at exactly the same rate (not going to happen, especially with a bunch of scouts), the stick begins to fall in one direction or another. As the stick begins to fall on one side, the fingers on that side rise up to prevent the fall. Those fingers often rise to quickly, causing the other side of the stick to start to fall, causing those fingers to rise. Keep the stick balanced and completely still is quite easy. Keeping the stick balanced and moving up is a little bit easier. Keeping the stick balanced and moving down is nearly impossible.
There are several lessons in cooperation and teamwork that could be taken from this activity, but the biggest lesson for me was that up is easier than down.
My wife and I have been married for 8 years, and we have moved almost every year during those 8 years. All of the moving has been a pain, but it has brought one unexpected benefit. Each time we move, we get rid of the stuff that we don’t need or use anymore. My wife hates clutter and I hate lifting more boxes than is absolutely necessary (I once virtually packed a moving truck using Google Sketchup to avoid using unnecessary space and boxes). Since we moved into our own house, we have noticed a few things. Stuff accumulates quickly and induced demand is a real thing. The problem with lowering the stick appears to apply to stuff as well. Getting rid of stuff is hard, but getting more stuff is easy. How quickly we fill our closets, garages, attics, and basements with things that we will never use or even look at again. Why do we have such a hard time getting rid of all this stuff?
The same phenomenon seems to affect software development. As a project gets older, the amount of tends to increase, even if the project doesn’t change in size or complexity. The reason for the increase is a bit frightening, especially, I imagine, for non-developers: software developers often avoid deleting code because they are afraid they might break the entire system, or some part of it, by deleting code some innocuous lines of code. Automated testing and modularity and functional programming and a whole bunch of other things are supposed to alleviate this problem, but still our code bases get bigger and bigger and bigger, full of dead, or mostly dead, code. Less code is hard.
Less Functionality (i.e. Fewer Features)
Software developers may think they have it hard when it comes to getting rid of things, but code has nothing on product features. At least users don’t file complaints and call us nasty names on Twitter when we remove some unused bit of CSS. I have seen so many website and app redesigns over the years, almost all of them claiming greater simplicity and usability, and almost all of them failing to actually remove any features. Because, when it comes down to it, every feature seems essential to the product manager that owns it. So, instead of simplicity, the users get a new interface (with flat buttons!) where their favorite features are hidden in new places or even in separate apps (thanks Google Wallet and Android Pay). Less is hard when it comes to products because we are loathe to upset the small subset of users who love the feature that needs to go. Less is hard, but less is often better.