Tag: students

  • Misconceptions of What Software Engineers Do

    Misconceptions of What Software Engineers Do

    connecting the dots
    Credit: flickr / novaldiflickr

    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?

     

  • Student Workaholism

    The infinite corridor, from the main entrance
    Credit: flickr / Ed Yourdon

    It’s been bothering me a little lately that some people have been describing me as a workaholic, I think that university effectively rewards workaholism and in the real world it’s easier to avoid. Here are a list of reasons I’ve come up with (feel free to suggest more!):

    • No distinction between work place and home place, since home is where you work some, if not all, of the time.
    • Ditto work time, even people on flexi-time often have set hours in the middle of the day where they’re expected to be working. This is not the case for students.
    • The demarcation between your job and extra curricular activities is fuzzy when you’re a student – i.e. volunteering is in a sense part of your studies, as is the part-time job you do to fund them.
    • Students are rewarded for perfectionism.
    • Studying is infinite – as you will never know everything.
    • Students talk a lot about how much work they’re doing, mostly they’re not doing that much (takes a while to figure this out though) which can skew an individual’s perception of how much they should be doing.
    • The organization of the semester, with little work at the beginning and lots at the end, is inefficient.
    • Feedback is typically limited to letter grades, which do not provide a full picture of work and achievement.
    • Students are sometimes encouraged to manage their time badly through pointless assignments and irrelevant reading.
    • Most time management advice for students seems to consist of “don’t procrastinate”.
    • Businesses have incentives to provide tools to increase efficiency, university’s don’t have incentives, and rarely seem to educate students on tools that will help them work more effectively (for a list of tools I think are useful, see this post).
  • Great Teachers

    I’ve been thinking about this a lot lately, given certain circumstances I find myself in. And I’ve realized that in all my time at university (I’m entering my 6th year) I’ve had two great professors. The kind that inspire you, the student, with passion. Who explain clearly. The ones who teach the classes that you work hardest for, where you leave feeling it was worth it because you learned the most.

    Two. Out of  – lets take a pretty conservative estimate – thirty.

    There were a few more who were good – they didn’t inspire the same level of passion, perhaps, but I at least got the impression that they cared about what they were teaching. A significant number just couldn’t seem to be bothered at all. They weren’t “present” in their presentations. They made something potentially interesting sleep inducing.

    If this is typical in Computer Science, no wonder enrollment is dropping.

    So what do these great instructors have in common? I feel these can be summed up into a concept of “Teaching Effectively, not Efficiently”. Efficient Teaching is putting all the concepts out there and trying to cram them into your students. Effective Teaching is sending your students away understanding the big picture and interested in learning the details that make it up.

    • Passion. They believe in what they’re teaching and convey that to the class.
    • Practicality. Being able to talk about the practical applications of something keeps students engaged.
    • Understanding > Learning. Memorizing something is pointless if the student can’t apply it.
    • Class Engagement. Class is interactive and doesn’t consist of a prof droning on whilst students fall asleep.
    • Engaging Assignments. These profs set homework students want to do, not what’s in the textbook.

    Anything I’ve missed?