Coding Horror

programming and human factors

Coding Slave

On Rory's effusive recommendation, I purchased a copy of the book Coding Slave by Bob Reselman.

I have mixed feelings about Coding Slave. It's got a great title, it definitely kept my interest, and it's a quick read. I can also pretty much guarantee you've never read a book like this one.

However, I had a difficult time relating to this book. And no, not because of the rather explicit symbolic sex. I read Coding Slave as the story of a guy from a small business background who was severely traumatized by the world of Large Corporations, Big Six Consulting, and $20 million ERP systems. So much so that he was compelled to write a book about the experience. Part two of an interview at Neopoleon covers this part of Bob's transition in some detail:

When I worked for a Big Six Consulting Company I got to fly all over the US and parts of Europe working in medium and large IT departments in Business and Government. This really opened my eyes to situations and experiences that I never imagined. Prior to Gateway, I had worked for small companies and for myself. There are good and bad points to working small. The bad news is that usually there is not a lot of money around, one tends to overwork, and you can get into real, direct confrontation with people, maybe throw things if under enough stress. The good news is that, for better or worse, you become close to the people with whom you work and can develop lifelong friendships. Things that are food for litigation in large corporations simply don't exist in small companies, age discrimination and sexual harassment suits for example. In my experience in small companies -- and by small I mean companies with ten people -- things are direct, If someone is doing things that you don't like, you can tell them stop it or you bop them in the nose. You don't get sued. And, even if you do get sued, there is so little money around, that if someone wins a case, there is no money to be paid on judgment. People just sort of muddle through resolving offenses: commercial, social, political and sexual.
Bob's book deals exclusively with the "fictional" implementation of a "fictional" ERP package by a "fictional" Large Corporation. That's the framework for the narrative arc of the story. Given the depth of raw emotion in the book, I'm inclined to believe it wasn't all that fictional.

I am 34 years old. I currently work for a Large Corporation. I've known many dozens of coders in my professional life-- say, the last ten years-- and none of them have worked on an ERP system of any kind. I am not convinced the ERP world is representative of anything I've ever experienced, or anyone I have ever known. I definitely would not say it "establishes the world of mainstream software development as it stands today", as Rory does.

One thing I did learn from the book is that the entire concept of an ERP software package is itself kind of, well, insane. Quoting from Bob's book:

Ajita and Rafael knew that imposed systems - dictatorships - are doomed to fail over the long term. Systems of the people, by the people, for the people, work better than systems that are imposed on the people. Ajita and Rafael understood that the reason that the MidContinent ERP was blowing up was because it was not designed to serve the people who used it. The system was designed to serve itself only.

Ajita and Rafael knew that the world needed an ERP that met the needs of the people that used it, made by the people that used it and for the people that used it. Ajita and Rafael understood on that night, on that boat, that their course of action, that the purpose of the rest of their lives, was to organize every coder in the world in order to make a comprehensive software system that worked well enough to make a world in which all coders wanted to live. They also knew that the system they made needed to work for themselves first, because if they could not make an ERP that served the needs of their organization, the code could never meet the needs of any other organization.

And so Ajita and Rafael went about creating that ERP, and every waking moment of every waking day of their lives from that time forward was a day spent making that ERP better. As a result, the primary purpose of the Guild became to make that ERP, which was its one and only product, better. They had the knowledge. They had the talent. They had the desire. They had seen all the horror shows. Now it was time to make paradise.

The Guild named the ERP Justice.

Justice handled all Guild activity: education, compensation, payroll, health care benefits, employment assignment and, of course, membership voting. It seemed as if the members were forever voting on something. Justice handled it with ease.

No Guild member was ever without work. When a member's contract expired or if his job was eliminated, the ERP used its state-of-the-art logic and data-mining capabilities to provide the Guild member with a new assignment that met the exact skills and interests of the member.

A member could work as much or as little as he or she liked. The highest paid software developer was never paid more than seven times the rate of the lowest developer. Pay rate for a job was calculated using a formula that accounted for member competency, status, and job complexity. This formula was reviewed every six months and subject to four-fifths membership approval. Voting took place over the Internet and via cell phones using Justice.

Freely choosing to design a ginormous, monolithic software package* like this strikes me as a profoundly bad idea-- an idea already tainted by the bizarre mindset of Big Six IT and $20 million ERP packages. No sane organization, even the completely fictional programmer's guild Bob proposes, would build software this way. And certainly a system "of the people, and by the people" wouldn't be written at all-- it would be absorbed from the various open source projects and patched together communally, feeding back into the larger open source zeitgeist.

Coding Slave is a hard book to discuss, because it's really all over the map. The book covers so many weighty concepts in a rather thin volume. And this is all in addition to the arc of the story:

  • the Offshoring message -- Fuck 'em. Send the code to India!
  • the Philosophical message -- Appendix A contains the complete text of Socrates' Meno!
  • the Empowerment message -- Charlemagne would have been nothing without his IT scribes! Coders rule the world!
  • the Intimacy message -- webcams, porn, sex, suicide, and death! Now with 23% more lesbians!
  • the Solution -- Let's form Ye Olde Programmer's Guild!

And then there's the artificially provocative 21-question Quiz, which is also featured in the book.

Coding Slave an entertaining read, but I think the personal character chapter of Code Complete may be a better practical guide for personal development. I'd also argue that the current blogosphere, combined with the open source movement, is a pretty good real world analog for the proposed Ye Olde Programmer's Guild. And it exists today!

To get more perspective on the book, you can hear Bob interviewed on a recent audio show of Dot Net Rocks!. There's also a text interview with Bob on Rory's website in several parts.

* And then calling it "Justice." Ouch. As if there is any, with names like that.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror