I worked for the logistics arm of a very large fashion company based here in Columbus for a few years, and one of the things I really liked about the culture there was how wrapped up in the mood elevator they were.
What I like about the Mood Elevator (and similar tools) is that when used properly, it provides a common language which leads to a better level of clarity about a situation. You can say things like “I’m struggling to keep the mood elevator at curious right now” and (while maybe a little corny) everyone will know you’re not in agreement with whatever is going on, but still open to being sold. Shorthand is an amazing thing sometimes.
It’s not quite the same, but I’ve noticed I have some distinct moods that I cycle through while working on code.
My worse days are when I feel stupid. I can’t get the code to work. I can’t find what’s causing the bug. I can’t figure out why the tutorial steps don’t work for me. I feel like I’m missing obvious things that I’ll never understand and am a fraud, a hack, just another white guy who got hired by another white guy and there was never any talent or skill to begin with.
There isn’t much to do about this, except hopefully shift gears into something a little less challenging or something better documented. It’s a bad bad day when I leave the office in this mood, because it tends to haunt me (though, more often than not I get a breakthrough the next morning).
Another set of bad feels is being bored by the work. This also encompasses tedium–“I know how to do this, we’ve solved this problem before the fact we need to apply the same fix instead of a lasting one is driving crazy,” etc. It’s the work part of work, the kind they need to pay you to do.
Sometimes a nice little pep talk helps–“If you don’t document this, you’ll forget it when someone breaks it in three months.” Or shifting my perspective: “This is a good thing–it’s routine, you’ll get it done fast and onto the next.” Or even adding an element of challenge, a la a more elegant solution (though I’ve also gotten myself in trouble on that sort of detour, so…).
This is the nice baseline. Like with the actual Mood Elevator, there’s that curiosity factor. I feel engaged in what I’m doing, I’m intrigued, I generally feel it’s achievable with a little effort. I wouldn’t say what I’m doing is a cakewalk, but I’m not drowning in unknowns to banging my head against walls.
This is contentment, and one could argue it’s the ideal state.
I recently wrote a webjob that does a pretty common routine of getting some data set based on parameters, passes it to a web service, and then stores the return. I had a nearly identical project coming down the pipe, so I made it my goal to keep as much of the first project reusable as possible.
This led to some extremely modular, versatile code that (I feel, anyway) was some of the most legible I’d ever written. When my boss decided to change all the inputs to this webjob, I was able to implement those changes in less than ten minutes thanks to how I’d designed the seams.
I sat back after that, and felt really, really clever. Like I’d solved the puzzle.
Like an Idiot
Not to be confused with feeling stupid! Feeling like an idiot is typically how I react to an epiphany. Much like when I realized the whole point of a property-injected dependency is I didn’t have to use constructor injection.
My favorite moments are the ones where things click into focus, and I can actually feel my understanding of something jerk forward to the degree I go “Why on EARTH would I have ever done it that way?” The focus is on the newly acquired understanding, rather than the challenges of the past.