When I first joined TripAdvisor, we had a pretty involved branch merge process that usually took around two hours, and involved over a dozen distinct steps. There was some initial pain for new engineers, but no big deal, you got used to it pretty quickly, at which point it faded into the background – an occasionally annoying task that you could forget about until the next time it came up. Then one day someone got fed up and put together a bash script that automated the whole thing.
We had been using an internally-developed code review tool for a couple of years. It was getting a little creaky, but for smaller diffs it did the job. Until someone got ReviewBoard working and everyone migrated over en masse.
grep is a great tool, with lots of command line parameters to remember. And then someone wrote ack and dramatically simplified one of its most common use cases.
None of these were technically complicated, none of them required a huge investment of time, significant research, or taking on of risk. They just required someone to notice that something was annoying, realize they could do something about it, take ownership and do it. This is a lot of what “done and gets things smart” is about – stars don’t just write great code quickly, they make life easier for everyone around them. Like the catflap, the difficult part isn’t the implementation, it’s seeing what needs to be done in the first place.
So the question becomes, how can you start noticing these things more often?
What we’re looking to do is to create a new habit, a habit of noticing opportunities for improvements. In order to create a new habit, there are three things that you have to do: name the habit, establish a frequency, and track it.
- Name the habit
OK, this part is easy – we’re going to establish a habit of noticing opportunities for improvements. Write it down. Give yourself some social pressure by telling someone else that you’re doing it. If you’re feeling particularly cocky, you can tweet or blog about it (uh oh).
- Establish a frequency
Set a repeating alarm on your calendar (every day, three days a week, whatever), and give yourself 5-15 minutes to reflect. What did you do today? What annoyances did you have? What could you have done better? What could have been automated? What could have been skipped? Then – and this is the key part – you have to come up with something to improve, every time. Can’t think of anything? Too bad. Come up with something, anything. It will get easier over time, but you need to come up with something to optimize. Big, little, anything will do.
- Track it
Keep a spreadsheet with three columns. The first is the date. The second is what you noticed. The third is what you did about it. You won’t always have time to do something about the things you notice – the third column might not get filled in right away. But over time, you’ll have a list of well-defined, concrete tasks that will “get things smart.” And isn’t that the kind of person you want to be?
Stop right there!
If you’re anything like me, you’re going to read this post, think that it made a lot of sense, congratulate yourself on having read it, then click to another page and forget about it completely. You think that just reading this is going to make a difference, but you’re wrong. You need to stop right now, and set up a daily alarm. Dash off a quick email to someone to tell them you’re going to do this. Better yet – find a partner who’s willing to do it with you. Put the spreadsheet together. Set yourself up for success.
Keep in touch
Let me know what you find! There are a lot of wriggly things under the rocks out there.