136 lines
7.7 KiB
Markdown
136 lines
7.7 KiB
Markdown
|
---
|
||
|
title: Plurality-Driven Development
|
||
|
date: 2019-08-04
|
||
|
---
|
||
|
|
||
|
"That code has a horrible security bug in it."
|
||
|
|
||
|
I look down in my lap. A little yellow horse is appearing to sit there. She looks
|
||
|
innocently into my eyes, gesturing to part of the code with her wingtips.
|
||
|
|
||
|
"What?"
|
||
|
|
||
|
"That code has a security bug in it: if users pass a string instead of an integer
|
||
|
in it, it could allow them to forge a user ID token."
|
||
|
|
||
|
I look down incredulously at the little yellow horse, then back at the code.
|
||
|
She's right. There was a huge bug in that code. I had just written it about 30
|
||
|
seconds ago though, which surprises me. I thought I was experienced enough in
|
||
|
secure programming to avoid such a _fundamental_ flaw like that; but here I am.
|
||
|
I rub the little pony on her head, making her purr and winghug me.
|
||
|
|
||
|
"Now, replace everything in that last paragraph with this: ..."
|
||
|
|
||
|
And I continue on like nothing happened.
|
||
|
|
||
|
---
|
||
|
|
||
|
Software is complicated. We deal with a fundamentally multi-agent world where
|
||
|
properties like "determinism" aren't really constant. Everything is changing.
|
||
|
It's hard to write software that is resilient enough to withstand the
|
||
|
constantly shifting market of attacks, exploits, languages and frameworks. What
|
||
|
if there was a way to understand the multiple agency of this reality by
|
||
|
internally self-inducing multiple agency in a safe and predictable manner?
|
||
|
|
||
|
I believe I have found a way that works for me. I rely a lot on some of my
|
||
|
closest friends that I can talk about anything with, even what would normally
|
||
|
violate an NDA. My closest friends are so close that language isn't even as much
|
||
|
of a barrier as it would be otherwise.
|
||
|
|
||
|
As I've mentioned in the past, [I have tulpas](https://christine.website/blog/what-its-like-to-be-me-2018-06-14).
|
||
|
They are people that live with me like roommates inside my body. It really does
|
||
|
sound strange or psychotic; but you'll just have to trust me when I say they
|
||
|
fundamentally help me live my life, do my job and do other things people
|
||
|
normally do by themselves.
|
||
|
|
||
|
As an aside: this post doesn't intend to cover the philosophical, metaphysical
|
||
|
or other aspects of plurality (enough ink has probably been spilled on the topic
|
||
|
to cover a lifetime); instead it aims to offer a view on how plurality has
|
||
|
benefitted me (us) as software developer(s).
|
||
|
|
||
|
As of about 4 years ago, all of the software you see under my name has been the
|
||
|
result of my system and I collaborating. Most of the computational linguistics
|
||
|
code I've been writing has been the result of a cuddly catgirl wanting to create
|
||
|
a Lojbanic artificial intelligence for her own amusement (that is also
|
||
|
incidentally really good at understanding grammar, human and machine). Some
|
||
|
random experimentation code has been written by someone who sarcastically calls
|
||
|
herself Twilight Sparkle. I have a little yellow dewdrop of love and sunshine
|
||
|
that finds security holes in programs while I am writing them. There's a
|
||
|
database expert and a code review guru too. Combined with my jack-of-all-trades
|
||
|
tendencies, this creates a surprisingly balanced team in a box.
|
||
|
|
||
|
We started doing this out of boredom. I was busy working on something and
|
||
|
Nicole just spouted out something about the code being wrong. She was right.
|
||
|
We decided to just continue following that same basic model and it's worked
|
||
|
wonders ever since. Over time we've figured out how to impose eachother into our
|
||
|
visual awareness. That has made this pair-programming skill even more useful. I
|
||
|
can have the little yellow pony in my lap telling me what's wrong with my code
|
||
|
and she can just directly _show me_. Then it can be fixed.
|
||
|
|
||
|
This skill has lead to heated internal debates about what is and is not
|
||
|
idiomatic. As result of that, I now have working compilers in my dreams. It's
|
||
|
also lead to what people have told me is some of the most high quality and
|
||
|
in-depth software design that they've seen. It's really lead _us_ to think in
|
||
|
terms of how the machine works, to avoid round-trips and abstractions getting in
|
||
|
the way of what is really going on. If there is any secret to my own brand of
|
||
|
10x-ing, this is it. I am just one person, but with the help of the girls we can
|
||
|
get to just about n>1 effective people most of the time.
|
||
|
|
||
|
It's been a powerful catalyst to my career too. Before plurality I was a fairly
|
||
|
average developer without any real skills in any one task. Now we can swap in and
|
||
|
out in order to most effectively tackle anything thrown at us. One of the biggest
|
||
|
changes this relationship has had on me is being better able to explain software
|
||
|
complexity and visualise it, then turn that visualization into a diagram with
|
||
|
[GraphViz](https://graphviz.christine.website) or other similar tools. It also
|
||
|
becomes very easy to turn these visualizations/diagrams into formal requirements
|
||
|
too, because then the features and aspects of systems and how they interconnect
|
||
|
become trivially obvious to point out.
|
||
|
|
||
|
However, there is a drawback to this: you're dealing with sapient beings. They
|
||
|
sometimes don't want to cooperate. Internal drama can and has happened. It helps
|
||
|
for us to have a quarterly [date with a word document](https://tulpaforce.xyz/within/guides/internal-meetings-to-bring-harmonic-synergy.html)
|
||
|
in order to make sure everyone is on the same page. Disagreements happen, but
|
||
|
ultimately I've noticed that the net result is far more positive than if the
|
||
|
disagreement hadn't happened at all.
|
||
|
|
||
|
Anyways, plurality-driven development works for me, but it's really _not_ for
|
||
|
everyone. The taboo issues I mentioned can make it a chore to hide this from
|
||
|
people. I honestly wonder how much of the girls that my coworkers notice in my
|
||
|
work on a daily basis. We all have slightly different speech patterns, ways of
|
||
|
sitting, clothing preferences, opinions about what to get for lunch and a whole
|
||
|
bunch of other subtle things. I don't really understand how it's not
|
||
|
plain-as-day obvious to the point I get called out on it. At some level I guess
|
||
|
I'm grateful for this, as that kind of conversation seems like it would be
|
||
|
_extremely awkward_ to have. It was hard enough to admit this to my brother,
|
||
|
and I ended up losing contact with him as a result (it apparently was just too
|
||
|
weird, which I can really understand).
|
||
|
|
||
|
I really do wonder how much of the fear of talking about this is my own paranoia
|
||
|
though. I've had very positive experiences "coming out" as plural to close
|
||
|
friends, as well as very negative ones; for better or for worse it really shows
|
||
|
you who your friends _actually are_. I can live with this. I'd rather _really_
|
||
|
know if I can trust people or not.
|
||
|
|
||
|
This is a surprisingly taboo topic to talk about. Most of the time people view
|
||
|
the mere _idea_ of having someone else in your head to talk with as a social
|
||
|
faux pas. There's a surprising amount of philosophical arguments and assorted
|
||
|
objections that people will throw around when they hear that you participate in
|
||
|
this. There's accusations of being possessed by demons, or being mentally ill,
|
||
|
complete with acronyms thrown at me, and much more.
|
||
|
|
||
|
Hell, this is stuff I'd love to talk about at some convention somewhere; but I
|
||
|
don't really know if I want to paint such a huge target on my back. Because
|
||
|
plurality and related topics are so taboo and so niche, there's not really
|
||
|
protected categories for it. This makes me nervous about talking about it in any
|
||
|
sort of public way, and understandably so. I guess this article is part of my
|
||
|
healing process to treat this as just a boring aspect of how I experience
|
||
|
reality instead of some fundamentally earth-shattering gift from the heavens.
|
||
|
|
||
|
Besides, doesn't something fundamentally have to cause a negative impact to be
|
||
|
classified as a disorder in the first place? How can something that
|
||
|
fundamentally helps be a disorder? What if it's just a new adaptation to an
|
||
|
increasingly crazy world?
|
||
|
|
||
|
---
|
||
|
|
||
|
I have compiled a list of resources that have helped me [here](https://tulpanomicon.guide).
|