Programming in the Real World

Carina Zona gave a talk at PyCon 2015 delving in to the head on collisions we constantly face within programming that may not be completely obvious. The talk, titled “Schemas for the Real World” can be found here. The questions she presents involve normalization vs. the overwhelming possibilities which can be found in the world. How do we interpolate our ideas and past experiences in to something with the ability to cover the immensely broad spectrum of humanity? Questions we have been asked by our instructor will also come in to play the further in to this post we go. What assumptions have you taken advantage of in the past, and how can you, as a programmer, improve your applications by keeping those assumptions in mind?

We have entered a new age of massive interconnectedness through a technological revolution. There are new processes and possibilities popping up each and every day relating to technology. There are major consequences and realizations we must factor in to our development if we are to continue to garner the greatest amount of users for our applications. I sat down at the very end of February with a brand new MacBook Pro and wide eyes as we starting using terms like “command line” and “object-oriented programming”. I have now come so far as to having WAY more subjects and terms I have no idea about (just kidding, sort of) and being able to develop full scale applications through Ruby on Rails. The experience has been overwhelmingly eye opening through various realizations as we have gone through our lessons. There are things we must consider which I have never had to consider in my personal life. Carina’s example of one of these considerations is one of her first, hair color. We must give every single option in the universe for an encompassing drop down menu option. We must consider the impact leaving out even one possibility could have on our user base in developing applications. As database programmers we must enjoy data. Best case scenario we would have a or b for each choice, no matter how many choices. This data analysis would provide a black or white picture of every individual, but we all know this is not the way society works. Not everyone can simply define their sexual orientation as gay or straight. Simply adding bisexual in does not necessarily solve our problem either. On one hand, we could have a scale where someone could put in their sexual orientation on a sliding bar like the one pictured here from the video itself.

While it would be easier for me to just have two options, no matter what they may be, I am running the serious risk of excluding entire subsets of humans. I must consider the effect this would have on me as a user of the application. Does eliminating at least 1/3 of humanity (and probably more) from the user base really make my life more simple? The answer is no.

Throughout time we all develop our identities. We all have experiences and prior situations we can recall and relate to. These heavily impact our future endeavors. We all have what we can define as “normal” and consequentially have all the things we define as “abnormal”, but everyone’s definitions of these terms can be drastically different depending on personal experiences and lessons learned. While it is not realistically possible to include every universal option in each set of choices I give my user, best practice would be to marginalize as few users as I could.