OK, so you’ve built your n-tier architecture. You’ve deployed it in the cloud. You’ve scaled it horizontally, vertically, geographically, and even temporally. It grows and shrinks at your command. Now what?
Now you need to consider the human tier. You can masterfully solve all your technical problems, yet be blindsided by your organizational problems. Just as cloud computing enables elastic scaling of processing resources, venture capital funding enables rapid scaling of your human resources to meet the demand of a hot market. So how do you keep teams agile, productive, and happy as your company grows?
Managing Workforce Growth: Think Triage
Managing a rapidly growing workforce can be a challenge. You hire at a gallop, then freeze, then sprint, then jump through hoops of fire, all while competing with the slickest companies in your space and all the sexy startups that are revolutionizing social/mobile/cloud computing. Virtual strangers, in the person of new hires, begin invading the kitchens of your fast-growing company.
At RightScale, we have found that smart people want to work with other smart people, and therefore it’s paramount for us to keep the hiring quality bar high. We use InterviewStreet to prescreen developers, and often probe prospective employees on their motivations for joining the company.
Bear in mind that even once you’ve made a hire, your job is not done. Employment is a two-way street - a symbiotic relationship between employee and employer. Think Match.com, not SugarDaddy.com. Hire even in bad times, fire even in good times. Ask your employees what they think of their company. Are your company values truthful or just truthiness? Your future success depends on listening to even the lowest person on the totem pole.
If the relationship doesn’t seem to be working out, fail fast. Let the mismatched ones leave with dignity, whether it is during interviews or after their first projects or two years in. Sometimes, personalities conflict and it’s nobody’s fault. Other times, people fail to meet expectations, or their skill sets become obsolete. Instead of letting a problem drag on and on, act fast and be generous. Think triage.
Managing the Work Environment: Fight for Focus
Even when you hire the best people, eventually things can deteriorate. Your rock star developers enter the greatest-hits era of their careers. They start to visibly gray at the temples from all the new directions from management. Meanwhile, newcomers get the obligatory “do as we say, not as we once did” warning speech before being thrown into the fiery hell of legacy code maintenance. All around you, the hot-patching of ancient code becomes like an itch that you can’t scratch.
Your job is to keep your staff productive. Some guiding principles can help. For example, multitasking is mentally disruptive. True innovation requires a state of flow. Therefore, you must single-task people as much as possible. Let them focus, then switch tasks, then focus again. The good news is, the more people you hire, the greater the possibility of single-tasking. The bad news is, the more people you hire, the greater the likelihood of multitasking, due to coordination tasks and interleaving of projects. You must create an environment in which single-tasking is valued and fight that fight daily.
Your codebase can either be an asset or a liability depending on your development philosophy. Development costs are linear, but bug-fixing costs are exponential. If you skip out on tests and documentation in order to ship a project quickly, you may pay for it tenfold down the line. Developer happiness is strongly correlated with the quality of your codebase, and quality code comes from happy developers. Use this fact to start a positive feedback loop by focusing on high-quality code from the start.
As engineering departments scale up, so must internal communication. Traditional hierarchical structures sacrifice innovation for stability. On the other side of the spectrum, startups tend to be democratic to a fault. If the network is the computer, then the internal social network is the company. However, because this network is fully connected (meaning everyone can communicate with everyone), it can suffer from the tragedy of the commons. The critical resources are time, space, and attention. But as your company grows, everything starts to fill up: meeting rooms, chat rooms, mailing lists, and to-do lists. That can lead people to try to cut corners to stay productive.
If you start to notice people skirting official procedures, ask them why. Often, it is because a policy hinders their productivity without any noticeable benefit to them. For example, if the bug ticketing system is routinely ignored, it may be because it’s too complex, too dumb, or too noisy.
Pay attention to the way you communicate. Realize that mailing lists don’t scale. People will pay attention to your email the way they pay attention to a fallen tree in the forest. Use asynchronous communication such as group chat and dynamic group memberships such as ad hoc chat rooms to keep communication relevant but not intrusive. Preserve communication history to avoid duplication. Make it searchable and even glanceable. Democratize the company wiki so that everyone can contribute to the shared knowledge base. Invest in best-of-breed communication tools, whether it be hardware, software, or network equipment. Use shared calendars, especially if you communicate across time zones.
Managing People: Embrace the Strange
Q: How can you tell if an engineer is an extrovert?
A: He looks at your shoes when he talks to you.
Engineers tend to have social norms that are miles apart from, say, your business development team. Let individuality reign. Corporations may be persons, but persons are not corporations. Think of individuality as the company’s DNA mutation. It breeds evolution, not stagnation. Today’s engineers are some of the smartest people you’ll ever work with. Match their IQ with your EQ. Arrange hackathons and social outings. Show them that you care. Embrace cultural differences. Hire abroad, broadly. Collaborate virtually. Treat people with respect.
And give personal challenges. All engineers want to stretch their limits, as long as they are in control. At RightScale, we recently launched a program called iTime: After lunch on Fridays, engineers can pursue their own projects and collaborate outside of their regular teams. This encourages innovation and captures ideas that come up naturally but that aren’t on any roadmap.
Much like New Year’s resolutions, true change comes from within. Strive for a company hierarchy where the leaf nodes are the heavy ones. Push responsibility down as much as possible. Even a relatively new developer can mentor the newest hire; after all, he just learned many of the same things himself, so it’s already in his short-term memory.
If you do all this, your human pyramid will be stable, healthy, and happy.
To learn about the benefits of using cloud computing resources and get advice on how to efficiently manage them, request a live demo of RightScale.