Your Coworkers Make You More Productive
This isn't a surprise to almost everyone who reads this blog, but I returned to work back in November after taking a two month sabbatical of sorts. It was an interesting experiment, and one I plan on repeating at some point in the future.
I've been wanting to write about something I learned while on break, but since returning to work, I've basically been sprinting, along with the rest of the Kiln team, through beta and towards launch. I have a little downtime today, unless beta bugs come in, so I'll try to get it written up. Better late than never...
The Lesson: Developing in a Vacuum is Hard
Yeah, you can't hear over all the noise! Ba-dum...sorry....
During my break, I started working on a new project combining two of my passions, software and photography. A couple weeks in, I found myself frequently getting stuck in designing and implementing the features. I've experienced development blocks in the past, but they were usually related to code I didn't want to dive into – oh, say, billing code. This was new, fun code. Features code.
I started thinking about why I was getting stuck. It became clear that I was getting stuck on decision points. I would come to a place where I could think of a couple of ways to do something, and I'd start hemming and hawing, without actually doing anything. After a while, I would force myself to sit down and focus, think through the problem at hand, and decide on a way to do it. Usually, I would come up with a good implementation, and I'd be on my way again. Other times, I'd find a problem I hadn't considered, and I would go back and try one of the other options. Once I got past the block, I would be fine – at least for a while. But then another fork in the road would appear, and coder's block would set in.
After spending some more time thinking about my coder's block, and discussing it with friends, I began to realize what was missing: a sounding board. When I was at work, and I got to a decision that I was stuck on, I'd IM or talk to Ben about the merits of the different options. Often, he wouldn't be completely paged into the problem I was working on (he had his own work to do), but just the process of explaining the different options would usually be enough to help me make the decision and get back to work. Sometimes, Ben would have helpful insights as well, which made our interaction even more valuable.
Since I was on my own, explaining the problem to someone else really wasn't an option. But then again, it wasn't really necessary either. There's a technique I've known of for a while called Rubber Duck Debugging. Here's how it works:

- Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety).
- Place rubber duck on desk and inform it you are just going to go over some code with it, if that's all right.
- Explain to the duck what you code is supposed to do, and then go into detail and explain things line by line.
-
At some point you will tell the duck what you are doing next and then realize that that is not in fact what you are actually doing. The duck will sit there serenely, happy in the knowledge that it has helped you on your way.
Source
I wasn't really doing much debugging – most of my work was on new features – but it still helped. I would sit myself down (I didn't actually have a rubber duck handy) and explain, out loud, the various options, the pros and cons of each, and what I would need to do to implement each feature. Once I got through explaining it all to myself, I realized the decision was clear, and it became much easier to keep my momentum and continue working. It's not quite as good as having someone else to explain it to, but it's much better than being blocked.
Now that I'm back at work, I've gone back to bouncing ideas off of my coworkers, as they are incredibly bright and often have good suggestions. I think I do it a little less often, now that I can work through some of those decisions myself, but their input is still invaluable. I've always enjoyed working with them, but now I have even more appreciation for how important they really are in my daily work.
Thanks to evilerin for the photo " AAAARRRGGGHHH"
blog comments powered by Disqus