I have been recently playing the game Wilmot’s Warehouse. It’s a puzzle management game about managing a warehouse where you receive items and also deliver orders. It’s very relaxing yet its fun. It also resembles programming in such a way that it is difficult to scale. The game is easy in the early minutes where you only have a handful of items to mange. With programming it is also the same, early projects tend to be enjoyable as everything is easy to remember and understand. The point I’m trying to make is how people tend to underestimate how complex the craft of coding is at scale. Imagine playing the game Wilmot’s Warehouse except you bump the items 100x and with a group of 20 people.
I think because coding is still a new craft and we are still trying to figure things out. Every time we commit code, the project gains weight in complexity. Human brains can be limiting when you have 10,000 lines of code it’s hard to locate and piece together everything. This will exponentially increase when more programmers are added to the team.
You see in the programming world, you will always hear the term ‘best practice’ which means any code is harmful except my own. These will have tendencies to be tribal decisions so be aware there are no poor or best practice. It’s just a popularity contest, more support for this practice tend to gather more influence to be the ‘best practice’
While I have no solution to provide I think I can offer this advice: Gather only the best people and give them autonomy – no just treat them like gods.
I think Fred Brooks has the best metaphor for this is the ‘Surgical Team’
Mills proposes that each segment of a large job be tackled a team, but that the team be organized like a surgical team rather than a hog-butchering team. That is, instead of each member cutting away on the problem, one does the cutting and the others give him every support that will enhance his effectiveness and productivity.
And what about project managers? Don’t let them get near or even talk to the Surgical Team! There are programmers that go offline in a cave for 2 weeks and suddenly they develop UNIX. Watch this video of Jonathan Blow (34:15) about productivity on where he mentions how Facebook and Twitter employs so many but offer very little change to their software.
As we get more dependent on software with our daily lives, we tend to ignore the programmers and the value of their craft and how they are just like cogs in some machine. I feel this is especially true in the corporate IT departments where they are mere support departments like Human Resource. Even for software companies they are always beneath marketing and sales. I’m very sure if there are commissions in sales it should be divided to the programmers as well as the software sells itself.
I think we need to re-evaluate since software is a necessity in our society nowadays