All Hands/2015 Orlando/Becoming a more senior engineer
From MozillaWiki
< All Hands | 2015 Orlando
This was a panel discussion organized by Laura Thomson. It included Adam Roach, Doug Turner, Dave, Selena Deckelman, Johnny Stenback, and more whose names I missed.
Contents
- 1 What key career decisions helped me get where I am?
- 2 Did any of you have mentors or ppl who helped sponsor your career?
- 3 Was there something you worked on that taught you a lot about what to do or not to do?
- 4 What would you tell your younger self to not do?
- 5 When you feel stuck in your career, how do you get unstuck?
- 6 What you do look for in trying to spot talented junior engineers?
- 7 If you're not allowed to say "it's nuanced", would you say to do useful work or excellent work?
- 8 When you think "Mozilla should obviously be doing X!", what do you do with it?
- 9 Advice for remote workers who want to advance in engineering?
- 10 What has my manager been prepared with that readies them to answer questions about my career advancement?
- 11 How do you balance thinking about your own future and the companies?
- 12 Final comments
What key career decisions helped me get where I am?
- Discovered early in career that the next job I got was the thing I complained about in my current job. That happened to me several times, and then I learned that I should be more proactive in choosing new roles. In my case, I bent toward building a product that could actually get to market. That trajectory took me through my 30+ years to today.
- My career wasn't necessarily planned. But I have seen opportunities throughout. Reaching beyond my comfort zone has really helped me.
- Networking. Reaching out not just to others in the company but to others in the industry. People have very different ways of reaching views about tech, and I synthesized those to form my own.
- Delivering on promises. I structure my work so I can complete it when I said I would. This has opened up many opportunities for me.
- +1 on networking. If you do networking, ppl come to you with things they think are interesting. If you're too heads-down, you won't realize you're getting offered a thing more interesting than what you're doing. The best things I've gotten on are things others have come to me with and motivated me to drop my current thing. If I could be 20% better at that, I would.
- Someone told me there are 2 things to do: (1) you shouldn't ask permission all the time when you know in your heart or hearts that there's something that really needs to get done. If you make the right decision, you'll get cred. If you make the wrong one, you'll find another job. Take risks, and do what you think is right. (2) You have to keep your eyes on the horizon or just beyond. If I'm working, it's fun to go fix a bug or look at a changeset or whatever: individual contrib-type tasks. In SCUBA, there's this idea of spheres of awareness. When you're new, you don't know where your mask is or how to adjust your regulator, etc. Later, you're able to look at the fish going by. As a more senior engineer, you can pay attention to other engrs around you and see where they're going and what they're doing. You can observe what the trajectory of the project and company are.
Did any of you have mentors or ppl who helped sponsor your career?
- No. Adam never had anyone he considered, formally or informally, a mentor. But he found a peer who he trusted, someone who would disagree with him an awful lot. He'd use them as a sounding board when he was developing something, and they'd help him work through it.
- Doug: don't surround yourself with ppl who are energy or negative all the time or hate the company you're working for. This is a team sport. If that's your mentor, it will not only stymie your career, but it's not healthy. Choose a mentor who's more optimistic than you. Don't choose somebody who's an ass.
- Selena had a great mentor in college. He was managing all the email services at the university. It was eye-opening. He gave me lots of projects to work on, and I got my thesis out of it. He expanded my view of things I could do.
- No. But there have been many people who have been highly influential. As with Brendan, there was never a formal relationship, but there were many opportunities to learn from him and others. I too those opportunities while at the same time being mindful of their time.
- Never a formal mentor, but I found ppl who I wanted to emulate and who I felt were comfortable making mistakes and learning from them and comfortable sharing the lessons they learned from them so I could avoid making them and learn how to handle mistakes in general.
- Doug: We all have a responsibility for the engrs coming up. The guy who got me programming was a high school computer science instructor. Part of being senior is to ensure that junior engrs can come to you and ask you things. Make yourself someone who answers.
Was there something you worked on that taught you a lot about what to do or not to do?
- Stenback: I worked for a DARPA subcontractor in the beltway doing security for the web. We designed "Secure HTTP", which got beaten by Netscape's SSL, so we pivoted and started doing SSL stuff. At one point, we decided we needed to document how SSL works, since Netscape wasn't doing it. I volunteered, just a simple transcription task. Then somebody asked me, "Why don't you write a book on it?" So I did, and one thing led to another, and I've been doing it for 20 years now. In IETF and other standards bodies, we look very closely at how to bring in the next generation of people. We say "Why don't you review this draft?" Then "Why don't you write this draft?" And you work your way up to auditing drafts and chairing committees. Many people here are on this track. It gives you visibility so people can recognize your talents.
- Laura: At Mozilla, working on a standards body is a great way to advance, where at Apple it might be working on patents.
- Laura: I wrote a book. It was terrible, a pile of crap. We thought "We can do better," so we spent a year doing it. It was an accidentally good decision. At Mozilla, working on crashstats was a surprisingly good decision. I learned a lot and met a lot of interesting people.
- Selena: I got my start in Postgres by walking up to Josh Berkus and asking him some really basic config questions. Somebody standing nearby said "You should start a use group in Portland." So I did, became a major contrib to Postgres, ended up running conferences, etc. One thing really led to another.
- I worked at a great place where we could do whatever we want and could tell our customers that they were going to take what we did and like it. We got divested, and that period taught us to step back and ask "What do users want?" A second thing is to consider stepping outside engineering and consider that as a career path. I could have learned most of what I did without doing that, but I learned a lot that way.
What would you tell your younger self to not do?
- Doug: I would go into medicine. :-)
- Adam: I stayed too long at the first place I was. I ran out of growth opportunities. I thought "I'm going to stay forever," but they had different ideas. It started me on a certain path.
- Laura: "Should I take this job?" As long as you're thinking about it, it's probably okay.
- Doug: My biggest regret is probably being too heads-down-focused: my patches, some number on some graph--not the direction of the organization. Not working on the softer skills of being able to convince other people why what I'm working on is super-important is a regret of mine.
When you feel stuck in your career, how do you get unstuck?
- Sometimes the opportunities in your part of the org or your company don't align with your interests. Maybe you need to develop new skills, or you have to find a different part of the org or a different org. Leaving and coming back also works for some people. Every time I've changed companies, it's been a good thing.
- Stenback: This question could mean "Why am I en engr 4 rather than an engr 5?" or "Why do I bang out these patches but not care about this stuff?" For #1, talk to your manager and peers and ask "I feel like I could be doing more. Why am I not?" For #2, it's more interesting. If you don't think your work is interesting, look for an opportunity. It's easy to get hung up at a local maximum of pay and interest. I spent a long time as a consultant and then did a startup that tanked. David Wagner at the University of California called me and said they were going to try breaking all the CA voting machines for 6 weeks. Stenback said "Sign me up!" But it wasn't a paid position. "I don't care. Sign me up." So he took a pay hit versus consulting. He never regretted it. It let him branch out out of communication security, let him publish a bunch of voting security papers, and so on. He asked "Would it be good for my career and *interesting*?"
- Selena: I was at Intel for 4 years and had a really safe, well-paying job. But it felt dead to me; I wasn't sure what the point of me being there was. For years, I took different jobs, even with pay cuts, looking for meaning, but I didn't find it. Finally I was at a small manufacturing company, and that's where I started to have the opportunity to work on open-source software.
- It's really important to know what kind of person you are. Most of the people here really care about the mission. Lots of people in tech want to change the world. But some people want to get paid well and work 42 hours a week, and those people are probably happier than we are. ;-) If you're a person who wants a lifestyle job here, find a niche where you can do that, or find another place where you can do that.
- Conversely, it's fine if you're doing work that needs to be done and you're comfortable, fine. But if you're bored or think the work isn't important, stop. Figure out something that *does* work for you.
- Doug: If you're been doing the same job (role, technology, function) for {5, 3, 2} years, raise your hand. About every 3 years, I get really bored. I take a vacation and stop using computers. I go interview and see what the world is doing. Don't lose those interview skills. You're not going to be a senior engineer somewhere else if you do. So every 3-4 years, I do something different at Mozilla.
- I got a great piece of advice early in my career: you should always have 3 jobs: your current job, your next job, and a fun job. Obviously, don't divide your time equally, but you should constantly devote time and attention to all 3. The fun job doesn't even have to be a tech job. It could be music or medicine or whatever. With that advice, I never really felt stuck: I always had a path to lead me to the next thing.
- Adam & Laura: the piece of received wisdom I got early in my career: if somebody offers to interview you, say yes. You may say "I'm glad I don't work there!" which makes you appreciate where you are. But you also meet people. They may want to hire you later, or you might want to hire them. Or you might end up knowing people at Cisco, and that could come in handy.
- Selena: If you feel like you want to leave Mozilla, tell somebody. Don't surprise them. Tell you boss, Laura says. Or tell your boss's boss. Stenback: but don't let them sucker you. If something's terrible and not your fault, it should be remedied in weeks, not months. If you don't think they're doing what needs done, don't hold your breath waiting.
- Laura: I staged my own reorg once. I wasn't happy where I was, so I talked to Brenden, skipping 4 layers of management. He told me to talk to a bunch of VPs and figure out which you like best and figure out where you fit.
What you do look for in trying to spot talented junior engineers?
- Adam: Initiative. Sure, do what you're asked to do, but the people I'm most impressed with are the ones who notice an interesting problem off to the side and chase that as well. "Look what I also discovered, and isn't this cool?"
- Doug: When you're looking for talent, one of the key things is fearlessness. Many juniors ask something like "What languages do I need to do my job?", and that's a red flag. They know JS, and they don't want to get into C++. But you're going to end up using them all anyway. Part of being an engr is learning new things.
- Laura: Don't get your ego caught up in the technology or project: I'm a Python engineer, I'm a SUMO engineer. If your ego is tied up in one of those things, you don't see when they need to be killed.
- Stenback: If you work in security, you need to have your eye off to the side looking for things that aren't quite right. A few times I've not chased one of those down and then seen it in a paper a few months later.
- Stenback: I look for people who see the big picture. I ask "What are you trying to do?" and look for the ability to explain that. Where does your piece fit in, at least into the surrounding area? As you advance, you have to be willing to lose focus on the things below you. People make the mistake, as they move into management, of thinking they have to maintain their programming chops. You get these senior managers breaking the build. No matter how smart you are, you can't be good at everything at once. Recognize you're going to have to rely on people to understand things when you don't.
- Selena: I like seeing people able to change their perspective and have empathy for people in other roles, like ops or marketing. That's a really powerful tool for an engr.
If you're not allowed to say "it's nuanced", would you say to do useful work or excellent work?
- Selena: Useful makes you friends.
- Excellent work that doesn't matter is not going to get you where you want.
- If you do excellent work that's not useful, you may not get another chance, but vice versa is recoverable.
When you think "Mozilla should obviously be doing X!", what do you do with it?
- Send an email to David.
- Sometimes it's been thought of and there are reasons we don't, and sometimes we haven't thought of it.
- Bonus points if you try to figure out what you think the answer might be.
- Stenback: Some orgs have dysfunction that stop it from doing the right thing. It's important to have some atunement to that. Sometimes the answer is "This org is messed up and in a way that is not going to get fixed immediately." The further up you get, the more you learn to accept this so you aren't constantly raging at everything.
Advice for remote workers who want to advance in engineering?
- Doug: I had a baby and just stopped going into work. (This wasn't at Mozilla.) This will make you incredibly productive: no interruptions, long periods of focus. It was incredibly useful, and I highly recommend it. But it's career-limiting. When all the senior execs are in one building.... We do have Laura and Adam and Mark Mayo, but it's not the norm. The 6-7 years I spent working from home getting to know my kid I wouldn't trade for anything. But it's limiting.
- Laura: If you want to become a VP, it's limiting. But if you want to move from engr2 to engr3, don't worry about it. The more you need to talk to people to do your job, the harder it is. Talk to other managers regularly. Arrange a peer 1-on-1. Go to work weeks and training programs. Build relationships with people in different parts of the company. Overcommunicate.
- On the IC track, we have lots of people and 2 out of 3 distinguished engineers are remote.
- Adam: I set up a call with Laura to ask her this very question last week. Reach out to people at all-hands meetings. Hang out on IRC. Be social with people. Be interested in them beyond just what they work on.
- Doug: Make sure you and your team has budget to do smaller, focused work weeks. You may need to call them something else, but try to do that once or twice a year. In platform, we have budget for remotees to get to an office once or twice a year. It's great just to look people in the eye so you're friends when difficult times happen.
- Be careful what you call it. Don't call it a "work week". Go for "team meeting", "mind meld", or something.
- If you can, try to spend 2-3 weeks at an office with the people you work with. Once you get to know people, it's a lot easier to work with them remotely.
- Laura: It helps a lot to make friends in each office. Ask them what's going on there, how things are going, what's the mood. You get a lot of good info. It's tempting at these all-hands to hang out with your buddies. But hang out with somebody from a different unit, and you'll learn some interesting things.
- Doug: +1 on making friends.
- Join #awayteam on IRC. It's the coffee break room. There's also #parents.
- Stenback: Learn to write. Especially if you're remote, most of the way people perceive you will be via this.
What has my manager been prepared with that readies them to answer questions about my career advancement?
- Fairly little.
- Part of being an advanced IC is mentoring junior ones, so talk to them.
How do you balance thinking about your own future and the companies?
- Stenback: Try to bridge between groups that don't know how to talk to each other. Those opportunities become more as you advance.
- Adam: The things you do to improve yourself are good for Mozilla.
- Adam: If you find that your passion is not aligned with the org or part of the org that you're in, change where you are.
- Doug: There are 2 axes to improve: Mozilla, its code, its projects; and improvements to you personally. When you're on the job market, the improvements you made to Mozilla don't really apply, but those to yourself do. But to advance within a company, you need to provide tremendous value to it.
- Adam: Figure out what you're passionate about, and do that, because that's what you're going to be best at and make the greatest impact at.
- Dave: If you want to do some self-development, talk to your manager about it; you don't have to do it off in some dark corner. You can even place it at the intersection of what you and the company need.
Final comments
- Come to us and ask us questions. Send us email.