March 08, 2005

Why program?

We all seek to do something rewarding and fulfilling with our lives, so naturally I must believe there is something rewarding and fulfilling about programming or else I would be in a different line of work. Actually, I believe there are many good things about being a programmer, including but not limited to that feeling you get when you finally solve a really tough problem in an elegant way, the opportunities to get involved in fields outside your specialty, and the general clarity of thought you win for yourself after having gone through several hundred of those mental debuggings I wrote about yesterday.

However, those are all personal benefits, and I'll admit to having a smidgen of social conscience. What is it, exactly, that a programmer does for the rest of us? I think it can be summed up in one word: automation. In any office you can find people doing repetitive, mindless little tasks that have long since been worked out in such detail that someone has written down a list of precise instructions that even a new hire who knows nothing about the organization can carry out. They may need to be carried out once a week or daily, or maybe some poor soul's entire job is to carry out the same task over and over again. In cases like this, a programmer's job is obvious. A detailed list of precise instructions is an algorithm. Somebody has already done half your job for you!

Automating the boring stuff is probably the single greatest service that programmers perform for society. Not only does it save time, but it's easier to pass on the accumulated wisdom encoded in that list of precise instructions. In much the same way that writing preserves knowledge from one generation to the next, so that people don't have to work things out from scratch every 30 years, programs preserve algorithms.


At March 09, 2005, Anonymous Robert Magus said...

While I do agree with you about personal benefits, and automating dull tasks... not many people would agree that doing that will benefit society. In fact, many people I know blame computers for lack of jobs.

eg. Car factory... automation has reduced the need to have one hundred people on a production line putting together bits and pieces of the car, to one person who's only job it is is to get up in the morning an press the on switch.

At March 09, 2005, Blogger Fraxas said...

That's a short-term loss for a long-term gain, Robert. Freeing up humans to do More Interesting Work Than Assembling Cars is good for society, I think -- even if it's painful to people who have jobs robots can do.

I'd like to point out that not every new-hire-understandable algorithm (BTW, the corporate jargon for that is "business process") is easily automatable, because they're often ambiguous in important ways, and they often don't scale. For every automatable step in a business process, there are probably two or three that aren't automatable because some human has to make a decision (e.g. purchase orders, wide-distribution memo approval, etc). In those cases, the danger of viewing the whole process as automatable is that all of a sudden your purchase-order-approval accountant is getting totally inundated, because now it's automated everyone can submit their purchase orders online! Or something.

Another counterargument to automation as a Good is that in a lot of cases, the written process isn't actually followed or, if it is, it's only one part of a much larger workflow. This is something that people write business books about, and spend lots of time thinking about, and come up with improvement methodologies for based on their own experiences.

But in my experience, all of those "make your organization work better" books have (at least) one flaw: there's a step where Magic Happens and people all start following your process. Real life doesn't work like that.


Post a Comment

<< Home