A recent post from Joel: "Don't let anyone tell you that as a programmer you don't have to make moral or ethical decisions. Every time you decide that making users feel stupid is better than fixing your code, you're making an ethical decision."
Which reminds me...
I was reading this feature on the development of Salon's publishing / content management system and the tech boom memories flooded back. Our company had hired a refugee from Salon and I gained a bit of insight to this story. I was always jealous of the developers for Salon, since they got to build their system from the ground up and at the time I felt that "rolling your own" was the best solution for enterprise content management. I was assigned the task of building our magazine's publishing system, but was told to choose a vendor. (To those in the know, I didn't choose Vignette or Interwoven. Good systems, but not good enough for the money.)
Uh-oh. I feel a nested flashback coming. How programmer-y.
True Massless story: Sitting in my office, configuring a mail server, the CTO walked in and said I could either continue administering the network, systems, and servers or I could take a chance, choose from a group of content management vendors, and be the lead developer for a content management system. In a single moment I went from sysadmin to programmer. What a weird day. What lifelong consequences have resulted from a single moment's, "Sure...why not? That sounds like fun."The subsquent face-to-face detail level design meetings with the end users of that CMS led me to Joel's conclusion. Getting to view the effects of certain design implementations, I realized that some coding and marketing choices could be viewed as ethical decisions. Particularly when the choices I made translated to work hours lost or gained for the users.
My guess? Good programmers recognize their roles as service employees. They empathize. They want to help you solve your problem. And they acknowledge their mistakes and, when applicable, give discounts, additional service, or freebies for those whom they failed to help.*
*Please don't email me to point out that you can't give your direct supervisor or Product Manager a "discount" for a broken service, component, library, or applet. Duh! You know as well as I do that some programmers have direct contact with their end users, or have input into sales and customer management...
"A very short post. Just one link since I can't stop listening to this song from Adult."