It just feels right

by Mechaferret on August 7th, 2009

I majored in mathematics because it was easy. A large part of why it was easy was because it was precise: formulas were either correct or they weren’t, proofs either worked or they had logical errors, and the professor’s judgment on that wouldn’t alter based on whether or not he knew and liked me, or even whether or not I showed up. So I took a lot of math courses, skipped a lot of classes in favor of seeing bands every night, and graduated with honors anyway. That would have been significantly harder if I’d been an English major. I continued on in this way through a PhD and a year of teaching.

Then I switched careers, changing software development from a hobby supplementing my impoverished grad-school lifestyle to a full-time job (and getting to live in Los Angeles instead of the Midwest in the process). I had pretty much assumed that software development would be as precise as mathematics, but easier. Much to my surprise, I discovered instead that software development is messy, and complex, and imprecise, and that the key to building working applications on time was building teams of people, with all of the emotion and indeterminacy that inevitably accompanies people-centric activities. And, even more to my surprise, that was the interesting part. I got up in the morning (late morning… I was still a developer) and went to work because I enjoyed putting together concepts, technologies, and people into something that produced the best possible software. I didn’t want to just do the things with the precise answers after all. I wanted to think about, build, and be part of a team.

One obvious consequence of that was that there were no longer precise answers to the questions we were trying to solve. How long would adding this feature take? Is it better to design the code as five classes or three? Not that these were unanswerable questions. They just didn’t have a single right answer, and even though some answers were right and others were wrong, it wasn’t always possible to explain exactly why. I thought the Asterisk migration would take about 3 months because it just feels right.¹

Of course, I’m hardly the first person to have made the mistake of thinking that, because software is based in hard science and has very exacting requirements (either the code compiles or it doesn’t, either the credit card gets charged the right amount or you don’t make money), it has precise answers, and its successful execution requires all logic and no feeling. In actuality, the predictability of a software development project is significantly greater than that of, say, producing a Camry clutch assembly, although it is not quite as unpredictable as writing a great American novel. In fact, in its volatility and complexity, it exactly resembles producing a scripted TV show: there’s a schedule you have to (try to) stick to, but a lot of highly variable parts go into that schedule, and sometimes you either have to skimp or run late to get it all working.

So, in the end, being a math major got me into a career as imprecise and intuition-driven as that of any English major, with an additional helping of dissonance from the expectations of many that it should not involve any of those traits. Then again, the challenge of overcoming the dissonance just makes software development that much more imprecise… and interesting…

¹ Points should be awarded here for using the title in the content… as usual, it’s not clear whether they are bonuses or demerits.

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS