Staffing Technical Functions in Software Development

What

Staffing is the most time-consuming and critical function of any company, and is especially crucial for start-ups and small companies. Staffing of technical functions in software development companies requires careful planning encompassing skill sets, ratios between functions, transferable skills and other fit factors, and speed of hiring.

Why

Every person is critical in a small company. The cost of a bad hire is high; hiring errors must be found and corrected very quickly to avoid lasting damage to the company. The most effective solution, of course, is avoidance - the ability to consistently hire the right person at the right time.

Hiring the wrong person wastes significant time and money on the hiring process and resulting exit activities alone. Technical errors made by a person with the wrong skill set and not discovered until significantly late in the development cycle (or even after release) can be costly. Hiring a person who is overall a bad fit with the company - its culture and its people as well as its technical needs - can cause serious morale problems across the company, both during the person's tenure and following departure. Considerable management time, always in short supply in a small company, must be spent to correct hiring errors, either by counseling the person to productivity or by managing him out of the company.

The wrong mix or proportion of people amongst technical functions can keep the business from operating at peak efficiency. This mix is important to ensure flexibility and to meet schedule and quality goals.

How

One of the first (and most often skipped) steps to successful staffing is to define the desired ratios between technical functions. This will allow determination of the need for expansion in each area. For example, establish the ratio of development engineers to quality engineers (start-ups often use 4:1 for this); the ratio between support engineers to development engineers; and the ratio between technical writers and development engineers. Next, create a general staffing plan including hire order and timing with respect to funding, release schedules, and ramp-up of development. Following are some general guidelines for consideration:

  1. The key architect is frequently the first hire. In a start-up environment, this person should also be able to code effectively until critical mass of engineers is reached.
  2. At least one, probably several, more key developers will be needed.
  3. Engineers are rarely good UI designers, particularly layout and flow, and correcting UI errors after the initial release can be very costly; however it's rarely cost-effective to hire a UI designer early in the staffing cycle. For a UI-intense application, consider using a UI consultant in early stages.
  4. Hire quality engineers no later than hiring of the last developer for the predetermined ratio. (It is generally a good idea to hire the first quality engineer when the first developer is hired, then work into the desired ratio.) If you're unsure whether a quality engineer is needed, consider starting immediately with a contractor. Because software quality engineering is very different from development engineering, development engineers rarely have the skill set and orientation to test effectively.
  5. The first Support engineer is typically hired prior to the first product launch unless subsequent schedules take support by implementers into consideration (note that having development engineers work directly with customers other than developers can be problematic). Support engineers can often double as educators and sometimes as professional support - for small, early-stage start-ups, try to get someone who can wear several hats. Take into account number of support shifts. If the Support function is a planned outsource, at least one internal support engineer will still be needed as a liaison and center of competence.
  6. Don't have engineers write documentation. Use a professional contract technical writer until enough work exists for a full-time writer. Don't try to use marketing writers as tech writers or vice-versa - it's a different skill set. Look for tech writers to go contract to hire, and who understand online as well as hardcopy documentation. Many tech writers are good UI designers as well.
  7. Monitor the amount of time engineers are spend filling I/T and configuration management (CM) functions. I/T functions can often be outsourced effectively; CM functions generally cannot. CM requires a certain orientation and attention to detail - if a development engineer is handling CM on a part-time basis because she has no other choice, she is unlikely to pay the attention to detail required long-term. One good way around this is to make much of the CM simple and automated - the same talented development engineer who doesn't have the patience to be a full-time build engineer might be an excellent choice to automate many of the CM functions.

It's a good idea to determine acquisition and interviewing strategies before beginning the hiring process. There are many options, some of them expensive, and it's good to take stock of your requirements before contracting for services. Some considerations for the hiring process: