Can your team scale? Scalability, the ability to increase and decrease capacity and throughput on demand (or nearly so), is a big deal in software development these days. As an industry, we spend a lot of time thinking about scalability and with the cloud creeping into our daily lives, it's becoming a common requirement for new systems. But what about scaling our businesses? Every business wants to be successful and with wild success comes wild growth. Are you ready for that?
A number of things come into play when scaling up a company. Consider organizational structure. There are some pretty good rules of thumb about break points for growing companies. A one- or two-man show encounters a break point when they hire their first employee. After a company grows to six or more, some degree of management is introduced. After about a dozen employees, things begin to get more complicated. New laws and regulations begin to apply, such as exceptions to OSHA regulations tailing off, and more managers are required to keep everyone productive and moving in the same direction. It's here that some percentage of the company is dedicated to working on the company itself versus purely being productive. Communication starts to become a critical issue for businesses of this size. At about 30 employees, the small company feeling starts to fade a bit and it's more common for people in the same company to not know one another or interact. It's often at this point that a full-time human resources person is necessary and a well-defined, company culture starts becoming crucial. At about 50 employees, the intimacy of the small company begins to fade and most laws and regulations apply to the company, such as The Affordable Care Act, requiring the company to provide healthcare. There are clearly established levels of management in the company and for the most part, people don't interact with employees at different levels from themselves very often. The next big jump comes at about 250 employees, as the company transitions from a small business into a medium-sized business. Preparing for and managing these jumps is crucial to growing a business.
How does a small company handle this type of growth and, more importantly, where do all these new people come from? How can they be brought on board, trained, and brought into the company culture quickly and effectively without consuming too much time or killing productivity? It's truly a question of scalability, and many companies aren't able to make the jump. This is where managers come in. One of the solutions is to add one or more layers of management. But adding managers is a balancing act because the more layers of management there are, the less efficiently the business can run, and the greater the communications hurdles. On the other hand, each manager can only effectively handle a certain number of direct reports without falling into the same pitfalls.
Let's assume for now that the company has the right management structure. To be successful at growth, those managers have to be good at putting systems in place. When dealing with more than a small handful of people, it's very time-consuming and error-prone to bring on new employees; expectations begin to vary from employee to employee. Systems and processes are nothing more than well-documented tasks and expectations. They could take the form of a simple checklist or a five-inch thick manual or a three-week training curriculum. Large businesses are built on such systems. Some businesses, such as franchises, where every aspect of the franchise is spelled out in excruciating detail, depend almost exclusively on their systems and procedures. Of course, this level of documentation is often out of reach and not necessarily appropriate for small, growing businesses; the manager's job, often with great reluctance, is to create and maintain this documentation.
As managers within a growing business, it's our responsibility to make sure that the team we're responsible for can scale. New hires can't take months to come up to speed. We can't afford to take a skilled productive worker out of the lineup for extended periods to make that happen. The new hires will have to fit into the culture. We'll have to provide them with what is expected of them. We'll have to inform them of our company's preferences for how things should be done. We have to provide them with the resources they'll need to be successful. Finally, we'll have to get feedback from them so that we can adjust our systems and processes as necessary. And of course, we'll have to occasionally re-evaluate and update our systems and procedures to keep them in line with our goals and all of the things we learn over time.
If you don't have your systems and procedures documented, start by getting prepared for your next hire, whether it's because your team is growing or you're just replacing a team member. What will they need to know? If you have an HR department, they'll take care of most of the generic stuff for you. Which holidays are observed? Is your W-9 filled out? This type of information is typically the same across the company, and if you don't have an employee handbook yet, managers across the company should create and adopt one. This often includes information about the company and its culture. such as the company's mission statement.
Once the generic stuff is out of the way, roll up your sleeves and begin documenting your department and your team. Start with a list of resources. Who does this person report to? Who will they be working directly with? Who will they see if they have to talk with someone about X or Y? Where will they get their credentials and who will help them sort out problems with access? Make sure new employees have the contact information for those people. Next, spell out the company's and your own expectations of them. It's important to write this down. Document your company and your team's preferences, including coding standards, design patterns typically used, and your development philosophy.
Finally, document the project they will be working on. Include an overview of the project, contact information for all relevant participants, including job titles, software prerequisites they'll need to have installed, a rundown of the network, and the relevant computers such as database server, build server, source control server, etc. Give them a description of the solution, what the major pieces are, how to find things, and an architecture diagram. Give them access to and an accounting of whatever documentation you have, including a dictionary of terms. Describe the development processes including builds, build servers, build configurations, deployments, deployment configurations, branches, check in policies, etc.
By the time a new developer is ready to sit down and work with highly paid and valuable resources, they will have some background and level of familiarity with the company. Although there's no substitute for mentoring and face time, there's also every reason to move what burden you can from your scarce resources to a set of systems and processes that can be re-used and aren't susceptible to variations from person to person. Doing this for a new hire will yield benefits for you and for them, but more importantly, it will give you one of the key ingredients you need to scale your team quickly and efficiently and it will become part of the foundation of the company as it grows.