Sunday, July 11, 2010

Don't Ignore the Details

One of my favorite hobbies is one that was shared with my dad for many years. It’s kind of an abstract hobby but it provides endless entertainment. The hobby is observation which apparently requires quite a few skills that aren’t available to everyone. When I would go with my dad to do things as a kid, he would frequently remind me to quietly take note of what is happening around the activity I am doing. Pay attention to the little details and to not get excited when I see something I wasn’t expecting. This is particularly handy when snakes are involved but it also helped my train my thought processes in a way that really comes in handy these days. The ability to observe the minor details while engaged in problem solving is a valuable tool that helps a great deal with my job. For my dad, his observation skills gained him the reputation for being psychic when he could tell people something about what they had done the night before. I have directed my observation towards some of the details I encounter when solving a problem related to machines rather than people.

Working on computing equipment has some very interesting problems available for solving. Some of the problems revolve around getting the computer to perform the desired functions it was designed to do, some problems revolve around designing the functions that are desired to be performed. One of the things I really like about working with computers is they give a never ending opportunity to capture the mistakes of humans. Computers are fairly forgiving is a few ways. An example is when there are several people involved with putting the system together, each person that installs something or configures something has an opportunity to make a few mistakes along the way but the system can still perform the functions it was intended for. When you have one group that connects all the hardware, then another group that installs the operating system and the base set of software, another group installing and configuring the main applications and yet another group that maintains the system when it is done. The more people involved the more the little mistakes start to accumulate and can make for some really abstract symptoms.

My responsibilities require experience with all of the phases of getting the system put together and running along with the programming skills I use to automate as many of the task as possible. Writing programs to install software and configure applications can be extremely convoluted depending on the number of conditions that might be encountered and what actions are required to overcome these conditions. Having spent a lot of time writing installation programs I have had to learn how the operating system functions at the low levels as well as a long history of the evolution of software installation programming. For a long time software installation wasn’t anywhere close to an art or a science and getting software to uninstall correctly had the same odds as winning the lottery. I have spent a lot of time reverse engineering what other install programmers had done in order to find the best method to fix what they got wrong. I have a huge bag of tricks for getting software installed and even more for removing a hacked up install job.

Over the years there have been massive improvements in installer technology but there are still a lot of opportunities for people to make mistakes. My main responsibility is to write install programs to remove the interactivity requirement of other install programs and to make the corrections to as many conditions as possible to ensure that software is getting installed the same way every time. This is critical when you are dealing with over 10,000 systems that have been touched by who knows how many people. There are challenges that are created by random methods of things done by my co-workers and then there are the problems that are created by the company that provides the software “solution” that we are trying to install. I have a really long mental list of things that I have had to deal with over the last few years but occasionally I find a new one. This week I got to see several new ones which was surprising because of how smooth things seem to have been going lately.

I have learned to be very forgiving of mistakes that are made my the people that are handling a large number of machines because of how busy we all are it’s really easy to forget where you were at on a process that you are having to perform 20 or 30 times in a day. I have even become very accepting of a lot of the problems that are created by the vendors install programmers. However there are a few things that grab me by the monkey nerve and drag me around by it for days. There are a few products that we deal with that our company spends millions of dollars in licensing and support. When those don’t work as they are supposed to this is where my gray hair comes from. I have to use every trick in my bag to figure out why the installs are broken and how to fix it because the vendor’s proposed solution typically requires someone interacting with each machine. Sometimes it can turn out to be a real interesting problem to solve and then there are a few times that can only be described it the stupidest thing ever done in the history of computing machines.

I have been trying to figure out why in the last couple of months I have encountered so much that falls under the description of the stupidest thing I have seen yet. It’s really been eating a lot of my brain power trying to understand how a couple of companies that we spend millions of dollars with could present us with such stupidity as I have been dealing with. After a day of being beaten down by these stupid problems I came home and tried to relax a little and I think I might have stumbled on to an answer that would make sense. I was watching the news and seeing the latest on the oil spill and all of the controversy associated with those activities and it started getting a little clearer. Since software keeps growing in complexity it is taking longer for developers to finish and when they hand it off to their installation developer (typically the new guy on the team) there isn’t enough time to make sure that all of the details are worked out so the take a few short cuts. Some of these shortcuts are creative but for the most part they are completely stupid and necessary. This kind of reminds me of someone buying a lot of expensive china and having it delivered in a wheelbarrow.

I used to get annoyed with my dad when he would tell me to be quiet and listen, to stop and look around, to be aware of what is happening. I am sitting here tonight being very thankful that he spent the time to teach me how to observe the minute details that most people miss. That has given me the skills that make it possible for me to do the thing I get paid for. Sure the college degree and several years of dealing with these kinds of problems have contributed to the ability but the most important thing was taught to me while I was out fishing with my dad. When an installation blows up and scatters bits all over a computer, it tends to panic a lot of people but it’s kind of funny when it happens to me I hear my dad say “Shhhh, look, listen and pay attention for just a second.”

No comments:

Post a Comment