I noticed yesterday that it’s been one year this week since I started working at MoCo.
For some reason, it feels like I’ve been here longer. Much longer.
Maybe it’s partially due to the fact that joining MoCo was actually a return to the project for me. I interned on Netscape’s Build Team a few months after the lizard was freed, and did some Bugzilla work throughout college. An old friend I hadn’t talked to in awhile mused at the circular pattern of life: “when we were hanging out those first few years of college, you were keeping watchful eye over the Tinderboxen… and you now you are again.”
So it goes.
I spent some time thinking about what it’s been like to be here a year, and what I’ve learned. I came up with the following jumble…

  1. I’ve been to my fair share of “company parties,” but nothing even comes close to touching a Mozilla-party.
  2. “Have you filed a bug on that yet?” and “Now accepting patches”1 are two of the most useful phrases. Evar.
  3. You can get yourself into trouble on IRC.
  4. It is often difficult to figure out who to pay attention to in the community, and the proper weight to attribute to their statements. One will make this mistake frequently and egregiously in the beginning, but receive plenty of feedback. It is a self-correcting problem if you pay attention when it happens, and you’ll soon come up with a trusty metric.
  5. Alcohol2—in measured amounts—will help you solve just about any [build] problem.
  6. People are perfectly willing and happy to give you alcohol—in measured amounts—to get you to solve… just about any [build] problem.
  7. When in doubt, blame morgamic.
  8. After blaming morgamic, remember: Carebears hugs solve everything.
  9. If one of the Mikes suggest doing something, it’s probably a good idea. If two of the Mikes suggest doing something, you should probably just do it. Probably.
  10. Tinderbox is a pit of black pit of despair that will suck your soul away. But it’s our lil’ black pit of despair that will suck your soul away.
  11. We have a lot of code like Tinderbox.
  12. A lot of that same code is some of the most robust code in the project. Maybe in the world.3
  13. Don’t respond to IRC requests off-hours unless you’re willing to respond to an IRC request every single day at that same time. While admittedly frustrating to others, it staves off burnout.
  14. Letting sspitzer talk you into eating anything is just a recipe for a bad scene.
  15. Respect WONTFIX.
  16. Never underestimate the ability of a single community member to cause a respin of an entire release4.
  17. Similarly, never underestimate the ability of a single community member to completely fix an entire module/subsystem.7
  18. Talk and design documents are cheap; checked-in code with bugs filed for improvements is the gold standard. This is not the case at all software companies.
  19. We don’t always agree with each other about how to get where we’re going… but we all seem to share a sense of generally what the destination is. That unity of vision is remarkable within a project and company. In that regard, the Mozilla project is much like a family.
  20. You never know when some random blog entry that was mostly a rant to begin with is going to get put on Slashdot’s front page.
  21. To this day, I still get a kick out of the creator of JavaScript making me a martini… they’re really good martinis, too!
  22. In such a consensus-driven organization, sometimes, you have to start a discussion with “Yes, it sucks, but we need to leave this meeting with a) a decision and as a result of a), b) some unhappy people.” That’s really hard to do. It’s also sometimes really necessary.

There’s probably some others I forgot.
Or maybe blocked out.
As I look back on the past year, it’s been one of the most difficult of my career. I’ve had to do a few things that have grated on my professional aesthetics; I’ve spent more than a few early mornings fighting with builds and (in internet time) ancient infrastructure, and been stressed out on a host of occasions.10
But I’ve also gained new perspective on developing and releasing software on a scale not seen by many projects or developers, how to prioritize the myriad requests that get thrown at us every day, how to figure out what people are really asking for, when to do what people want, and when to push back.
I’ve got more to learn about all of those, but I wanted to thank you all for those experiences.
I’m a better software engineer… and a better person for it.
Now then… who needs a tinderbox kicked?
1 Both courtesy of Shaver.
2 In my case, scotch.
3 But still… not Tinderbox.
4 Totally not referring to anyone5 or any particular release6
5 Jonas.
7 Totally not referring to anyone8 or any particular module9
8 cf.
9 Nightly updates.
10 With all the inherent interpersonal pleasantness that goes along with that.