So I started at Mozilla about a week ago. Here are my experiences and thoughts:
This is my first company where code reviews are common. I’ve worked places with pair programming which achieves the goals of code reviews to certain extents. Unfortunately that is less possible in a distributed team. I can’t tell you how nice it is to have someone looking over your code before it goes into the codebase. Code is rarely isolated so having the eyes of someone who knows more about the other systems your code might affect and questioning things, finding edge cases you forgot to test or letting you know better ways of doing things.
And I don’t mean because HQ is in California. I feel comfortable asking any of my co-workers and managers questions. They’ve all been there, Mozilla is a big place with lots of code. Not sure how/why some code works the way it does, link it in the project channel and ask. Not sure the policy on something ask anyone you’ve met so far, if they don’t know the answer, they know who to ask. Feeling lost or getting stressed, talk to your manager, they genuinely want to help you be the best ‘you’ you can be.
That last one bears being expanded on. Your managers don’t want you to be successful just so you are a more productive member of the team. They want to do what they can to help you be great all around. They have a focus on goals and these goals are not just things like “Fix this part of infrastructure at work.” They should be things you want to do/be/learn as part of your life. For me these are things like giving talks at big conferences, learning to write high scale code.
So many companies want their employees to share ideas, this way they can use them to make marketable products. At Mozilla, I feel comfortable sharing ideas I have. This is because if/when I work on them I know that they’ll be open creations. My co-workers decide to help or support me in an endeavor are also striving to make the web an open great place for everyone. It also helps that you are surrounded with brilliant people who are involved in the community in various ways. If you propose something, someone probably knows of some similar prior art, or maybe even the exact thing you are looking for. It is a culture of people coming up with ideas, so no one will just shoot you down, instead they’ll probably help you flesh the idea out into something even greater!
Right not Rushed
Another thing I’ve never seen said so much in a company. I am trying really hard to be a fully productive member of the team right away. So much so that I feel like I am slipping a lot because I can’t get things done as fast as I think I should be able to. The slowdown comes from learning a new codebase and the overhead inherent in that process. Complexity lurks behind every branch.
The thing I keep hearing from multiple people on the team is to not worry, things take as long as they take. They all know, as well as I do when I think objectively, that rushing through something to try to get it out because you feel like it has to be out ASAP is a good way to make mistakes. Take time, understand the problem, write code and tests, then put it forward for review. This is something everyone on my team seems to value. I can’t tell you how much of a relief it is. I’m still striving to be as useful as I can as soon as I can, and I know I have my team supporting me.
Mozilla is a wonderful place to work. Big, but wonderful. The best advice I can give anyone who decides to read this because they are just starting at Mozilla, or perhaps considering applying at Mozilla: relax, take your time, and ask questions. Everyone is as excited to have you on the team as you are to be on it.