Writing Software Is, Well, Writing
Managing software projects is notoriously hard. The results are unpredictable, the problems are often understood in detail only by a very few, and the personalities can be strong and opinionated. The job would be made easier, I think, if we admitted what we are really doing: managing a team of writers.
We write software: we use language to create a thing that has an existence from an idea, an abstraction.
The Environment: It’s All Business
So we’re managing a team of writers. Not only that, but we are usually managing in a business environment. Our creation is constrained by time and budget, and there are often competing (sometimes strongly competing) ideas about what we’re building, and, more crucially, why. The ideas we are translating into language are open to interpretation, and different groups (the CEO, Marketing, the customer) can have wildly different interpretations. Not only that, but the stakes can be high: the survival of a company, the value of years of stock grants (sometimes measured in numbers that most of the world can only gasp at), the first (or last) shot at making it big, careers, jobs, futures.
We are managing a creative process which is by its nature unpredictable and personal, in an environment which craves certainty, predictability and consistency.
Managing Software Creators as Writers: Some Implications
Guidance, Not Control
We tend to react to these pressures by grasping for control. If we have “good management” — firm enough deadlines, detailed enough wireframes, daily checkins, monthly project reviews — then we can keep the whole thing together. Control is not the right paradigm. The job is guidance, sometimes tight, sometimes loose. Sometimes the “writing” is flowing, sometimes it needs to coaxed and forced. The manager (a better word is “producer”) has to understand the creative process: what is needed? what does the work want?
Own the Goals
Your writers are deep in their code. That’s where you want them, and where they want to be. They are “pulling on threads”, discovering in language what needs to be built. The writing of the code requires that they, to some extent, lose sight of the purpose of the writing. Not because they don’t care, or because they are irresponsible, but because they have to be able to be open to where the writing takes them. Your job is to hold the purpose of the team, the goals. You own the goals so the team can be continually course-correcting towards them. Your holding the goals (today, this week, this month, this year), constantly communicating the goals, adjusting the work so it’s directed towards the goals, is a vital service to the team.
Tight Processes, Loosely Held
Your job is to balance loose and tight process. Deadlines are good. Deadlines at the expense of a brilliant burst of creativity aren’t. Brainstorming is good. Too much brainstorming moves away from the real work. A small team working with only a notional idea of a goal may produce terrific results. A large team without a clear destination will fail. A well-designed process allows a writer the freedom to create by limiting their boundaries. An unduly “stiff” process chafes, and rubs against the organic business of creating.
Writers are Individuals
The act of translating a concept into language is not rational, linear, open to easy analysis. Writers know that some days it comes easy, and some days it feels like it’s gone forever. Like writers, software creators have a massively broad range of skills, approaches and personalities. What they create is a reflection of who they are. There are structure-people, speed-freaks, intuitive idea generators, generalists, specialists, language pedants, brilliant mess makers and steady, reliable builders, among many others. How they create is equally individual: some need a complete and rigorous architecture before they can bear to start. Some just need a keyboard. Some take a week doing apparently nothing before they suddenly spit out a completed work. Some work daily, predictable hours. Some are motivated by money and stock options. Some by the beauty of what they can create. Some by the connection that comes from working intensely side by side with other brilliant people who share their craft. Your job is to understand these creative, highly variable human beings and get them what they need to work well. In particular, you need to fit the job to the writer. If you want something to go fast, find a speed-freak — a writer for whom an incredibly fast solution is a thing of beauty. If you want a strong, stable, long-term architecture, find the person who loves structure, elegance and has the strength of personality to stand up for it. If you want a gorgeous UX, look for the team member with the spectacular personal website. We are drawn to what we are drawn to — for some reason this fundamental piece of human nature is obscured, or down-played in business. Find what your writers are drawn to, and let them revel in it.
Love the Mystery
Your job is to balance the mysterious business of creativity with the hard-edged requirements of business. If you love the mystery, then the surprises, the uncertainties, the impassioned arguments about apparently tiny details — all the passionate business of creating something new in the world — will take you deeper into the work, will align you with your group. If you are afraid of the mystery, find its unpredictability difficult, then you will be constantly wrong-footed as you try, and continually fail, to have it completely under your thumb. Control will take only you so far — a smallish (maybe ten person) group, a few years of managing. To go further, you need to love the mystery.
Why We Do It
In the software industry (which these days is almost every industry), we take abstractions, concepts, visions and turn them into something that works. And we do it inside timelines and budgets, and we do it for high stakes. Building a great piece of software is a constant balancing act of creativity, structure, improvisation and deliberation. At the heart of it is the act of writing, an act of will, inspiration, craft and (often) sheer effort. The job of managing software is to guide creative, brilliant, massively varied writers un writing their best work. A privilege and a joy.