Archive for January 28th, 2006


My job contradicts my upbringing. As a computer scientist, part of what I do is solve problems. I love problem solving. The difficulty is that the problem solving I learned as a kid is opposite of what I need to be able to do today.

When asked, “How would you make this piece of software better,” my response has been that “It does what I need it to do, and if it doesn’t, I find a way to work around it.” I have had numerous arguments about this because I’ve been looking at it from the wrong side of the tracks.

Growing up, we didn’t have much money. I tried not to ask for frivolous things, and often wore hand-me-down clothes from cousins I barely knew. I’m not saying this because I feel sorry for myself. I wouldn’t trade my childhood for anything because it taught me how to appreciate what I have. I entertained myself with things I could find in the forest. I spent a lot of time outside, inventing things with what I could find. If I needed a shelf in my room, I searched around the house and found materials that would work without having to buy anything. It wasn’t necessarily pretty. I learned the difference between want and need. I am grateful for understanding the distinction between the two, but it has caused me much grief when it comes to software.

When writing software, I prioritize the wants and needs of the user and make it happen. I have to look at an application and say, “I NEED it to do X, Y, and Z.” The problem for me is that I find it very difficult to escalate something I want into something I need. Thus, in the past, I was satisfied to get by with what I could find in the software forest.

It is hard for me to look at something and say that it could be better. I just want to find the good in it and work around the bad. I realize now that there is a difference. Filing bugs on software so that it will do more, faster is not going to cause my parents to look for a second job. Asking for an enhancement request is helping the software to mature. New features challenge programmers to solve more problems. Isn’t that what I love to do? Solve problems?

My next goal is to be able to figure out what the user needs before they even know they need it. That is what inventors do. That is where I’ll find the great ideas and bleeding edge software. Being a problem solver is great, but being the one to realize there is a problem to begin with is even greater.

Check back in a few years. This isn’t going to happen over night…