"Blind Spots and Blub Attitudes" or "Hey White Tech Bros"

First off, I'm ostensibly a "tech bro." I hate the idea of "code artist" or "creative coder" or whatever. I don't embrace the identity of "tech bro," but I don't think I can shed it or mask it either. I'm a white guy who works in tech.

This post is for people in tech who get tripped up by the progressive politics that are influencing the tech scene. If you're already into that stuff, or aren't a white dude, this is really basic (and probably wrong) and may not interest you.

By all means, if you have a source you can trust that isn't like me (or you also/additionally?), listen to them, not me. I'm not the authority on this stuff, but after seeing this, I'm under the impression that some people might not really "get it" unless they hear it from people who look like them first. So... uh hey white dudes in tech.

Additionally, it's not anyone's job to explain their experience/existence. Fortunately, if you're a shy one, you can still know what goes on without actually asking anyone. People are already documenting some of what goes on. There are plenty of feminism 101 sites online that have nothing to do with tech, but the wiki is an interesting starting point if you're in tech.

This is a good watch if you're curious about what it feels like to be black in tech. He certainly doesn't speak for everyone, because no one does, but any honest and direct relaying of experience like this is extremely important if you want to learn about things outside of your what you know directly.

If you see that video or the incidents from the geek feminism wiki and your first instinct is to bristle, question, and defend what's going on, please keep reading. If your first instinct is to start harassing some people on twitter, please just leave the industry. I honestly try very hard to root this out during interviews and if I somehow miss it and we work together, I will try my best to get you fired. The bar is not that high. Just listen to people and try to improve. That's it.

So Paul Graham had this essay where he talks about a hierarchy of programming languages. In this hierarchy, people using a given language see worse/less powerful/abstract languages accurately, but they better/more powerful languages as abstract weirdness that doesn't apply to them. Why would you ever want language feature x, y or z? It's just abstract weirdness. So the argument is that you're stuck in a box, at your level of understanding.

Skill trees, matrices, and ladders have the same implication just by looking at them. Personally, I find those things kind of useful, but I completely understand how they're also exclusionary and intimidating to some people.

The ideas of being a "real programmer" and using a "real language" (or editor or whatever) are both stupid. There are jobs. There are people. Some people do things differently. Some teams and situations are more effective. Some people are a better fit for some teams, situations, and technologies. Sometimes technically proficient people are genuinely impossible to work with because they are absurdly deficient on "soft skills."

In any case, we've got plenty of frameworks to evaluate "hard skills" that are applied to languages, concepts, etc. Some of this is informed by academia. Too little of it has anything to do with job performance. Some of it has to do with tech interviewing.

For one really out there example of this, check out 2016 lambda conference's skill ladder. And the awesome take down of it:

Profunctor Optics
(Note: I first saw this image from aisamanra on twitter)

But for "soft skills," people don't tend to arrange things in this way. Part of this is that what is valuable to a company is often not the same as what a team or specific person finds valuable or comfortable. The other part is that arranging things like that doesn't really fit in with stories, identities, and feelings very well.

Let's pretend it does for a second. Rather than talking about soft skills generally though, let's just take tech conference harassment and pretend that we can make tiers of being a nice person as related to it.

Paul Graham, when looking at "less powerful" languages, describes it as "looking down the power continuum," with Lisp on top and machine language on the bottom. Here, rather than "power," let's think in terms of "awareness."

I'm going to assume that anyone reading this is beyond intentional, active harassment or worse. Without at least good intentions, I'm not sure how you might learn something about this. I don't think it will be important to you unless you actually care about people and how they feel.

So, assuming we all can see active, personal harassment of a stranger at a tech conference as a problem, let's say that's a point everyone can "look down on" in our hierarchy. So looking down the hierarchy, you might see the worst people as being adequately addressed by laws, just as you might see the low level machine language as being solved by compilers.

And that's as far as some people seem to get. After that, if you're not invested in this stuff (likely because it doesn't affect you directly), what comes after might seem complicated and scattered. So let's choose one issue: tshirts.

Only mens/"unisex" tshirts are available. You might think, "so? That's 80% of the people at this conference. Good enough," and that's not an impossible position to hold, until you listen to women and care about how they feel to a greater degree than what might be your default. But there are more men, right? Why should there be extra costs and special effort for women? Besides, you're not the conference organizer, so you didn't do it. Right?

"Looking up" the continuum, you might see this as not a real problem. Here's the thing: It's not a real problem for you. You think of yourself as the default. And apparently so do other people. The system works fine for you.

There are a ton of other issues that come up. "Ugh. Half of these presentations are 'soft talks.'" Yeah. Apparently not everyone is on board.

You're in exactly the position as someone who doesn't see more "powerful" languages as useful. Why would anyone need Lisp style macros? Why would you want monads? What's wrong with loosely typed languages? Why would you need OOP or functional programming? For loops are fine. Null is fine. If you don't understand what problems exist with coding at your "level" of programming language, you won't get what is offered by more powerful ones.

If you don't understand what problems exist with your "level" of empathy, you're similarly missing out. If you see Codes of Conduct as restrictive or threatening, you might be confused. Some parts might seem obvious, covering aspects of behavior that only belong to those "below" you, the totally monstrous, and probably aren't even at tech conferences. They totally are.

But other parts might seem abstract, draconian, or for people who are too fragile to handle anything uncomfortable. If you feel that way, let it sink in. These are things that people think are really important. Why would they think that way? If you rush to answer that they're different from you in bad ways, try to make a shift: These people have different experiences, and they have problems that you don't.

If you accept that despite never needing "Profunctor Optics," it's part of something important to people with different problems than you (that you might find hard to understand), you should also accept the same from non-technical experiences. People with different problems have different ideas. Some people don't understand the point of testing because they've never worked on something that complicated.

Here's the difference though. You can gain direct exposure to a complex code base that will be really hard to work with unless you have some tests. You can go down a functional programming rabbit hole* until you find the correct and interesting use of Profunctor Optics. You can't take that same approach with this stuff.

When you learn a new API, reading the docs is good, but things probably won't sink in until you see them in action. Until you run the code and see the inputs and outputs, you'll likely have some doubt. Often, I find the process of learning something new in programming looks more like trust than memorization. When it comes to whether or not x, y, or z issue in tech culture is a real problem, you're probably starting with a similar trust gap. And you might be completely reliant on yourself to close that gap by yourself most of the time, but in this case, you might not have the actual experience to close that gap yourself.

In software, you can verify how something works through testing it manually. Then you can write automated tests to speed this up. Similarly, with cultural positions, you first interrogate them with your own experiences, and then you're wired to speed that process up later.

What if your experiences do not give you any insight on the feelings of other people? Well, sometimes, your software depends on external systems, and in testing, you can create a mock that uses a reasonable set of inputs and outputs. If you listen to people, they will tell you (or even the whole internet) about things that happen and how they felt/responded to it.

What do you do in programming if your inputs don't match expected outputs? It's likely your code is actually depending on the date, or randomness, or some aspect of global state (sometimes called "the world") that you didn't account for. In programming, global variables are notoriously evil, right? So we can eliminate them, bring them into smaller scopes. Ultimately, we find some way to deal with them.

If you're talking about people, and expecting the same luxury, you're totally screwed. People are people, not hypothetical "pure" functions. There's a ton of implicit state, which includes the actual world as a giant global variable that is not in scope but still affects peoples' interpretation of events. Without realizing that people are likely dealing with all kinds of stuff that has nothing to do with you, you might just see an apparent mismatch between inputs and outputs. If someone just got doxxed and threatened for being a woman on the internet, they might not really want to explain anything about their "global state" to you, let alone have a conversation about you playing "devil's advocate" on the latest incident from the geek feminism wiki.

So how would you interact with those kinds of systems, ahem, people? Well, if you're listening, they tell you exactly what they want and do not. Are there exceptions? Hell yes. Do people not all want the same things? Hell yes. Should you rush to poke holes in things like conference policies that amount to ways people attempt to protect themselves physically and mentally? Hell no.

But isn't it a little out of control? There's an unprecedented amount of restriction applied to tech communities, right? Code doesn't care how you treat it, right? We should be breaking things and only the strong surv-

Be liberal in what you accept, and conservative in what you send. – RFC 1122 Requirements for Internet Hosts, Communication Layers

Obviously we need to ignore the political connotations of those terms. The point is to accept a lot of things from other people, but be reserved in what you give them. This is also called the "robustness principle." So how could we be more robust people? A code of conduct gives you ideas on how to limit what you say/how you act for the benefit of other people. Is expressing your opinion (to everyone, at a professional event) important enough to override other people's comfort, enjoyment, or sense of safety?

As for the other side of it (being liberal in what you accept), honestly, it's just believing people when they talk. If something doesn't seem to line up with your expectations (ie. how you would react), it's likely that they're dealing with all kinds of stuff you're unaware of. Again, RFC 1122 has a technical basis upon which you might consider if people examples aren't sinking in:

In general, it is best to assume that the network is filled with malevolent entities that will send in packets designed to have the worst possible effect. – RFC 1122 (again)

As far as believing people and trusting what they say as truth, just give it five minutes. Are you trying to refute their whole life's experience with your immediate gut reaction to their ideas?

Back to our "skill ladder" of knowledge, as demonstrated earlier (just as with testing external systems), gaining understanding of the issues that don't affect you directly is hard to trust. You're going to need to trust the experiences of others, and a general awareness of typical and terrible things people deal with is useful.

Really though, you'll have an easier time making friends with different types of people through applying the robustness principle. If your main interest in the continuum is to identify people who sit exactly next to you within it, you'll probably find yourself without anyone who can help you understand anything better than you do. Relying on the internet for this is useful to an extent, but without strong connections to people who feel differently than you, it's harder to develop genuine belief in their problems. Also, it's easy to binge on this stuff, and it can be depressing as hell (even as an outsider).

As far as personal or even professional relationships go, if no one's ever confided in you about discriminatory or scary things that have happened to them, that doesn't mean those things don't happen to people you know. It's more likely that you're just not someone people confide in with that type of information.

Although these are actually things to learn, please don't confuse this as being advice on how to "ascend the hierarchy" that puts you on the bottom and "victims" or "intersectional LGBT anarchist POC feminists" at the top. it's really not like that. This is something people get terribly wrong, and this is where the idea of a hierarchy completely breaks down.

There are things you won't be able to directly experience. And because you won't experience it directly, you won't have any of the (minor) "benefits" that come along with the really hard stuff, eg. you won't be able to credibly tell someone that "they don't know how hard it is to be a woman in a male dominated industry" or credibly use certain words without people thinking you're an asshole. If you're jealous about someone's "ability" to use particular words that you "can't" (Hint: You can say what you want, but some people will think you're an asshole. Hint 2: The 1st amendment is meant to protect speech against the state, not to guarantee everyone likes you), you're totally missing the point. There's no ladder here.

And yes, techie white males like me, it is our tendency to see a ladder to ascend, and this isn't dependent on political alignment. Games reinforce this idea (honestly, look at that lambda skill ladder again and tell me games have nothing to do with the top tier being called "Ice Thermagons"). Tech/hacker culture of gaining skills reinforces this idea. There really isn't a ladder to climb on social issues though. There's just people and experiences, and ideas about how to make everyone (eg. at tech conferences) feel safe, welcome, and relaxed.

You can find people who think there is a ladder that go through a lot of effort to demonstrate their position on it. Tough on crime/eye for an eye type positions or "I'm not a racist so I can/should be able to do x, y or z less significant, but still racist thing" are a couple of symptoms. These people are very hard to convince of anything to the contrary. If someone's settled in a life where they don't need empathy for day-to-day interactions with people different than them, it's very hard to convince them that they're missing anything. They're able to live without what, to them, might as well be profunctor optics.

More polite (and usually lefty) crews sometimes have the terminology and appearances down, but don't actually have anything invested in helping. Taken to an extreme, words of understanding and people who are not the "default" can become more like commodities than feelings and actual people.

I hope this is useful to someone who needs help seeing and removing the ladder, rather than being strictly performative on my part. If I screwed that up, and you're feeling charitable enough to let me know, thanks in advance.

* Note that I'm inclined to be dismissive of this "rabbit hole" because I don't know about any of my problems that would be solved by profunctor optics.