Developers, here’s a basic programming question about your process: Do you clone what you did last week, or are you reflective of your work and iterate? Which line of code best describes your team’s development style.
next_week = clone(last_week)
next_week = retrospect(last_week)
Hoover asked this of his Twitter community and got some rather funny (and geeky) responses:
next_week = rand(99) / 0
next_week = newWeek();
To harness the collective mind of your development team, you need to adopt a heedful programming philosophy that requires iteration and paying attention to what you’re doing as you’re doing it, Hoover says. Sit down as a team and ask how can you improve?
The philosophy of heedful programming, says Hoover, is based on an academic paper exploring how aircraft carrier crews have collective minds when it comes to dealing with the complexities of working on aircraft at sea.
Besides weekly or more frequent reflections of the development process, Hoover explains some other elements need attention. Among them:
n00bs Need Love
Be good to them and welcome them in. You can’t hire senior programmers all the time. Often you need to hire young people and help them grow. It can be frustrating, but it’s a critical part of the development process.
If something is hard to do, then do it all the time. For example, if it’s hard to onboard new people, then force yourself to rotate teams more often than you normally would.
Stop Referring to Programmers as Resources
It’s easy to think of a team as a bank of servers. If one leaves, then you just get another. If you do this, you break the team. If someone ever talks about you as a resource, challenge them and ask if they’re talking about inanimate objects.
More Stories, Less Documentation
Serious documentation is a bore. Nobody wants to read it. Instead of relying on it, have a conversation with someone, or have them describe something in front of a white board.
Drive toward these goals to build a collective mind, says Hoover. Once you have the collective mind, you should be able to achieve the following:
- Scaling systems: handle the complexity
- Growing teams: a cohesive culture
- Growing people: Accept upbringing
Photo: U.S. Navy