Dear new developer,
I was chatting with a Twitter friend the other day and he asked me how I got into software, specifically what was the first program I wrote. I realized I’ve never shared the story in written form, though I did discuss it on a podcast, so I wanted to write it down here.
The story begins in an office, on the job. My parents ran an insurance brokerage. I worked there as a child. There were many tasks:
- filing paper documents
- answering the phone
- copying correspondence
- folding letters and putting them into envelopes
- and more.
One task that I found particularly odious was the renewal letter process.
Every month, the brokerage was required by law to send a letter to clients whose insurance policy was expiring in that month. We had to provide information about both the policy and us, so clients could contact us to change or cancel their policy.
When we first did the renewals, for every client we took a template letter and made a copy in WordPerfect, our word processing program. We updated the letter with the required information such as the policy number and client address. We found that client specific information by looking through a filing cabinet for the client’s folder. After proofreading, we’d print the letter, address an envelope, fold and insert it, and finally mail it off.
We definitely batched up some processes, such as folding and addressing. I remember having a sponge that you could rub the stamps with in order to spare your tongue (this was before sticker stamps).
But the letter creation was a time consuming process, because you went back and forth from the filing cabinet and the computer typing policy numbers and addresses.
I had been playing with WordPerfect macros at home, and realized that this was a mail merge problem. I looked around and found a database called Notebook that we could use. Notebook let me record the policy number, expiration date, and address of a client. I could pull the clients who had policies expiring in the upcoming month, merge their data with the template and generate all the letters. No more miserable copying and pasting.
Once I had a proof of concept showing this worked for one to two clients, my parents agreed that this was a good idea and that we should do this going forward. However, rather than do a massive data entry project, we added policies one month at a time. There was one more year of looking up the values in the file folders, adding them to the Notebook database, and then running the mail merge. But after that year, printing out these renewal letters became a 10 minute task rather than a multi-day ordeal.
There was still tedious work to be done. We had to keep the Notebook database in sync with the file folders as policies changed over the year. We still had to address, stuff and stamp the envelopes.
But with a database, the document template and mail merge, we’d eliminated a painful task.
That was the first time I saw the power of software to reduce human misery. Yes, on a small scale, but still!
This theme, “reduce human misery” is the core of the value of software for me. I aim at that goal in the work I have done over the past decades and the work I do today.