Building systems that don't match your worldview
Aaron Eiche Apr 7 '17
I wrote a programming article recently that started out describing an example problem: How many girls are in a class? The intention was simply to have a value to filter against. Almost immediately I was struck that, in 2017 there are lots of people who don't identify as male or female.
I tossed this around in my head for a few days, and every time I looked at it I was a little uncomfortable with what I was writing. I'm a straight, middle-class, white man living in America. In a lot of ways things couldn't get much easier for me. Sometimes my world-view paints a picture that we can all have the American dream if we work hard enough. Intellectually, I know that's not true. We don't all get the same opportunities, and we don't all start out the same way. However, in the past I've built systems that better match my worldview.
As developers we wield a tremendous amount of power, usually unbeknownst even to ourselves. We have the power to shape the way the world functions. The way we design our systems can powerfully affect the way that other people can utilize them. Consider the ubiquitous
tag in HTML. Have you ever forgotten to include and ```alt``` attribute in it? It can be easy to forget, and you would probably not notice it wasn't there. If you used a screen-reader though, you might be missing an awful lot. According to MDN _This attribute defines the alternative text describing the image._ This information may provide a screen-reader the ability to describe an image to a sight-impaired individual. Have you ever thought that you could marginalize an entire group of people? I don't usually feel like I have that kind of power. If you're the one designing the database you might have the power to make that gender field one that has 3 or more ```enum``` values, instead of just 2. If you're the one writing the webpage, you might have more power than anyone else to write in the base support for [i18n translation](https://en.wikipedia.org/wiki/Internationalization_and_localization). Does your site work for people who have really low bandwidth? What about people who only have mobile devices? What about people who _don't_ have mobile devices? You may think that in your organization these decisions are made before the project gets to you. "There's no budget for that" or "That hasn't been approved" is an understandable response but as developers I think we have an obligation to take these questions back to "stakeholders", if for no other reason than to ask "have we thought about this?" If they have thought about this, you might be adding your voice to others - strengthening the argument. Back in 1990 in the US, President Bush(H.W.) signed into law [The Americans with Disabilities Act](https://en.wikipedia.org/wiki/Americans_with_Disabilities_Act_of_1990). It made it a legal requirement that buildings accommodate people with disabilities. Buildings had to have wheelchair ramps, and elevators, and braille placards. It didn't affect me as far as I knew (I was quite young), but in 2005 my father suffered a stroke that left him wheelchair bound. Suddenly, I was very grateful for the ADA. My dad was able to get into buildings without someone holding a door, get on a bus without someone having to carry him on, go to the 2nd, 3rd, or 34th floor of a building, without issue. I can say without a doubt that if the ADA hadn't been a law, he could not enjoy the autonomy available to him. When we sit down to write code, or design systems, if we spend just a little more time considering who might be among our users we can make the world more accessible for more people.