There are two kinds of programmers in the world: Those that use their time to collect loose change, and those that use their time to distribute great changes.
Of course that quote is feel-good bunkum. Some people collect a great deal more than loose change, some people do both, and programmers have a complex collection of motivations. But it serves to highlight the motivation of trying to change the world.
And by “trying to change the world,” I don’t mean building something popular and getting acqui-hired. Or fleecing investors for a couple of billion with the next crowd-sourced mobile daily deals platform. Those things move money around from one pocket to another, but in the end the game is the same, there are just different people in the seats.
I also don’t mean sitting behind a computer writing polemics like an angry old man shouting on a street corner.
When I think of changing the world, I think of things like the Web. This changed the world. I think of mobile phones. I think of disintermediating the music industry so that musicians can control their own destiny. I think of cheap, portable video and YouTube rewriting the way counter-culture sports like skateboarding and urban trials reach the masses.
You’ll have to decide for yourself the morality of wanting to change the world. It’s certainly arrogant, and people who like the world just as it is are constantly telling us this is a sin. The usual way they distract us is by convincing talented people to pursue power, money, or prestige for its own sake while playing within the rules.
Meanwhile, change comes from rewriting the rules.
One of the big issues recently is women. Or people of colour. Or something else, it’s all of a muchness, it’s about “us and them,” or it’s about “same and other,” or it’s as simple as “inside and outside.”
Hacking is about breaking down those barriers.
Hackers treat the paradigm of “some people are in charge and some people aren’t” as social damage, and they invent ways to route around it. That is what we have always done. PCs routed around the institutional control of the mainframe. The web routed around social control of information. Khan Academy routes around the institutional control of formal education.
When a hacker sees the current dynamic, he (note the obsolete pronoun) does not need to ask whether the forces excluding women are caused by systemic problems, by historical accident, by assholes, or by genetic predisposition to prefer barbie dolls to math.
It is enough to see the result and he is curious about how it can be disrupted for the same reason he is curious about how a “little language” like Ruby can be so “Worse is Better” that it disrupts the duopoly of Java and C#.
He sees that progress is glacial and that the arguments are going round in circles. He does not think to himself, “This is evidence that there is no problem.” He does not think to himself, “This is the Universe unfolding as it must.” He does not think to himself, “This is proof that nothing can be done.”
He thinks to himself, “This is a hard problem.” And this is catnip to him. This is his drug, these are where he scores his endorphins. This is an opportunity to change the world. To live a life of consequence. To wrest control of the Universe from the forces of entropy.
No serious hacker (yes, it’s a “no true scotsman” reference) is satisfied with the current state of programming. It is alleged that some people “Lack a gene that helps them understand pointers.” Or “Lack some skill to understand how state changes in a program.” Or heaven forbid, they “Lack the ability to grok lots and lots and lots of parentheses.”
The current state of programming feels like that ridiculous Space Opera, where there are some midi-programmions in our blood, and if you have enough, you can wield emacs. Once again, we see an inside vs. outside culture. People like Bret Victor and John Resig are trying to hack this dynamic. They need help, help from hackers.
It’s said that the most important words a scientist can utter are, “Hmmm, that’s odd…” The idea that some people are programmers and some aren’t is odd. Another thing that’s odd: What’s the deal with pair programming?
Some people swear by it, some people swear when you mention it. How is this not odd? It’s obvious to me that we don’t understand pair programming. We understand pair brainstorming. We understand pair bicycle repair. We understand pair driving in rally racing. But we don’t understand pair programming?
Pair programming is a fertile opportunity for hacking. What is the problem with our tools? What is the problem with the way we program? I don’t allow people who succeed with pair programming to convince me it works, for the same reason that I don’t allow companies that hire women to convince me we don’t have a gender imbalance in programming. It needs to be hacked.
There are many other examples of odd things in programming. Test-Driven Development has exactly the same dynamic as pair programming. Some people love it, some hate it. We can’t be doing it right. We clearly don’t understand it properly. Somebody needs to hack TDD, to completely reinvent it, or maybe to make it obsolete with a new thing that satisfies the same goals.
The way we programmers write programs is stuck in a rut, and it needs to be hacked.
I raised the issue of changing the world, and I brought up two examples that in some ways seem very different: The cultural exclusion of outsiders and the fact that we have very uneven application of programming.
They’re really the same thing. Hacking the system to “Bring balance to the gender force” is the same thing as hacking the system so that more people program, and it’s the same thing as hacking pair programming so that more people program together, and it’s the same thing as hacking the system so that more people do some unspecified thing related to more testing.
Right now the future is very unevenly applied in programming. There are little clumps and lumps of programming going on. Meanwhile, software is eating our world. Hacking the forces that clump programming together will bring more brainpower to work on moving humanity forward.
I do not think I am making an outrageous claim when I say that making humankind better at programming is one of the big ideas, the big problems to solve. I believe that the little ideas connected to it are ideas of breaking down entrenched systems and entrenched habits and entrenched complacency that everything is just fine, leave us alone to do what we’ve always done, the way we’ve always done it.
And I believe that the hackers are the ones to do it.
I make no value judgments here. You are who you are, and the wonderful, beautiful, and even scary thing about the world is that you are free to choose what you do, what you say, and what you decide is important. I could not, would not ask you to give that up. All I can do is share with you what I see and how I feel.
The rest is up to you.