Brad Feld recently shared “what does a CTO do”. While several points referred to much larger companies that didn’t feel applicable to me — for example, I’m not nearly as outward facing or as involved in sales — it was helpful to read. Mostly, I was glad that it led me to think more deeply about how I view my responsibilities as CTO at a smaller, series A company. I see my responsibilities falling into 4 buckets: people, ideas, the business, and dev-ops:
- People
- We like the Daniel Pink model: mastery, autonomy, and purpose motivate people. We ask people to self-rate each week on those 3 things. I want developers to feel they’re constantly challenged and growing.
- I also like the servant leadership / inverted pyramid model: managers support and empower workers. Joel Spolsky tells the story of being in the Israeli army and seeing a sergeant major show him how to scrub a toilet. I like that. (But we’re keeping our cleaning service.)
- The flow/zone/monastic startup police. If distractions are grenades, jump on the grenades so developers can stay in the zone. If someone has to come out of the zone, I want it to be me.
- Recruiting, interviewing
- Ideas
- Peer-to-peer: If team A discovers an interesting technology, library, or service, make sure team B knows about it.
- Outside-in: books, blogs, podcasts, meetups. Scanning the horizon for new technologies, more options. Before we start building something, it’s helpful if someone can say, “Hey, wait, I saw a package/library/service that will do that” or “Such-and-such company modeled that data or process this way.”
- Teaching/mentoring: We don’t do formal pairing, but it’s not uncommon to sit down with a developer to code something and hear, “I didn’t know you could do that”, or “I didn’t think about that constraint”. And it goes both ways. I also forward articles on programming concepts, technologies, libraries, etc.
- Advisor to the team leads on technology choices and architecture
- Business
- Advisor to CEO — provide 2nd opinion on general management decisions.
- Opinionated on business model and strategy.
- Able to articulate business constraints to the engineering team, e.g. “We only want to build this if it’s in X amount of time, under XYZ circumstances”, “This doesn’t meet the needs of the business.”
- DevOps
- Head of DevOps, which meets the dual role of 1. supporting people (make sure the Vagrant box is working so developers don’t have to fiddle with their dev environments) and 2. supporting the business (the site’s up, it’s fast, we have backups, we’re protecting IP and assets, etc.)