My first proper day on my new project, and our PM says to me – “Cate, you seem to like to travel. How about you spend time in New York?” – I’m tasked with helping another team out, and being the bridge between that team and my team here.
Initially I was a bit… thrown. Part of why I’d changed teams was because I didn’t want to need to go to California as often. Whilst I’d joked that it would be different if it was somewhere I’d actually chose to spend time, like New York, I’d also enjoyed my time staying still, and wasn’t sure if I wanted to continue making (typically – June was the first month since March 2010 that I didn’t go anywhere) a trip a month.
Once I’d got over the surprise, two things struck me. The first, that this guy had – in a matter of days – noticed what I was good at and was working with my non-eng strengths – being a connector, and something of a nomad.
The second, was that what I was going to spend my time doing, completely debunked a very depressing conversation I’d had with two (female) CS teachers. They’d talked about why their female students didn’t want to go into Engineering – and one of them, why she left industry for education. It was… somewhat stereotypical. Girls like to make things pretty. They’d prefer to market something than build it. Women are more interested in the big picture, how things fit together. They want to spend time with people, not machines.
About a year ago, someone asked me if I was interested in working on a compiler team. I said, “I think I’d enjoy it for about 6 months, and then I’d start to miss humans”. He was amused and replied that my response was what he’d expected me to say.
I suspect you have to be a particular kind of person to work on a compiler team. I am not that kind of person. In fact, many of the things these teachers saw in their female students are true of me, too. I like things to be pretty. I care not just about what something does from a technical perspective, but why it’s useful. I’m better at a system design level than at bit-twiddling. I’m obsessed with humans and how technology can improve things for them.
Yes, I love to write code, and that is a big part of my job. But – it’s not all that I do. To say that being a software engineer is like X, and girls won’t like it because they don’t like X is a mistake.
In this case, I think the thing about girls not liking X is a massive over-simplification and generalization. But my point – even if it is accurate – it doesn’t mean that being a software engineer isn’t a good fit. Being a software engineer is not “like X” – that’s far too simplistic. There’s so many different kinds of things you can work on, and they require different skill sets. I would be unhappy and not very good at compiler work, but the kind of person who would excel at working on compilers would likely be unhappy and not very good at the kind of work that I do.
I don’t just write code. I also think about user interaction – working on features, I will say, I think this flow is more consistent. I work on the design of components from a perspective of the overall system – and testability. I work with other people who have less experience on the codebase or in the language to get them up to speed. I write up patents, and get to explain what I’ve come up with to lawyers. I put myself in the perspective of the user and think about what will be most important to me as a user. And I’m a connector – sometimes the most useful thing I bring to a discussion isn’t what I know, but that I know who will know about it.
Of course, there are things that I’m terrible at. I can’t see pixel differences, in fact if you show me one UI and then another similar one I will be pushed to see the difference between them, and certainly not in a matter of pixels. I’m not great at convincing myself that something is programmatically correct – probably why I love testing. I can’t “hack”, it makes me nervous when I don’t know why something works. I can’t write assembly. When I need to optimize, my preferred plan is “write it in Haskell”.
To take a narrow view of what you need to be good at in order to enjoy being an engineer, is crazy to me. All over the world, software engineers are building an unimaginable number of wildly different things. I’m incredibly lucky, but I think if you work at it you can often create the flexibility to make it whatever you want.
So what if girls want to make things pretty. There’s too much ugly software out there, and I say – go for it. All I think matters is – do they want to solve problems? Build cool things? Can they think logically and break down a problem?