I love solving problems.
Awhile ago (actually, in my last post) I mentioned that I was doing a
Programming Languages course on Coursera. It’s continued to go great. We’ve
moved on from using Standard ML of New Jersey to using Racket, which I
particularly like since the Lisp-y family of languages really appeals to me;
partly because they’re just different from what I use day-to-day.
This week’s homework is about building a programming language. We’re just
building the syntax tree interpreter, skipping past all the parsing stuff.
So you just take an AST and run through it with a nice recursive definition. It’s pleasingly elegant. It’s so much more intellectually fun than what I’m doing in my “day job” at the moment.
(here comes the normal ‘enterprise’ rant haha)
It’s the difference between solving problems and gluing things together. When
I’m tinkering around with my programming languages, or writing generative
music in ChucK (soon to be Extempore when I get around to it), I feel like
I’m creating something new to explore. Something will happen that I haven’t
seen before. You wouldn’t think that writing an interpreter and generating
music would have a lot in common, but somehow they do. There’s a satisfaction
to writing your own little piece of code that does it’s own little thing. You
start off with an unsolved puzzle and then it’s solved in a neat package.
You’ve taken thoughts from your head and made them real in the machine. You create something.
Particularly when generating music, there’s a great feedback loop that you often get into where something that your code does surprises you. That’s when you go from “writing out steps to solve a problem” to “creating something that almost has a life of it’s own”.
So what made me think of all this? I really don’t know :) I’ve been tasked to write a plugin-type thing at work. It’s one of those big enterprise-y software things where you write a lot of boilerplate code to solve a problem that’s been solved a million times before and you wonder why you need all this boilerplate. For a split second it reminded me of a time when I thought that the software profession wasn’t for me, that it just wasn’t stimulating anymore.
Luckily it doesn’t take much more than a music scale, or a game, or even an abstract syntax-tree interpreter to remind me why I love doing what I do so much.