One of the strangest situations that programmers encounter is being a Local Maximum. That is, to be the best programmer that is reasonably accessible to those around you. When you're an undergraduate in college, that might mean that you're the only one in the room who's figured out how to use System.out.println without causing javac to vomit, if you're working in a software company it may mean that you're the real deal (or that the company has bad communication between groups), and if you're an independent developer it may mean that you don't actually have any coworkers.
It helps to think about Local Maximum as they contrast with Free Electrons. A Local Maximum might be a Free Electron--an amazingly productive engineer--but much of the time they are just a bit better than the people around them. Of course, that means that in a low quality shop, the Local Maximum might be a terrible engineer, despite being the best engineer available.
This chart should help clarify:
While there can only be one Local Maximum per group of programmers, the mantle falls most often on independent and contract programmers, who are frequently in situations where the programming group has a headcount of one. It's unsettling to be one, because along with it comes the tacit understanding that nothing your group produces can exceed your capabilities: you are the hard limit on the quality of what your group can create. You're either Sysphus or Atlas, but either way you're fucking with a heavy globular object.
When you find yourself in the position of being a Local Maximum, you have three choices:
- Be a Narcissistic Prick, whose soul divorces you and takes the kids.
- Be a Wise Man on the mountain, who occasionally descends to solve problems.
- Be a Teacher to those around you.
Whether you learn towards the Wise Man or the Teacher certainly depends on your personality, but it also depends on your beliefs about knowledge and learning. This is a deceptively important question, because one of the peculiarities of being a Local Maximum is that you must continue learning without an authoritative source to guide you. Before becoming a contract programmer, independent programmer or joining a small shop, it's important to consider whether you want to enter the role of being a Local Maximum. Are you willing to take responsibility for your own growth, and for absolutely everything else, as well?
At times, there is a certain malaise with knowing you don't have anywhere to turn. At times, a quiet pride.
After staring at the chart, I've decided that the terms Local Maximum and Free Electron can apply to non-programmers, and may in-fact be profession neutral terms. Or, maybe I didn't want to remake the chart. Either way, its been noticed.
I agree with your discovery - a Local Maximum is anyone who happens to be the hard ceiling of a company's capability in any field. A Free Electron is anyone who happens to be bloody good at whatever it is they specialise in.
Some people are just really, really good at stuff you don't notice, like actually managing a team as opposed to just sitting in the glass office and making pronouncements. Or developing rapport with a customer within five seconds of answering the phone and having the customer actually enjoy the experience of complaining about a problem.
I think oftentimes I end up playing the wise man on the mountain simply because no one else wants to learn what I do. It helps that I'm stubborn in my design patterns and have little sympathy for those that don't at least attempt to do things -the right way-.
It's sobering (and dare I say depressing) to find out that you're the "local maximum"--especially for those of us not happy with being a relatively decent programmer. If not for internets and copious amounts of reading/research, it's terribly easy to fall out of touch with the world.
I think sobering is a good description. I feel like it's a slightly self-selecting condition, at least for me, but it isn't something I consciously would have chosen. Or at least I would have considered the ramifications before jumping in head first.
I think it exposes you to failure substantially more, though, which can be a good goad for learning. That said, I usually learn things because I want to learn, not because I'm afraid of screwing up. Sobering. Indeed.
Reply to this entry