Andrew Hoppin tweeted from a session at foo camp: “software products instantiate philosophies; developers need to consider philosophy so software can have a conscience.” This is a good start but an incomplete conclusion. It is true that software embeds a lot of assumptions about the world and about people. People who practice software development often take the assumptions for granted. It is a big step forward to think about those assumptions deliberately and question those assumptions.
Considering these assumptions is particularly relevant with social software whose affordances affect the way people act with each other – consider the impact of Facebook’s poke feature or privacy policies. Exposing assumptions is good. danah boyd does this when she explains that online transparency is easier for the privileged. O’Reilly’s Designing Social Interfaces section on section on Reputation does this when it talks about the way that the use of reputation features relates to and affects the cooperative and competitive dynamics of an online community.
Hoppin’s quote says that philosophy will help software developers incorporate conscience in their work. Plato thought that philosophical reflection, if done right, would lead people to be good. But since Plato there have been a great many thinkers who come to differing conclusions about human nature and society, and there are many societies and subcultures that make differing choices. People who think through their assumptions will have different moral philosophies. Considering assumptions is a good thing to do, but it won’t lead to a single “conscience.”
And then, if tools reflect better thought-through assumptions, the “conscience” is still not in the software, but in the people who use the tools. A car can be designed to use less fossil fuels, but a driver can still use it to run over a pedestrian. Comments sections can be designed for better moderation, but people can still choose to be mean to each other – the use of “tummelling” to facilitate good conversation is a practice done by people, not software.
Thinking about the assumptions in software is a good start. It would be great to have more of it. It won’t make software “good.”