Friday, September 11, 2015

HLF2015 / Fred Brooks on Software Engineers and Teams

This blog post originates from the Heidelberg Laureate Forum Blog. The 3rd Heidelberg Laureate Forum is dedicated to mathematics and computer sciences, and takes place August 23-28, 2015. Abel, Fields, Turing and Nevanlinna Laureates will join the forum and meet 200 selected international young researchers.

It has been over a week since the end of HLF, and I've been settling back into my life as a software developer at Shopify in Ottawa, Canada.  I often find myself thinking back to what I consider to be an epic conversation with laureate Fred Brooks.  With my husband and fellow blogger, Andrew Carmichael, I interviewed Brooks in what was a joint effort.  Brooks was kind enough to spend over an hour with us.  Since I can't possibly share everything he said in one blog post, I've put together a transcript that you can read online, and I've picked a few tidbits to share here.

Because Andrew and I both work as software developers, we wanted to take a more practical, industry-driven approach to our discussion with Brooks.  For example, we asked early on what makes a programmer great.  At first Brooks simply said "too hard" in his patient southern accent with a smile on his face.  He then explained that being able to visualize complex geometric constructs was a pretty good indicator of whether beginners would be good programmers.  We also discussed the importance of teamwork:
I once worked with a colleague when I was a summer intern… this fellow was extremely difficult to get along with.  He was our supervisor to us two interns, and that was fine, but he could not get along with any other colleagues in the room.  His boss remarked one day to the two of us privately, “You know, if we could put him in a box with two slots, one to put problems in and one to get answers out, it would be great!” [laughter] And he was easily the sharpest person in the room, but I was not surprised to learn three years later that when they had a reduction, he was the first one let go in that group. ... We used to get fractional distillation of the nerds [laughter]. ... Now we’re drawing from a larger population.
We also wondered what companies could do to grow recent graduates into effective professional programmers.  For Brooks, the key is apprenticeships.
Only talk to me about the theory when I’ve encountered the problems.  I’m willing to listen to your war stories, but I need to be able to bring from my own background my own war stories to make what you say to me relevant. 
Therefore I would do rotational mini-projects, and I would do rotation definitely so that...well, you know, the same thing they do with residents in medical school.  Go try surgery, go try pediatrics, go try psychiatry.  It will make you in general a better physician in all respects. 
I’m not interested in making people into better programmers, I’m interested in making people better software engineers.
Once a programmer is ready to join a team, there are many skills to learn.  For example, estimating how long software projects will take is a very difficult task for teams.  When we asked about what could be done about it, Brooks gave us this great quote:
One of my friends who was an electrical engineer on the 360 project said there are promising engineers, and there are old engineers, but there are not promising old engineers [laughter] - they don’t make promises!
Of course, how well a team can produce estimates is not the only indicator of how successful they will be (or perhaps not an indicator at all).  We asked Brooks what he would do if he could spend one day with our teams at work if he had to determine whether we would succeed or fail.
Talk to a lot of people [laughter].  One of the things I’d be looking for is how consistent is their view of the goals.  One is: how highly do they respect each other? One I would be looking for is: do they believe in the goals, or is it something they were assigned and not sure they’re going to be able to do anyway? One is: are they excited about the goals? “Yeah, this is going to a contribution, it’s going to be a great system, and I’d be glad to be part of this team!” 
One question I’d listen for, but my presence would interfere, is when they chat, do they chat about work, or last night’s TV? Which has to do with: are they really excited about what they are doing, or are they just turning the crank? 
Purely subjective.
This is just a taste of our interview.  Our conversation took many different directions, winding through topics like education and Grace Hopper.  We were very grateful, however, to be able to bring all kinds of practical advice and insights to our team at work.  Again, check out the transcription of the interview if you want to see more.


Post a Comment

Comments are moderated - please be patient while I approve yours.