A long time ago Glenn proposed that the purpose of associative horizon is to masquerade as higher intelligence for self-promotion. It sounded cynical enough to be plausible, or at least plausibly part of the reason it exists. Maybe Paul Cooijmans was doing his own Sigma male Category X thing by making a special trait for special geniuses who are creative and great because they are such special bois. How would you argue otherwise to someone who doesn’t have it? The reason we laugh at Dilbert comics where the pointy-haired boss or CEO refers to himself as a “big picture” or “idea” person is that people who say that are generally useless and trying to mask it with claims of ephemeral productivity in the world of spirits.
Cooijmans suggests that, other than creativity/problem solving, associative horizon can, in combination with intelligence and conscientiousness, contribute to achievement in comedy, art, and science (through anti-instinctiveness), and it maps moderately well to Charlton and Dutton’s description of the endogenous personality or Eysenck’s psychoticism. I hadn’t come up with a lot of additional useful applications on top of Cooijmans’ original ones, other than it makes you good at playing with children, but recently I had an experience working on a big, legacy piece of software with a group that suggests such a task may only be possible for people with high associative horizon. (And I have notes on the experience lying around in various chat logs, so you get a blog post about it.)
At the beginning of the semester the groups in this class were given a 25,000-line piece of abandonware to modify into something else. This isn’t actually all that big in the software world, but the point is that it’s big enough that a single person would have trouble memorizing the mechanical guts of it in the space of a 3-credit course. We were told we would be graded on how much coding we did and to expect to write about 500 lines of code per week on the group project, which takes me about 10 hours when I know what I’m doing reasonably well (50 LOC/hr, where comments, whitespace, and braces aren’t counted). Before this point in the software engineering program, we’d all been making everything from scratch or educational templates that say things like /*TODO: implement this method*/. This teaches good fundamentals. So of course everyone in my group starts the project by furiously coding new classes to meet the requirements.
I’d like to stop for a moment and say this is not a criticism of my group. I had a hand in picking who was in it and it’s the best group I’ve ever had. They’re all that perfect mix of competence and long-sighted laziness that you want in people who are creating automated systems. “Let’s make X decision now, which technically hits all the requirements, and make the small thing perfect rather than make the vanity project half-perfect, and save ourselves from Y and Z trouble in the future. Then if we have time and feel like it we’ll do the side tasks (and we won’t feel like it).” Our meetings were a perfect mix of task-orientation and good humor of the sort that’s de facto illegal now, everyone had their homework done, you get the picture. Still, it was a pretty hard class and three of them had families so none of us had extra bandwidth to spend on silliness like digging into a bad piece of abandonware just for the satisfaction of a job well done. This was 130-IQ Delta male oil change real world, not 160-IQ Sigma male DIY engine internet world.
Returning to the point, the other guys jumped in and started coding new functionality. But this is no longer a purely educational tutorial situation, this is a decent simulation of a real-world project where you’re trying to modify an existing codebase that no one understands without breaking it by triggering any of the easter eggs hardcoded in by the men who went before you (men of renown). About 25% of the way through the project, I raised the unfortunate point that none of the new code was interfacing with the 25,000-line system it was supposed to go into. (It’s great curriculum planning to have us encounter this in a junior-level class, and I mean that sincerely.) In contrast, I looked for the existing feature that was the closest to what I wanted to make and spent a week tracing the method call sequence line-by-line to the part I wanted to modify, taking notes. I think my first code commit was five lines of copypasta adding a couple of parameters to the method that stored and retrieved data, and this ended up being the only functioning code in our first submission and later the core of our interface with this black box of a system. The moral of this story, and the next, is that I’m a 160-IQ Sigma male, but there’s another moral about associative horizon later.
Maybe 2/3 of the way through the project I’m telling this story to Boneflour and explaining that we now have three distinct bodies of code that aren’t talking to each other, where the data in our configuration files isn’t showing up in the GUI elements we made, and he asks if it’s because these guys have decided it’s good enough for the grade or they just don’t care. I told him it’s because they don’t know it’s broken. I think he was a little horrified by the idea, but it’s hard to express how many details they’d have to hold in their heads simultaneously to make this connection. Just reading the project requirements alone took about ten hours, because it was spread out over about fifty pages’ worth of self-referential material (think of a legal document if that helps). Now imagine you have to follow all of those rules (as best you can) while also designing new functionality from scratch, writing code that actually works and proving it with whitebox tests, keeping up with what five other people are doing, all while in the process of teaching yourself the legacy system without any documentation, and also doing this in about an hour per day on average. Connections between little bits of information are going to get missed.
The project works now. I knitted the front end changes, the new work, and the back end changes together at the very end after everyone else had submitted their final commits and moved on. For the purpose of studying human dynamics, I’ll note it wasn’t as hard as I expected because I was connecting pieces that were internally functional and already existed (because these guys are good coders for college juniors). The hard part was diving into the details and simultaneously thinking clearly about what needed to be done, which was likely enabled by my unusually high ego-strength (hence the ability to be content with the same meal three times a day for months: unusually low habituation). Microblogging my thoughts helped a lot. But the primary reason it had to be me is no one else thought it was their job to notice and fix the problem. The takeaway is that most people (maybe just coders?) are happy to stay in their lane and make their own world functional, and don’t care about what’s going on outside their line of vision. It takes a person with unusually high associative horizon to be annoyed that the system of functional little worlds is dysfunctional, or more precisely to know that it’s dysfunctional (rather than simply saying it’s dysfunctional because you’re a mess inside and would complain in any situation).
Thank you for coming to my TED talk. I hope you enjoyed reading it as much as I enjoyed writing it.