SlideShare a Scribd company logo
1 of 114
Download to read offline
Schemas for
                                                                   the Real World

                                         Carina C. Zona
                                                   @cczona


Sunday, February 24, 13
[As Keith noted,] in addition to being a developer, I'm also a sex educator.
—xkcd #940

                                                        @cczona


Sunday, February 24, 13

I think a lot about how the two overlap.
They do. Quite a lot
Imagine walking through the world knowing that everyone’s first assumptions
               about how you see yourself, who you love, and what feels right for you are
               completely wrong. Now imagine signing up for a cool website, and then being
               required to select an option from a drop-down menu that doesn’t include
               anything that represents you....[Y]ou’ll feel defeated.You’ll want to argue that
               whatever they think they’re learning from that drop-down menu, it’s not really
               true.You’ll want to tell them that they’re adding to your humiliation by making
               you do this.You’ll want to tell them that they’re missing a huge part of you…
                                                                                     —Sarah Dopp

                                                                                             @cczona


Sunday, February 24, 13
Female       Male




                                   *          *
                                                  @cczona


Sunday, February 24, 13
Married    Divorced

                          In a Relationship                             It's Complicated
                                                   Widowed
                                                               Single




                                                                                           @cczona


Sunday, February 24, 13
Straight               Gay
                                     Bisexual




                                     Pansexual




                                      Asexual


                                                       @cczona


Sunday, February 24, 13
@cczona


Sunday, February 24, 13
@cczona


Sunday, February 24, 13

Users are giving pushback to assumptions that leave them out. Social apps, in particular, are
being pressed to adjust. Facebook, Google, and others have been dealing with these
questions for years and are still working it out. So if you feel out of depth, you are not the
only one.
Sociological
                          Normalization


                   Construction of an idealized norm



                                                                                @cczona


Sunday, February 24, 13

When developers talk about normalization, we're talking about databases. But when dealing
with human attributes, we often wind up pursuing a different cause: sociological
normalization. [read]

Conflating the two works fine if you only want users from among the select few who belong
to the idealized norm. But most of us are going for broad userbase.
Database
                          Normalization

                Mirror real-world concepts and
                their interrelationships.


                                                                                  @cczona


Sunday, February 24, 13

What we lose track of is one of the core objectives of database normalization. We're supposed
to [read]. When the database is in tension with people's own, real world -- then it's not
people who need to be flexible.
@cczona


Sunday, February 24, 13

Why IS this hard? Because at first glance, this stuff looks so easy. It's just forms, right? We've
done those a million times before.

But we get tripped up by some flawed premises:
Gender is one of those things
               everyone thinks they understand,
               but most people don't. Like "Inception".
                                                                         — Sam Killerman




                                                                                     @cczona


Sunday, February 24, 13

First, a premise that deeply personal stuff about humans can be reduced to lists.
'Hey, this is just a system I can figure out
               easily!' is also a problem among engineers
               first diving into the stock market.
                                                                             —xkcd #592




                                                                                    @cczona


Sunday, February 24, 13

Second, assumptions that canonical lists for these exist. Or are at least, SURELY, must be
creatable.
<option value="1">Mr</option>               <option value="18">Dame</option>          <option value="39">King of Kings and Lord

        <option value="2">Mrs</option>              <option value="19">Chief</option>         of Lords</option>

        <option value="3">Miss</option>             <option value="20">Sister</option>        <option value="40">Conquering Lion of the

        <option value="4">Ms</option>               <option value="21">Reverend</option>      Tribe of Judah</option>

        <option value="5">Dr</option>               <option value="22">Major</option>         <option value="41">Elect of God and Light

        <option value="6">Professor</option>        <option value="23">Other</option>         of this World</option>

        <option value="7">The Rt Revd Dr</option>   <option value="24">Cllr</option>          <option value="42">His Own Divine

        <option value="8">The Most Revd</option>    <option value="25">Sir</option>           Majesty</option>

        <option value="9">The Rt Revd</option>      <option value="26">Rt Hon Lord</option>   <option value="43">First Ancient King of

        <option value="10">The Revd Canon</         <option value="27">Rt Hon</option>        Creation</option>

        option>                                     <option value="28">The Lord </option>     <option value="44">King Alpha</option>

        <option value="11">The Revd</option>        <option value="29">Viscount</option>      <option value="45">Queen Omega</option>

        <option value="12">The Rt Revd              <option value="30">Viscountess</option>   <option value="46">Beginning with Our End

        Professor</option>                          <option value="31">Baroness</option>      and First with Our Last</option>

        <option value="13">The Ven</option>         <option value="32">Captain</option>       <option value="47">Protector of All Human

        <option value="14">The Most Revd Dr</       <option value="33">Master</option>        Faith</option>

        option>                                     <option value="34">Very Revd</option>     <option value="48">Ruler of the

        <option value="16">Rabbi</option>           <option value="35">Lady</option>          Universe</option>

        <option value="17">Canon</option>           <option value="38">MP</option>            <option value="49">Dude</option>




                                                                                                                                @cczona


Sunday, February 24, 13

And the third problem is our faith that the first two problems here can be easily solved. Just
add more list items!
"Seeing more than 20 uncategorized
               options can be bewildering…"
                                               —Smashing Magazine




                                                              @cczona


Sunday, February 24, 13

So that's not gonna work.

Also, it risks looking like a dumbass...
Social Networks



Sunday, February 24, 13

So here's the next flawed premise: that we intuitively understand the nature of social
networks.

Stepping aside from how "social networking" has come to be implemented as technology --
what IS a social network? What is it in purely human terms?
Social network


                          Individuals and the dyadic ties between them.
                          Interactions within a
                          social group of exactly two people.



                                                                                    @cczona


Sunday, February 24, 13

[slide] That's the real life that our apps are meant to replicate and build upon. One-on-one.
As personal as our social selves get. In social, identity is a dependency.
Developer & user
                             are in dyad too
                How can I be better 1:1 partner with this
                person who…
                •         is a current user
                •         I hope will become a user


                                                                                   @cczona


Sunday, February 24, 13

As developers, we build -- or break -- community with each line of code.
What 1:1 relationships are we fostering between the individual and the app? What
relationships are we inhibiting between individuals?
In real life

                          "I know your personhood better than you"




                      sounds presumptuous
                                                                     @cczona


Sunday, February 24, 13
In real life



                      sounds presumptuous
                                            @cczona


Sunday, February 24, 13
In real life

                            "Who you are is invalid"




                          sounds arrogant
                                                       @cczona


Sunday, February 24, 13
In real life



                          sounds arrogant
                                            @cczona


Sunday, February 24, 13
In real life

                           "Your existence isn't possible"




                          sounds clueless
                                                             @cczona


Sunday, February 24, 13
In real life



                          sounds clueless
                                            @cczona


Sunday, February 24, 13
@cczona


Sunday, February 24, 13

It's not what we set out to do. It's not the community we seek to build. We want to create
things that feel cutting edge -- not that seem out of touch with modern reality.
Be conservative in what you do,
               be liberal in what you accept from others.
                                                   -Postel's Law




                                                             @cczona


Sunday, February 24, 13

[READ]
How do we bring
                          modern realities into
                          the data, views, logic?

                                                                                  @cczona


Sunday, February 24, 13

How DO we bring modern realities into the data, views, and logic...? We start at the schema.
@cczona


Sunday, February 24, 13

As developers, we're tugged in two directions: keep the codebase manageable, yet design for
modern complexity.
Get schemas
                          into alignment.


                                            @cczona


Sunday, February 24, 13
Mental Schema
                   •Set of pre-conceived ideas
                   •Framework for representing some
                      aspect of the world

                   •System of organizing & perceiving new
                      information.

                                                            @cczona


Sunday, February 24, 13

There are two kinds of schema. [read]
Database Schema
                   •Structure described in the database's
                      language

                   •Blueprint for database construction
                   •Describes how the real world is being
                      modeled

                                                                                 @cczona


Sunday, February 24, 13

Database schemas are basically the same thing. It's a mental schema translated into
blueprints for a database.
create_table "users", :force => true do |t|
                t.string "username"
                t.string "email"
                t.string "password"
               end


                                                                                   @cczona


Sunday, February 24, 13

When you use Rails generate scaffold or Rails generate model, it creates a migration. Maybe
you created something like this, for instance. Those migrations ultimately get translated into
a unified schema to be used by the environment's database.
@cczona


Sunday, February 24, 13

These are, simply, frontend manifestations of someone's mental schema.
Schemas are foundation for

                expressing

                things deeply intimate.



                                             @cczona


Sunday, February 24, 13
Schemas are foundation for

                expressing

                self-image.



                                             @cczona


Sunday, February 24, 13
Schemas are foundation for

                expressing

                identity.



                                             @cczona


Sunday, February 24, 13
Schemas are foundation for

                expressing

                important relationships.



                                             @cczona


Sunday, February 24, 13
Schemas are foundation for

                expressing

                values.



                                             @cczona


Sunday, February 24, 13
Schemas are foundation for

                expressing

                spirit,

                creativity,

                uniqueness.
                                             @cczona


Sunday, February 24, 13
Schemas define the

                user experience.




                                    @cczona


Sunday, February 24, 13

Schemas define user experience.
& UX

                Our schemas are
                leaving people behind.


                                         @cczona


Sunday, February 24, 13

[read]
We can fix that.
"What benefit will
                           the user notice?"


                                                                                      @cczona


Sunday, February 24, 13

When developing a schema that's going to ask a person about their experiences, feelings,
sense of self, there isn't a single "right way" I can tell to do this. What we can do is evaluate
tradeoffs, and ask "What benefit will the user notice?" That's not equivalent to "How will the
user benefit?", a question that grants too much latitude for assuming that what we want is of
course to their benefit because it's gonna help us deliver a product that's Awesome.
Evaluating from
                          user perspective
                           gives us focus.

                                             @cczona


Sunday, February 24, 13

[read]
Coerced    Guided            Discretionary
                      Restricted    Corrective                      Freeform




                                                                                 @cczona


Sunday, February 24, 13

There's no point on this chart where everybody is seeing maximum benefit. So let's look at
the choices.
Coerced      Guided             Discretionary
                      Checkbox        Corrective                        Freeform
                      Radio
                      Select




                                                                                     @cczona


Sunday, February 24, 13

Checkboxs, radio buttons, and select menus imply that all possible values are represented.
Hey user, just pick the right one, (or ones). It's real world being rejected because it didn't
happen to look like our mental schema.
Coerced      Guided            Discretionary
                      Checkbox        Corrective                        Textarea
                      Radio                                                 Text
                      Select




                                                                                    @cczona


Sunday, February 24, 13

Checking a box is a one step action. Entering a text string is not. So a freeform solution
such as a textarea or text field isn't automatically exciting. Nevertheless, a freeform field can
deliver striking benefit to users.
11 years




                                                                11 years




                                                                       @cczona


Sunday, February 24, 13

At MetaFilter, gender has been a text field for over a decade.
…the early crowd at MeFi were often
               programmers and they hated the idea of
               "dirty" data collection…
                                                           —Matt Haughey, founder




                                                                              @cczona


Sunday, February 24, 13

Initially, there were some who shuddered at the thought.
All girl                        Dangly bits
               XY                              Chicklet
               Braid runner                    Innie not outie
               Fella                           Convex
               Fembot                          Sideburns
               Alto                            Ambisextrous
               It depends                      Member of the
               MYOB                            patriarchy
                                                                                @cczona


Sunday, February 24, 13

For about 5 seconds. Then they jumped on board. Because they could be creative and silly.
I speak using the               50% quintessential
               male gender, when               tomboy, 50% total
               required by                     girly-girl
               language
                                               Gender bo bender
               M, but known to be              banana fanna fo
               flexible                         lender fee fi mo
                                                                                @cczona


Sunday, February 24, 13

AND because they could express this THING about themselves fully. With authentic voice.
…it was one of the earliest indications I'd
               landed in the right place.
                                                                           —MeFi user




                                                                                  @cczona


Sunday, February 24, 13

That text field grew into a beloved institution. What you as a user put into that field says
something revealing who you are. That you're allowed to put in anything -- or put in nothing
-- says something revealing about what MetaFilter is meant to be for.
11 years




                                                                             8 years
                                                                             11 years
                                                                             4 years




                                                                                    @cczona


Sunday, February 24, 13

That schema's trust in users was the foundation for the users to ASK to share themselves
even more.
@cczona


Sunday, February 24, 13

Today MetaFilter users are trusted with many free-form fields, including ones most
developers instinctually constrain or thoroughly validate.
@cczona


Sunday, February 24, 13

Nonsensical values? Hell yeah, go for it. Field values that blatantly contradict each other? No
objection to that either. The message is: hey, user, we get that this is YOUR OWN HOME.
Make it as comfortable, personal, and messy as you want to. WE, as developers, can work
with that.
Social Research



Sunday, February 24, 13

When collecting data on people, you're in a different realm. Social sciences. If you want to
run useful analytics about personal attributes and behavior, then data collection needs to
meet at least two minimum criteria:
Exhaustive
                                Every possible option




Sunday, February 24, 13

A field's values must include every possible option.
Mutually Exclusive
                            No overlap exists between them




Sunday, February 24, 13

And the field's options must be mutually exclusive.

How many social apps have both of those bare minimum criteria covered?
@cczona


Sunday, February 24, 13

We've seen this one enough. At least that set of values seems covered fully.
@cczona


Sunday, February 24, 13

But it's not.
@cczona


Sunday, February 24, 13

Still not...

We'll never get there by adding more list items. But that's fine. Because instead we can
choose to look at human data from a different perspective...
Data doesn’t have
                          to be for analysis.


                                                                                     @cczona


Sunday, February 24, 13

It's easy to get into the habit of structuring data for easy analysis. But step back. Wallow in
the user's perspective:
Data can be sheer
                           expressiveness.


                                                                                 @cczona


Sunday, February 24, 13

That data can be sheer expressiveness. Data that has character, individualism,
distinctiveness.
@cczona


Sunday, February 24, 13
- = select_tag 'person[profile][gender]',
                   options_for_select( ["","Female","Male"] )

               + = profile.text_field :gender




                                                                                   @cczona


Sunday, February 24, 13

More recently, years ago Diaspora's Sarah Mei turned gender into a text field there too.
@cczona


Sunday, February 24, 13

Just like on MetaFilter, users had fun with it.
Some developers
                          were not amused


                                                                               @cczona


Sunday, February 24, 13

Some developers didn't. One of the major complaints raised was the affect on
internationalization of gendered pronouns.
Gendered pronouns
                            are a rat hole.


                                                                                    @cczona


Sunday, February 24, 13

And here's what I've got to say to that: Gendered pronouns are a rat hole. It gets hella messy,
hella fast, when you deal with internationalization.
The role of gender in society is the most
               complicated thing I’ve ever spent a lot of
               time learning about, and I’ve spent a lot of
               time learning about quantum mechanics.
                                                                    —Randall Munroe, xkcd




                                                                                      @cczona


Sunday, February 24, 13

That's a plan that comes with a level of complexity that English hasn't wrapped its head
around. In a lot of non-English languages, grammatical gender and what you and I would call
"gender" are independent of each other. So internationalization based on "Gender" will screw
you over. Think about how to avoid dealing with gendered pronouns at all. If it's a
requirement, then the way to cope is to ask.
"Which pronouns do
                             you prefer?"
                            (masculine)   he/him/himself/his/his

                             (feminine)   she/her/herself/hers/her

                          (androgynous)   they/them/themself/theirs/their

                            (inanimate)   it/it/itself/its/its

                            <full name>   <fn>/<fn>/<fn>/<fn>'s/<fn>'s
                                                                                  @cczona


Sunday, February 24, 13

Randall Munroe, best known for xkcd, has examined the problem several times for English
language projects. Asking, straight up, "Which Pronouns Do You Prefer?" is truly the best he
could come up with. Oh, and as complicated as THIS matrix it, it grows even BIGGER in many
other languages.

Avoid. Or ask. Don't let pronouns become the driving force for bad UX.
@cczona


Sunday, February 24, 13

As developers, we have a vision of what a good codebase should be and not be.
What we want              What we get


                          • Structured              • Validations, exceptions
                          • Predictable             • Conditionals, partials

                          • Relational
                                                    • Premature optimization
                          • Indexed

                                                    • Cultural variability
                          • Exhaustive?             • Individual POV
                                                    • Moving target


                          • Easy analytics          • Decisions based on false
                          • Data-driven decisions    premises

                                                                                      @cczona


Sunday, February 24, 13

[READ!!]

In the most sensible of ways, we often arrive at solutions that are factually truthy while far
removed from real life utility.
"What is your religion,
                 if any?"




                                                                                     @cczona


Sunday, February 24, 13

ARIS is the largest ongoing survey of Americans' religious identification. It asks this simple,
OPEN-ENDED question: [slide]

Which nets over 100 unique answers. Which, if you're making a form based on that, is tricky.
There's no form element that makes it easy for our users to pick themselves out of a list of so
many possibilities.
@cczona


Sunday, February 24, 13

ARIS found, though, that these could be compressed into 13 major categories. More
manageable list, right? We could use that for a form. But, eh, a lot of those are edge cases.
We'd rather want to focus on genuinely major groupings.
What is your religion, if any?

                                Christian                      76%

                                 Other                          4%

                                  None                         15%

                          Don't Know or Refused                 5%


                                                                                   @cczona


Sunday, February 24, 13

Which brings us down to this. At least a quarter of Americans are Christian. Done. Every other
religion would just be clutter. Edge cases.

And then there's this sort of crummy data with it. We'd probably assign nil value for more
than one of these categories, right?
What is your religion?

                           Christian                          76%


                            Other                              4%


                              n/a                             20%


                                                                                 @cczona


Sunday, February 24, 13

Fixed. Which focuses attention on a problem here: 1 in 5 are not useful answers from an
advertiser's perspective or for out own analytics. The NILS -- gotta go.
What is your religion?

                           Christian                            76%




                            Other                               24%



                                                                                    @cczona


Sunday, February 24, 13

So what we're left with is a good, clear, list. It covers ALL the big stuff. When you get
reductive enough, for Americans: religion it a binary. Which, from a storage standpoint, is
great. Booleans! Score.
Religion:




                                                                                   @cczona


Sunday, February 24, 13

But we don't do THIS. It covers the biggest categories. But oh how it leaves people out.
People aren't
                             edge cases.


                                                             @cczona


Sunday, February 24, 13

People aren't edge cases.

And they're pushing back on apps that treat them that way.
@cczona


Sunday, February 24, 13

So reductive has big problems. So does scaling upward:
Balancing between
                              approaches


                                                                                      @cczona


Sunday, February 24, 13

As engineers, it's instinctually uncomfortable to step away from this. To deliberately NOT
structure data for easy analysis. I feel ya. I really do. This freaks me too. But, again, the
foundational question is "What benefit will the user notice?"
@cczona


Sunday, February 24, 13

And if necessary, we CAN strike a middleground. This is where guided response comes in.
Autosuggest.
Required   Autosuggest    Optional
                      Checkbox         Alteration        Textarea
                      Radio                                  Text
                      Select




                                                                @cczona


Sunday, February 24, 13
Required   Autosuggest             Optional
                      Checkbox       Minimal Suggest                 Textarea
                      Radio                                              Text
                      Select




                                                                                @cczona


Sunday, February 24, 13

When there's a subset of values that you're most interested in, do minimal suggest instead.
Auto suggest using just the handful of values you care about. Structure from those who want
to give it, free form to incite expressiveness in those who want THAT.
Unguided Text
                          Of those who use MetaFilter's gender field,
                           40% of responses are: f, m, female, male.




Sunday, February 24, 13

[read]
So structured data IS there. This can be a balanced solution in many cases where you're
willing to tolerate some ambiguity. Of course there are tradeoffs.
Data quantity is lower. Freed to opt out of proving personal info, many do.
On the other hand, data quality should improve.
Optional Select
                          60% of Facebook users select a relationship status




Sunday, February 24, 13

It's fine to mix and match here. Find the right approach for your users and your app's
business objectives. Facebook, for instance, makes relationship status completely optional,
but coercive for those who do opt-in to setting a value. Most users do opt-in. 60% of them
select a relationship status.
We want everyone to
                  feel excited what we've
                            built

                                        @cczona


Sunday, February 24, 13

The bottom line is that [read]
We want users to feel
                     passionate about their
                          involvement

                                              @cczona


Sunday, February 24, 13

[read]
Analytics, investments,
                  & monetization are
                based on a premise that
                    data is accurate
                                                                              @cczona


Sunday, February 24, 13

[read!!!]

 BUT the data has been collected by coercive approaches, the RISK is that--
Garbage


                                                                               @cczona


Sunday, February 24, 13

this premise is garbage. Some people are lying, because lying has been made requirement
for getting past the barriers. So conclusions drawn from that bad data can misdirect
decision-making about the next stage of development.
Required     Guided             Discretionary
                      Checkbox        Corrective                         Textarea
                      Radio                                                  Text
                      Select




                                                                                     @cczona


Sunday, February 24, 13

The restrictive options, that stuff at bottom left, those don't actually have to be marked
"required".
t.string "gender",
               ! ! ! ! :null => false,
               ! ! ! ! :default => "female",
               ! ! ! ! :limit =>6

                                                                                    @cczona


Sunday, February 24, 13

But the way we setup schema often embeds assumptions that we should, and we will. So we
do. A field that's not allowed to be null is destined to be mandatory. A field that sets a very
short length is asserting that any reasonable value is going to fit within it. This migration
implies "You're either male or you're female. Transgender is not a reasonable value." If you're
transgender, you'll wind up being coerced into a response that's inauthentic.
t.string "gender"




                                                                                @cczona


Sunday, February 24, 13

BOOM. This is foundation for a whole different user experience. And the cool ninja move
was that we decided to do nothing.
Make this stuff flexible upfront. Optimize storage later. Decide what's valid later.
Required         Guided               Optional
                      Checkbox            Alteration                     Textarea
                      Radio                                                  Text
                      Select




                                                                                     @cczona


Sunday, February 24, 13

So there you have it: a discretionary field. Whether to respond is left up to the user.
t.string "relationship_status",
               ! ! ! ! :null => true




                                                                                   @cczona


Sunday, February 24, 13

As developers, we may upon THIS expression as redundant, completely unnecessary. Duh,
null is true by default. But making that explicit is a communication to the team and to your
future self. It's a statement of intent. It's documenting a product decision.
@cczona


Sunday, February 24, 13
Facebook
                          Single
                          In a relationship
                          Engaged
                          Married
                          It's complicated
                          Open relationship


                                                                                   @cczona


Sunday, February 24, 13

...What would a canonical set of relationship statuses look like...? Three years ago Facebook
figured this list was pretty good. Arguably pretty progressive too, right? Users disagreed.
Strongly.
Facebook
                          Single                     Widowed
                          In a relationship          Separated
                          Engaged                    Divorced
                          Married                    Civil union
                          It's complicated           Domestic partnership
                          Open relationship


                                                                              @cczona


Sunday, February 24, 13

Under pressure, Facebook nearly doubled the options in just two years time.
Google+
                          Single                      Separated
                          In a relationship           Divorced
                          Engaged                     Civil union
                          Married                     Domestic partnership
                          It's complicated            I don't want to say
                          Open relationship
                          Widowed
                                                                                   @cczona


Sunday, February 24, 13

While Google+ has largely adopted that list, it has not included Separated or Divorced.
Notice that they also added something: choice. Opt out of labeling.
@cczona


Sunday, February 24, 13

Allowing users to identify their relationships with labels of greater personal significance...That's being driven
by people rejecting a user experience that isn't working for them.
@cczona


Sunday, February 24, 13


How did some status seem universal, while others weren't? Naming a thing creates scope. The assumed
validity of a field's values get constrained as soon as the field is named.
Marital Status?
                          Single                        Separated
                          In a relationship             Divorced
                          Engaged                       Civil union
                          Married                       Domestic partnership
                          It's complicated              I don't want to say
                          Open relationship
                          Widowed
                                                                                      @cczona


Sunday, February 24, 13

"Marital status" for instance, might lead to a list such as this. In which one is assumed to be
either unmarried, preparing to be married, currently married, or formerly married.
Relationship Status?
                          Single                       Separated
                          In a relationship            Divorced
                          Engaged                      Civil union
                          Married                      Domestic partnership
                          It's complicated             I don't want to say
                          Open relationship
                          Widowed
                                                                                    @cczona


Sunday, February 24, 13

Whereas "relationship status" might lead to a list more like this one. In which one either has
a current relationship -- or is defined by the absence of any.

But people's lives aren't actually arranged like these. We go through life experiencing many of
these. And new status doesn't always leave old ones behind.
Singleness Status?




                                                                                  @cczona


Sunday, February 24, 13

If you change the name, you shift the paradigm and possibilities. There's important
difference in these what these collect set out to measure. Naming fields -- With great
specificity, upfront. --Makes analyses more powerful, later.
Frustrating. I like to be truthful, and "It's
               Complicated" is really deceiving. It is not
               complicated. I am separated from my
               husband, who I am still legally married to.
                                                                        —Facebook user




                                                                                   @cczona


Sunday, February 24, 13

And some people really do have more than one relationship status at a time.
@cczona


Sunday, February 24, 13

Who's already spotted the fatal flaw in this one?

This is what happens when we try to throw more labels at the problem instead of examining
the assumptions in the database schema. An open relationship is definitionally a 1:Many join
— WITH the usual engineering understanding, that is: that actual number of relationships
may be 0, 1, OR many. This is Facebook failing at modeling relationships in a _relational
database_. The schema forces the user to choose: LOOK evasive or BE inauthentic.
Modeling the real
                          world is complex and
                               that's okay.

                                                 @cczona


Sunday, February 24, 13

ONE
Assuming we know
                             who users are
                               surrenders
                             opportunity to
                          learn who they are.
                                                                                   @cczona


Sunday, February 24, 13

TWO [read] Early constraints in schema NET crappy, misleading data.
[beat]
So keep constraints out of user schema, at least at first. Gather enough initial response to do
some data mining. Watch that data for a while. Keep an eye out for emergent trends. What
DISCOVERIES can you make?
More freeform
                           won't kill us.


                                            @cczona


Sunday, February 24, 13

THREE
Quality
                              Specificity
                               Loyalty

                                                                                  @cczona


Sunday, February 24, 13

Data quality improves when lies are merely optional, not required.
Data that's rich and specific. So we can unearth patterns that are undetectable when data is
generic. We can discover. We can adapt.
When we show trust in people, they feel good about placing trust in us.
Their response to all this? Engagement. Passion. Loyalty.
@cczona


Sunday, February 24, 13

THOSE are foundations for great user experiences.
Image Credits
                Postsecret          Flickr

                Facebook            FetLife

                OKCupid             Kotangle

                Google+             cutestpaw.com

                Metafilter           hdwallpapers.in

                Diaspora            xkcd
                                                      @cczona


Sunday, February 24, 13
Resources
                  • “Disalienation: Why Gender is a Text Field on Diaspora”               • "Recommendations for Inclusive Data Collection of Trans
                                                                                            People"

                  •   “Gender & Drop Down Menus”
                                                                                          • "Gay Marriage: The Database Engineering Perspective"
                  • “Sex & Gender”
                                                                                          • "American Religious Identification Survey, Summary Report
                                                                                            2009"
                  • “Bucket Gender”
                                                                                          • "Falsehoods Programmers Believe About Names"
                  •   "Linguistic Potluck: Crowdsourcing Internationalization in Rails"

                                                                                          • "Your Last Name Contains Invalid Characters"
                  • "Does Facebook Hurt Relationships?"
                                                                                          • Spanish Names
                  •   "Facebook Adds LGBT-Friendly Relationship Status Options"

                                                                                          • Chinese Names
                  • "Facebook Targeting by Relationship Status & Workplace"
                                                                                          • Database normalization
                  •   "Your Facebook Relationship Status: It's Complicated"

                                                                                          • Sociological normalization
                  • "Redesigning the Country Selector"

                                                                                                                                                       @cczona


Sunday, February 24, 13
Many Thanks
                             DevChix
                           Yoz Grahame
                           Michele Titolo
                           Heather Rivers
                           Chiu-Ki Chan
                             Sarah Mei
                                SFSI

                                            @cczona


Sunday, February 24, 13
Get in Touch

                             Carina C. Zona
                                   @cczona
                               http://cczona.com
                              cczona@gmail.com
                          http://slideshare.net/cczona
                          http://linkedin.com/in/cczona
                                                          @cczona


Sunday, February 24, 13

More Related Content

More from Carina C. Zona

Consequences of an Insightful Algorithm
Consequences of an Insightful AlgorithmConsequences of an Insightful Algorithm
Consequences of an Insightful AlgorithmCarina C. Zona
 
Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three
 Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three
Converged Cloud Computing That's Secure, Fast, or Cheap: Pick ThreeCarina C. Zona
 
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...Carina C. Zona
 
Debugging Tech’s Socioeconomic Class Issues [Madison+ Ruby Conf 2014]
Debugging Tech’s Socioeconomic Class  Issues [Madison+ Ruby Conf 2014]Debugging Tech’s Socioeconomic Class  Issues [Madison+ Ruby Conf 2014]
Debugging Tech’s Socioeconomic Class Issues [Madison+ Ruby Conf 2014]Carina C. Zona
 
Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Carina C. Zona
 
Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Carina C. Zona
 
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...Carina C. Zona
 
Hacking for Sex Education
Hacking for Sex EducationHacking for Sex Education
Hacking for Sex EducationCarina C. Zona
 
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]Carina C. Zona
 

More from Carina C. Zona (11)

Biometric unsecurity
Biometric unsecurityBiometric unsecurity
Biometric unsecurity
 
Consequences of an Insightful Algorithm
Consequences of an Insightful AlgorithmConsequences of an Insightful Algorithm
Consequences of an Insightful Algorithm
 
Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three
 Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three
Converged Cloud Computing That's Secure, Fast, or Cheap: Pick Three
 
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
Doctor, Lawyer, Poker Player, Physicist: The Best Engineers We're Not Competi...
 
Debugging Tech’s Socioeconomic Class Issues [Madison+ Ruby Conf 2014]
Debugging Tech’s Socioeconomic Class  Issues [Madison+ Ruby Conf 2014]Debugging Tech’s Socioeconomic Class  Issues [Madison+ Ruby Conf 2014]
Debugging Tech’s Socioeconomic Class Issues [Madison+ Ruby Conf 2014]
 
What Is ZeroVM
What Is ZeroVMWhat Is ZeroVM
What Is ZeroVM
 
Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]
 
Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]
 
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...
Full Stack & Full Circle: What the Heck Happens In an HTTP Request-Response C...
 
Hacking for Sex Education
Hacking for Sex EducationHacking for Sex Education
Hacking for Sex Education
 
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

Schemas for the Real World [RubyConf AU 2013]

  • 1. Schemas for the Real World Carina C. Zona @cczona Sunday, February 24, 13 [As Keith noted,] in addition to being a developer, I'm also a sex educator.
  • 2. —xkcd #940 @cczona Sunday, February 24, 13 I think a lot about how the two overlap. They do. Quite a lot
  • 3. Imagine walking through the world knowing that everyone’s first assumptions about how you see yourself, who you love, and what feels right for you are completely wrong. Now imagine signing up for a cool website, and then being required to select an option from a drop-down menu that doesn’t include anything that represents you....[Y]ou’ll feel defeated.You’ll want to argue that whatever they think they’re learning from that drop-down menu, it’s not really true.You’ll want to tell them that they’re adding to your humiliation by making you do this.You’ll want to tell them that they’re missing a huge part of you… —Sarah Dopp @cczona Sunday, February 24, 13
  • 4. Female Male * * @cczona Sunday, February 24, 13
  • 5. Married Divorced In a Relationship It's Complicated Widowed Single @cczona Sunday, February 24, 13
  • 6. Straight Gay Bisexual Pansexual Asexual @cczona Sunday, February 24, 13
  • 8. @cczona Sunday, February 24, 13 Users are giving pushback to assumptions that leave them out. Social apps, in particular, are being pressed to adjust. Facebook, Google, and others have been dealing with these questions for years and are still working it out. So if you feel out of depth, you are not the only one.
  • 9. Sociological Normalization Construction of an idealized norm @cczona Sunday, February 24, 13 When developers talk about normalization, we're talking about databases. But when dealing with human attributes, we often wind up pursuing a different cause: sociological normalization. [read] Conflating the two works fine if you only want users from among the select few who belong to the idealized norm. But most of us are going for broad userbase.
  • 10. Database Normalization Mirror real-world concepts and their interrelationships. @cczona Sunday, February 24, 13 What we lose track of is one of the core objectives of database normalization. We're supposed to [read]. When the database is in tension with people's own, real world -- then it's not people who need to be flexible.
  • 11. @cczona Sunday, February 24, 13 Why IS this hard? Because at first glance, this stuff looks so easy. It's just forms, right? We've done those a million times before. But we get tripped up by some flawed premises:
  • 12. Gender is one of those things everyone thinks they understand, but most people don't. Like "Inception". — Sam Killerman @cczona Sunday, February 24, 13 First, a premise that deeply personal stuff about humans can be reduced to lists.
  • 13. 'Hey, this is just a system I can figure out easily!' is also a problem among engineers first diving into the stock market. —xkcd #592 @cczona Sunday, February 24, 13 Second, assumptions that canonical lists for these exist. Or are at least, SURELY, must be creatable.
  • 14. <option value="1">Mr</option> <option value="18">Dame</option> <option value="39">King of Kings and Lord <option value="2">Mrs</option> <option value="19">Chief</option> of Lords</option> <option value="3">Miss</option> <option value="20">Sister</option> <option value="40">Conquering Lion of the <option value="4">Ms</option> <option value="21">Reverend</option> Tribe of Judah</option> <option value="5">Dr</option> <option value="22">Major</option> <option value="41">Elect of God and Light <option value="6">Professor</option> <option value="23">Other</option> of this World</option> <option value="7">The Rt Revd Dr</option> <option value="24">Cllr</option> <option value="42">His Own Divine <option value="8">The Most Revd</option> <option value="25">Sir</option> Majesty</option> <option value="9">The Rt Revd</option> <option value="26">Rt Hon Lord</option> <option value="43">First Ancient King of <option value="10">The Revd Canon</ <option value="27">Rt Hon</option> Creation</option> option> <option value="28">The Lord </option> <option value="44">King Alpha</option> <option value="11">The Revd</option> <option value="29">Viscount</option> <option value="45">Queen Omega</option> <option value="12">The Rt Revd <option value="30">Viscountess</option> <option value="46">Beginning with Our End Professor</option> <option value="31">Baroness</option> and First with Our Last</option> <option value="13">The Ven</option> <option value="32">Captain</option> <option value="47">Protector of All Human <option value="14">The Most Revd Dr</ <option value="33">Master</option> Faith</option> option> <option value="34">Very Revd</option> <option value="48">Ruler of the <option value="16">Rabbi</option> <option value="35">Lady</option> Universe</option> <option value="17">Canon</option> <option value="38">MP</option> <option value="49">Dude</option> @cczona Sunday, February 24, 13 And the third problem is our faith that the first two problems here can be easily solved. Just add more list items!
  • 15. "Seeing more than 20 uncategorized options can be bewildering…" —Smashing Magazine @cczona Sunday, February 24, 13 So that's not gonna work. Also, it risks looking like a dumbass...
  • 16. Social Networks Sunday, February 24, 13 So here's the next flawed premise: that we intuitively understand the nature of social networks. Stepping aside from how "social networking" has come to be implemented as technology -- what IS a social network? What is it in purely human terms?
  • 17. Social network Individuals and the dyadic ties between them. Interactions within a social group of exactly two people. @cczona Sunday, February 24, 13 [slide] That's the real life that our apps are meant to replicate and build upon. One-on-one. As personal as our social selves get. In social, identity is a dependency.
  • 18. Developer & user are in dyad too How can I be better 1:1 partner with this person who… • is a current user • I hope will become a user @cczona Sunday, February 24, 13 As developers, we build -- or break -- community with each line of code. What 1:1 relationships are we fostering between the individual and the app? What relationships are we inhibiting between individuals?
  • 19. In real life "I know your personhood better than you" sounds presumptuous @cczona Sunday, February 24, 13
  • 20. In real life sounds presumptuous @cczona Sunday, February 24, 13
  • 21. In real life "Who you are is invalid" sounds arrogant @cczona Sunday, February 24, 13
  • 22. In real life sounds arrogant @cczona Sunday, February 24, 13
  • 23. In real life "Your existence isn't possible" sounds clueless @cczona Sunday, February 24, 13
  • 24. In real life sounds clueless @cczona Sunday, February 24, 13
  • 25. @cczona Sunday, February 24, 13 It's not what we set out to do. It's not the community we seek to build. We want to create things that feel cutting edge -- not that seem out of touch with modern reality.
  • 26. Be conservative in what you do, be liberal in what you accept from others. -Postel's Law @cczona Sunday, February 24, 13 [READ]
  • 27. How do we bring modern realities into the data, views, logic? @cczona Sunday, February 24, 13 How DO we bring modern realities into the data, views, and logic...? We start at the schema.
  • 28. @cczona Sunday, February 24, 13 As developers, we're tugged in two directions: keep the codebase manageable, yet design for modern complexity.
  • 29. Get schemas into alignment. @cczona Sunday, February 24, 13
  • 30. Mental Schema •Set of pre-conceived ideas •Framework for representing some aspect of the world •System of organizing & perceiving new information. @cczona Sunday, February 24, 13 There are two kinds of schema. [read]
  • 31. Database Schema •Structure described in the database's language •Blueprint for database construction •Describes how the real world is being modeled @cczona Sunday, February 24, 13 Database schemas are basically the same thing. It's a mental schema translated into blueprints for a database.
  • 32. create_table "users", :force => true do |t| t.string "username" t.string "email" t.string "password" end @cczona Sunday, February 24, 13 When you use Rails generate scaffold or Rails generate model, it creates a migration. Maybe you created something like this, for instance. Those migrations ultimately get translated into a unified schema to be used by the environment's database.
  • 33. @cczona Sunday, February 24, 13 These are, simply, frontend manifestations of someone's mental schema.
  • 34. Schemas are foundation for expressing things deeply intimate. @cczona Sunday, February 24, 13
  • 35. Schemas are foundation for expressing self-image. @cczona Sunday, February 24, 13
  • 36. Schemas are foundation for expressing identity. @cczona Sunday, February 24, 13
  • 37. Schemas are foundation for expressing important relationships. @cczona Sunday, February 24, 13
  • 38. Schemas are foundation for expressing values. @cczona Sunday, February 24, 13
  • 39. Schemas are foundation for expressing spirit, creativity, uniqueness. @cczona Sunday, February 24, 13
  • 40. Schemas define the user experience. @cczona Sunday, February 24, 13 Schemas define user experience.
  • 41. & UX Our schemas are leaving people behind. @cczona Sunday, February 24, 13 [read] We can fix that.
  • 42. "What benefit will the user notice?" @cczona Sunday, February 24, 13 When developing a schema that's going to ask a person about their experiences, feelings, sense of self, there isn't a single "right way" I can tell to do this. What we can do is evaluate tradeoffs, and ask "What benefit will the user notice?" That's not equivalent to "How will the user benefit?", a question that grants too much latitude for assuming that what we want is of course to their benefit because it's gonna help us deliver a product that's Awesome.
  • 43. Evaluating from user perspective gives us focus. @cczona Sunday, February 24, 13 [read]
  • 44. Coerced Guided Discretionary Restricted Corrective Freeform @cczona Sunday, February 24, 13 There's no point on this chart where everybody is seeing maximum benefit. So let's look at the choices.
  • 45. Coerced Guided Discretionary Checkbox Corrective Freeform Radio Select @cczona Sunday, February 24, 13 Checkboxs, radio buttons, and select menus imply that all possible values are represented. Hey user, just pick the right one, (or ones). It's real world being rejected because it didn't happen to look like our mental schema.
  • 46. Coerced Guided Discretionary Checkbox Corrective Textarea Radio Text Select @cczona Sunday, February 24, 13 Checking a box is a one step action. Entering a text string is not. So a freeform solution such as a textarea or text field isn't automatically exciting. Nevertheless, a freeform field can deliver striking benefit to users.
  • 47. 11 years 11 years @cczona Sunday, February 24, 13 At MetaFilter, gender has been a text field for over a decade.
  • 48. …the early crowd at MeFi were often programmers and they hated the idea of "dirty" data collection… —Matt Haughey, founder @cczona Sunday, February 24, 13 Initially, there were some who shuddered at the thought.
  • 49. All girl Dangly bits XY Chicklet Braid runner Innie not outie Fella Convex Fembot Sideburns Alto Ambisextrous It depends Member of the MYOB patriarchy @cczona Sunday, February 24, 13 For about 5 seconds. Then they jumped on board. Because they could be creative and silly.
  • 50. I speak using the 50% quintessential male gender, when tomboy, 50% total required by girly-girl language Gender bo bender M, but known to be banana fanna fo flexible lender fee fi mo @cczona Sunday, February 24, 13 AND because they could express this THING about themselves fully. With authentic voice.
  • 51. …it was one of the earliest indications I'd landed in the right place. —MeFi user @cczona Sunday, February 24, 13 That text field grew into a beloved institution. What you as a user put into that field says something revealing who you are. That you're allowed to put in anything -- or put in nothing -- says something revealing about what MetaFilter is meant to be for.
  • 52. 11 years 8 years 11 years 4 years @cczona Sunday, February 24, 13 That schema's trust in users was the foundation for the users to ASK to share themselves even more.
  • 53. @cczona Sunday, February 24, 13 Today MetaFilter users are trusted with many free-form fields, including ones most developers instinctually constrain or thoroughly validate.
  • 54. @cczona Sunday, February 24, 13 Nonsensical values? Hell yeah, go for it. Field values that blatantly contradict each other? No objection to that either. The message is: hey, user, we get that this is YOUR OWN HOME. Make it as comfortable, personal, and messy as you want to. WE, as developers, can work with that.
  • 55. Social Research Sunday, February 24, 13 When collecting data on people, you're in a different realm. Social sciences. If you want to run useful analytics about personal attributes and behavior, then data collection needs to meet at least two minimum criteria:
  • 56. Exhaustive Every possible option Sunday, February 24, 13 A field's values must include every possible option.
  • 57. Mutually Exclusive No overlap exists between them Sunday, February 24, 13 And the field's options must be mutually exclusive. How many social apps have both of those bare minimum criteria covered?
  • 58. @cczona Sunday, February 24, 13 We've seen this one enough. At least that set of values seems covered fully.
  • 59. @cczona Sunday, February 24, 13 But it's not.
  • 60. @cczona Sunday, February 24, 13 Still not... We'll never get there by adding more list items. But that's fine. Because instead we can choose to look at human data from a different perspective...
  • 61. Data doesn’t have to be for analysis. @cczona Sunday, February 24, 13 It's easy to get into the habit of structuring data for easy analysis. But step back. Wallow in the user's perspective:
  • 62. Data can be sheer expressiveness. @cczona Sunday, February 24, 13 That data can be sheer expressiveness. Data that has character, individualism, distinctiveness.
  • 64. - = select_tag 'person[profile][gender]', options_for_select( ["","Female","Male"] ) + = profile.text_field :gender @cczona Sunday, February 24, 13 More recently, years ago Diaspora's Sarah Mei turned gender into a text field there too.
  • 65. @cczona Sunday, February 24, 13 Just like on MetaFilter, users had fun with it.
  • 66. Some developers were not amused @cczona Sunday, February 24, 13 Some developers didn't. One of the major complaints raised was the affect on internationalization of gendered pronouns.
  • 67. Gendered pronouns are a rat hole. @cczona Sunday, February 24, 13 And here's what I've got to say to that: Gendered pronouns are a rat hole. It gets hella messy, hella fast, when you deal with internationalization.
  • 68. The role of gender in society is the most complicated thing I’ve ever spent a lot of time learning about, and I’ve spent a lot of time learning about quantum mechanics. —Randall Munroe, xkcd @cczona Sunday, February 24, 13 That's a plan that comes with a level of complexity that English hasn't wrapped its head around. In a lot of non-English languages, grammatical gender and what you and I would call "gender" are independent of each other. So internationalization based on "Gender" will screw you over. Think about how to avoid dealing with gendered pronouns at all. If it's a requirement, then the way to cope is to ask.
  • 69. "Which pronouns do you prefer?" (masculine) he/him/himself/his/his (feminine) she/her/herself/hers/her (androgynous) they/them/themself/theirs/their (inanimate) it/it/itself/its/its <full name> <fn>/<fn>/<fn>/<fn>'s/<fn>'s @cczona Sunday, February 24, 13 Randall Munroe, best known for xkcd, has examined the problem several times for English language projects. Asking, straight up, "Which Pronouns Do You Prefer?" is truly the best he could come up with. Oh, and as complicated as THIS matrix it, it grows even BIGGER in many other languages. Avoid. Or ask. Don't let pronouns become the driving force for bad UX.
  • 70. @cczona Sunday, February 24, 13 As developers, we have a vision of what a good codebase should be and not be.
  • 71. What we want What we get • Structured • Validations, exceptions • Predictable • Conditionals, partials • Relational • Premature optimization • Indexed • Cultural variability • Exhaustive? • Individual POV • Moving target • Easy analytics • Decisions based on false • Data-driven decisions premises @cczona Sunday, February 24, 13 [READ!!] In the most sensible of ways, we often arrive at solutions that are factually truthy while far removed from real life utility.
  • 72. "What is your religion, if any?" @cczona Sunday, February 24, 13 ARIS is the largest ongoing survey of Americans' religious identification. It asks this simple, OPEN-ENDED question: [slide] Which nets over 100 unique answers. Which, if you're making a form based on that, is tricky. There's no form element that makes it easy for our users to pick themselves out of a list of so many possibilities.
  • 73. @cczona Sunday, February 24, 13 ARIS found, though, that these could be compressed into 13 major categories. More manageable list, right? We could use that for a form. But, eh, a lot of those are edge cases. We'd rather want to focus on genuinely major groupings.
  • 74. What is your religion, if any? Christian 76% Other 4% None 15% Don't Know or Refused 5% @cczona Sunday, February 24, 13 Which brings us down to this. At least a quarter of Americans are Christian. Done. Every other religion would just be clutter. Edge cases. And then there's this sort of crummy data with it. We'd probably assign nil value for more than one of these categories, right?
  • 75. What is your religion? Christian 76% Other 4% n/a 20% @cczona Sunday, February 24, 13 Fixed. Which focuses attention on a problem here: 1 in 5 are not useful answers from an advertiser's perspective or for out own analytics. The NILS -- gotta go.
  • 76. What is your religion? Christian 76% Other 24% @cczona Sunday, February 24, 13 So what we're left with is a good, clear, list. It covers ALL the big stuff. When you get reductive enough, for Americans: religion it a binary. Which, from a storage standpoint, is great. Booleans! Score.
  • 77. Religion: @cczona Sunday, February 24, 13 But we don't do THIS. It covers the biggest categories. But oh how it leaves people out.
  • 78. People aren't edge cases. @cczona Sunday, February 24, 13 People aren't edge cases. And they're pushing back on apps that treat them that way.
  • 79. @cczona Sunday, February 24, 13 So reductive has big problems. So does scaling upward:
  • 80. Balancing between approaches @cczona Sunday, February 24, 13 As engineers, it's instinctually uncomfortable to step away from this. To deliberately NOT structure data for easy analysis. I feel ya. I really do. This freaks me too. But, again, the foundational question is "What benefit will the user notice?"
  • 81. @cczona Sunday, February 24, 13 And if necessary, we CAN strike a middleground. This is where guided response comes in. Autosuggest.
  • 82. Required Autosuggest Optional Checkbox Alteration Textarea Radio Text Select @cczona Sunday, February 24, 13
  • 83. Required Autosuggest Optional Checkbox Minimal Suggest Textarea Radio Text Select @cczona Sunday, February 24, 13 When there's a subset of values that you're most interested in, do minimal suggest instead. Auto suggest using just the handful of values you care about. Structure from those who want to give it, free form to incite expressiveness in those who want THAT.
  • 84. Unguided Text Of those who use MetaFilter's gender field, 40% of responses are: f, m, female, male. Sunday, February 24, 13 [read] So structured data IS there. This can be a balanced solution in many cases where you're willing to tolerate some ambiguity. Of course there are tradeoffs. Data quantity is lower. Freed to opt out of proving personal info, many do. On the other hand, data quality should improve.
  • 85. Optional Select 60% of Facebook users select a relationship status Sunday, February 24, 13 It's fine to mix and match here. Find the right approach for your users and your app's business objectives. Facebook, for instance, makes relationship status completely optional, but coercive for those who do opt-in to setting a value. Most users do opt-in. 60% of them select a relationship status.
  • 86. We want everyone to feel excited what we've built @cczona Sunday, February 24, 13 The bottom line is that [read]
  • 87. We want users to feel passionate about their involvement @cczona Sunday, February 24, 13 [read]
  • 88. Analytics, investments, & monetization are based on a premise that data is accurate @cczona Sunday, February 24, 13 [read!!!] BUT the data has been collected by coercive approaches, the RISK is that--
  • 89. Garbage @cczona Sunday, February 24, 13 this premise is garbage. Some people are lying, because lying has been made requirement for getting past the barriers. So conclusions drawn from that bad data can misdirect decision-making about the next stage of development.
  • 90. Required Guided Discretionary Checkbox Corrective Textarea Radio Text Select @cczona Sunday, February 24, 13 The restrictive options, that stuff at bottom left, those don't actually have to be marked "required".
  • 91. t.string "gender", ! ! ! ! :null => false, ! ! ! ! :default => "female", ! ! ! ! :limit =>6 @cczona Sunday, February 24, 13 But the way we setup schema often embeds assumptions that we should, and we will. So we do. A field that's not allowed to be null is destined to be mandatory. A field that sets a very short length is asserting that any reasonable value is going to fit within it. This migration implies "You're either male or you're female. Transgender is not a reasonable value." If you're transgender, you'll wind up being coerced into a response that's inauthentic.
  • 92. t.string "gender" @cczona Sunday, February 24, 13 BOOM. This is foundation for a whole different user experience. And the cool ninja move was that we decided to do nothing. Make this stuff flexible upfront. Optimize storage later. Decide what's valid later.
  • 93. Required Guided Optional Checkbox Alteration Textarea Radio Text Select @cczona Sunday, February 24, 13 So there you have it: a discretionary field. Whether to respond is left up to the user.
  • 94. t.string "relationship_status", ! ! ! ! :null => true @cczona Sunday, February 24, 13 As developers, we may upon THIS expression as redundant, completely unnecessary. Duh, null is true by default. But making that explicit is a communication to the team and to your future self. It's a statement of intent. It's documenting a product decision.
  • 96. Facebook Single In a relationship Engaged Married It's complicated Open relationship @cczona Sunday, February 24, 13 ...What would a canonical set of relationship statuses look like...? Three years ago Facebook figured this list was pretty good. Arguably pretty progressive too, right? Users disagreed. Strongly.
  • 97. Facebook Single Widowed In a relationship Separated Engaged Divorced Married Civil union It's complicated Domestic partnership Open relationship @cczona Sunday, February 24, 13 Under pressure, Facebook nearly doubled the options in just two years time.
  • 98. Google+ Single Separated In a relationship Divorced Engaged Civil union Married Domestic partnership It's complicated I don't want to say Open relationship Widowed @cczona Sunday, February 24, 13 While Google+ has largely adopted that list, it has not included Separated or Divorced. Notice that they also added something: choice. Opt out of labeling.
  • 99. @cczona Sunday, February 24, 13 Allowing users to identify their relationships with labels of greater personal significance...That's being driven by people rejecting a user experience that isn't working for them.
  • 100. @cczona Sunday, February 24, 13 How did some status seem universal, while others weren't? Naming a thing creates scope. The assumed validity of a field's values get constrained as soon as the field is named.
  • 101. Marital Status? Single Separated In a relationship Divorced Engaged Civil union Married Domestic partnership It's complicated I don't want to say Open relationship Widowed @cczona Sunday, February 24, 13 "Marital status" for instance, might lead to a list such as this. In which one is assumed to be either unmarried, preparing to be married, currently married, or formerly married.
  • 102. Relationship Status? Single Separated In a relationship Divorced Engaged Civil union Married Domestic partnership It's complicated I don't want to say Open relationship Widowed @cczona Sunday, February 24, 13 Whereas "relationship status" might lead to a list more like this one. In which one either has a current relationship -- or is defined by the absence of any. But people's lives aren't actually arranged like these. We go through life experiencing many of these. And new status doesn't always leave old ones behind.
  • 103. Singleness Status? @cczona Sunday, February 24, 13 If you change the name, you shift the paradigm and possibilities. There's important difference in these what these collect set out to measure. Naming fields -- With great specificity, upfront. --Makes analyses more powerful, later.
  • 104. Frustrating. I like to be truthful, and "It's Complicated" is really deceiving. It is not complicated. I am separated from my husband, who I am still legally married to. —Facebook user @cczona Sunday, February 24, 13 And some people really do have more than one relationship status at a time.
  • 105. @cczona Sunday, February 24, 13 Who's already spotted the fatal flaw in this one? This is what happens when we try to throw more labels at the problem instead of examining the assumptions in the database schema. An open relationship is definitionally a 1:Many join — WITH the usual engineering understanding, that is: that actual number of relationships may be 0, 1, OR many. This is Facebook failing at modeling relationships in a _relational database_. The schema forces the user to choose: LOOK evasive or BE inauthentic.
  • 106. Modeling the real world is complex and that's okay. @cczona Sunday, February 24, 13 ONE
  • 107. Assuming we know who users are surrenders opportunity to learn who they are. @cczona Sunday, February 24, 13 TWO [read] Early constraints in schema NET crappy, misleading data. [beat] So keep constraints out of user schema, at least at first. Gather enough initial response to do some data mining. Watch that data for a while. Keep an eye out for emergent trends. What DISCOVERIES can you make?
  • 108. More freeform won't kill us. @cczona Sunday, February 24, 13 THREE
  • 109. Quality Specificity Loyalty @cczona Sunday, February 24, 13 Data quality improves when lies are merely optional, not required. Data that's rich and specific. So we can unearth patterns that are undetectable when data is generic. We can discover. We can adapt. When we show trust in people, they feel good about placing trust in us. Their response to all this? Engagement. Passion. Loyalty.
  • 110. @cczona Sunday, February 24, 13 THOSE are foundations for great user experiences.
  • 111. Image Credits Postsecret Flickr Facebook FetLife OKCupid Kotangle Google+ cutestpaw.com Metafilter hdwallpapers.in Diaspora xkcd @cczona Sunday, February 24, 13
  • 112. Resources • “Disalienation: Why Gender is a Text Field on Diaspora” • "Recommendations for Inclusive Data Collection of Trans People" • “Gender & Drop Down Menus” • "Gay Marriage: The Database Engineering Perspective" • “Sex & Gender” • "American Religious Identification Survey, Summary Report 2009" • “Bucket Gender” • "Falsehoods Programmers Believe About Names" • "Linguistic Potluck: Crowdsourcing Internationalization in Rails" • "Your Last Name Contains Invalid Characters" • "Does Facebook Hurt Relationships?" • Spanish Names • "Facebook Adds LGBT-Friendly Relationship Status Options" • Chinese Names • "Facebook Targeting by Relationship Status & Workplace" • Database normalization • "Your Facebook Relationship Status: It's Complicated" • Sociological normalization • "Redesigning the Country Selector" @cczona Sunday, February 24, 13
  • 113. Many Thanks DevChix Yoz Grahame Michele Titolo Heather Rivers Chiu-Ki Chan Sarah Mei SFSI @cczona Sunday, February 24, 13
  • 114. Get in Touch Carina C. Zona @cczona http://cczona.com cczona@gmail.com http://slideshare.net/cczona http://linkedin.com/in/cczona @cczona Sunday, February 24, 13