Half of programming is meditative, spiritual work.
The teachable parts of programming are its languages and concepts, with their syntaxes, constraints, and best practices.
But the greater, unteachable part has to do with looking at a task that humans are not accustomed to thinking about quantitatively--like playing a game of checkers or recommending a good movie--and perceiving the algorithmic truths beneath it (or at least good approximations.) There is no formal method for this. This process relies entirely on the programmer's ability to contemplate the true nature of things. This is an awesome skill. That's why it's on my manliness spreadsheet.
Three years ago, I was thinking about my personal shortcomings and the people I wanted to be more like, and I resolved to draft a plan of action. I would make a spreadsheet that would take various quantitative descriptors of me as inputs, and tabulate a composite "greatness" score, allowing me to track my progress on the way to becoming more worthwhile. I called this "The Good Man Spreadsheet."
I quickly found out that in making this spreadsheet I would be confronted with the mother of all Programmer's Vision Quests: discovering what I thought made a man a badass, and then putting that into numbers.
Here's what I ended up doing:
- I made a list of all of my heroes. If you don't have people of whom you can say "he/she is better than me", you can't work on the the Greatness problem. (If you can't think of anyone better than you, you're also probably a self-deluded jerk.)
Anderson Mills is a pretty enviable dude, with his abs and his French and the physics research. Gramps is definitely up there, with his stoic discipline and his work in Chiapas.
- I lit a cigar and started pacing on the street outside my house and talking to myself. (Half of my billable hours when I'm contracted to do anything are spent pacing and muttering. One doesn't truly program in the cubicle; the cubicle is just where you sit to put things down in code.)
What do the men I admire have in common? I found that diversity in competencies seemed to correlate well with what I thought of as greatness; being able to do calculus AND create masterworks of art, for example. I made mental notes about this.
- I drafted a spreadsheet, incorporating my provisional insights. I sent it to my best and nerdiest friends. We added stuff and took stuff off. We argued philosophy. We tinkered with the variables.
- I calibrated. If my model of greatness was right, the spreadsheet should give good scores to good people, and lower ones to mere mortals. I should be either a mere mortal or something mediocre. A spreadsheet that says I'm as good as Anderson is wrong.
Finally, I produced a functioning model which assigned a plausible score to every hero and mortal. The spreadsheet worked. It ranked people's badassity in the way I intuitively would (with very minor exceptions.)
|This is not the functioning model. This is my departmental budget.|
I can't show you the functioning model, because I have real life friends who read my blog and it would weird them out. Anyhow, it wouldn't be useful to you. This model approximates my view of greatness.
I can tell you that in the end there were several Boolean categories, denoting sharply defined capacities and attributes in everything from programming acumen to domestic skills. I can also tell you that I'm 42% great. Quite more towards the mortals on the scale than I am towards my role models.
But now I have a plan of action.
And "a grand goal of living is the first component of a philosophy of life."
And what you measure improves.
Since the last posting, this blog received $3 from Tina Gunnarsson of Redwood City, California. Tina, you are a patron of the fine arts, a true soul, and my hero.
Give me a buck to support posts like this.
(If anyone gives me a dollar this time, I'll send them some weird digital artifact, like a dumb chart I've made, or an embarrassing song I wrote when I was 18. Really useful stuff.)