Two weeks ago (was it three?) I spoke at an ACM sponsored Tech Talk at Purdue University. My mission was to give perspective on what it takes to run a large and quickly growing software team. Many startups (including some I’ve been affiliated with in the past) will grow from very small teams to departments of over a hundred in a short time. That kind of growth is explosive so as I thought about what to say during the presentation, I was struck that very rarely do I hear much about the human element of running a software organization. I never heard about it in school. Focus on the people side of software construction has been one of my major recurring management themes because, as I told the group of students at Purdue, software development is one of the most human-intensive, human-dependent disciplines/arts/crafts/industries that exist.
To many, this might exemplify a supreme irony, but this has always been a core belief of mine: you can’t build great software without great people. You can’t build great software without great teams. Hardware and tools are easy to come by now, and the end result is that in today’s software industry, people are the only variable that means anything. That’s why software companies should be psychotic about keeping turnover low. Everywhere I’ve been I try to minimize bureaucracy. I encourage telecommuting and spend money on great tools. I like to setup team building, fun activities that appeal to technology workers like playing video games together once a week. These are all downstream things that I focus on to maintain my upstream asset: people.
What does working on a great team with great people look like? For students still in school, this is hard to visualize. Group projects are almost universally hated. Internships generally involve working as someone’s grunt on some meaningless or semi-solo system or task. But I got all heads nodding when I asked if while they were doing their horrible group projects with their horrible group members if they remembered that one group who got up in front to present that was clearly happy to be working together, who had enthusiasm for their work product, and had spent an inordinate amount of time on their project. Did they seem tired or annoyed? No. Was their project the best in the class? Yes. That is what a well-gelled software team feels like, looks like, and that’s the kind of product it produces. I talked a little more about great teams and how to recruit them and run them as we all munched on pizza. Afterwards the organizer walked up and stated that I had given the most non-technical tech talk ever, but that he felt it was important and something that often gets missed.
I definitely agree about the missing piece, and we got invited back for more pizza and another tech talk so we’re grateful for another opportunity. I’d say that was mission accomplished.