The semester is over, and I'm relieved. I had resolved that during this semester, I would correct my habits of doing things badly. In the past, my schoolwork was nothing to be particularly proud of; it (usually) got me the grades I wanted, but more importantly, it left me enough time to do other things, and really it was the latter point that was more important to me.
For this semester, I decided to try being, if not a perfectionist, more focused on correctness.
Well, I tried it, and my conclusion is that it doesn't pay off.
In the beginning of the semester, it seemed to work. I did my math homework every day, where I typically would only have done whatever I could finish during class; I read and even took notes on my International Relations assignments before class, where in the past I would have skimmed them during class (at most), and I even painstakingly worked my way through the online homework - which I find particularly painful, because I can't help but to try and figure out how the site works. A 15-minute online quiz tends to stretch considerably when you're poking around with Firebug.1
And at first, it seemed to pay off. I got an "A" on a math test for the first time in recent memory - I'm usually very sloppy with math, and don't really mind getting the wrong answer, and my abysmal handwriting doesn't help either - and easily got my A's in my other classes, too.
But I had absolutely no time for anything else. I had started rewriting this site, and for that first month, I got absolutely nothing done towards that.
I would have been willing to stick with it - almost. I had three great instructors this semester, and found their classes engaging, useful, and fun. And so, in effect, where I would have, in the past, buckled down during class and slacked off elsewhere, I was instead studying all the time outside of class, but enjoying myself during the meetings.
But like I said, almost. One course was soul-crushing - Macroeconomics. I've signed up for Microeconomics next semester anyway, in part because I believe Mr. Spolsky when he says that Microeconomics will be better, and in part because I want to learn to deal with boring things better than I did this semester.
My first inclination was to drop the course. I was quite strongly discouraged from this route by the people I asked for advice, and ended up staying in the course. This was a mistake. Doing things correctly is bearable when the problem is an interesting, engaging one. When it's not, however, correctness becomes tedious, and as a result, that course single-handedly made me give up on my correctness ambition after only a few weeks.
So I stopped spending all my time on schoolwork. I filled it with work, and, even more so, with coding. It was during this time that I applied my new correctness doctrine to developing a web framework. I wrote in my comments, to my self, time and time again: "Do this right." I wrote wiki and blog engines before I'd written the framework itself, I tweaked the API to make everything natural, and then spent months actually writing the framework itself to match my idealized applications, and at some point it there it actually started working - at first marginally, and then as expected. I rewrote my site, got it running on my VPS, and moved this site here.
But at the end of the day, all I had was an undocumented, underfeatured web framework, running exactly one site. Sure, it was correct, but who needs correctness? If you don't have features - say, pick any three of built-in user accounts, an admin interface, Javascript integration, a great design or a few dozen screencasts - you're already two years late. It has taken two painstaking, draining months to do it, and the payoff was quite small. I used it here, and will probably never use it again.
But at least I did it. And it was worth it, because it taught me something important: Correctness doesn't pay off. I could have spent another year tweaking everything to make it perfect, and you know what would have been different about this site? Absolutely nothing.
Only since completing this site have I given up on correctness. I'm heading back to my old ways next semester. I'll get my A/B mix instead of A's, but I'm used to that, and it works, and I can keep it up. But correctness? It costs too much time, and the payoff is too small.
The same is true of code. I could (and have) spent months making schemas perfect, tweaking object models, testing and trying and rewriting code, but at the end of the day, you are not that code that you've been working on, no matter how perfect it may be: you are the code you've released.
You know what would be really fitting? If this were all leading up to me releasing some code or some project or something like that. It would be a perfect way of punctuating my point, and pushing the readers themselves to action.
Sorry to disappoint. That would be far too perfect to be worth it.
-
I had even more fun with a math class a year ago, which had online homework in an ActiveX-heavy website. In fact, to use it on Linux, I had to run IE through WINE, which meant that I had to sate my curiosity with Ethereal captures. ↩
Comments
6 spam comments omitted.
I am no longer accepting new comments.