Hacking and Refactoring Essay

2304 Words May 30th, 2015 10 Pages
In 2001, there was a history-making conference of software-engineering thinkers in Snowbird, Utah. The product of that meeting was a remarkable document called the Agile Manifesto, a call to overturn many of the assumptions of traditional software development. I, in my capacity as one of the principal theoreticians of open-source development, was invited to be at Snowbird, but couldn't make it.
Ever since, though, I've been sensing a growing convergence between agile programming and the open-source movement. I've seen agile concepts and terminology being adopted rapidly and enthusiastically by my colleagues in open-source-land — especially ideas like refactoring, unit testing, and design from stories and personas. From the other side, key
…show more content…
I read this, and had one of those moments where everything comes together in your head with a great ringing crash and the world assumes a new shape — a moment not unlike the one I had in late 1996 when I got the central insight that turned into The Cathedral and the Bazaar. In the remainder of this essay I'm going to try to articulate what I now think I understand about open source, agile programming, how they are related, and why the connection should be interesting even to programmers with no stake in either movement.
Now I need to set a little background here, because I'm going to need to have to talk about several different categories which are contingently but not necessarily related.
First, there is Unix programmer. Unix is the operating system with the longest living tradition of programming and design. It has an unusually strong and mature technical culture around it, a culture which originated or popularized many of the core ideas and tools of modern software design. The Art of Unix Programming is a concerted attempt to capture the craft wisdom of this culture, one to which I have successfully enlisted quite a few of its founding elders.
Second, there is hacker. This is a very complex term, but more than anything else, it describes an attitude — an intentional stance that relates hackers to programming and other disciplines in a particular way. I have described the hacker stance and its

Related Documents