© 2001 Johanna Rothman
This article was originally published in Cutter IT Journal, June 2001.
Software organizations take forever to hire technical people, we overwork them, our projects are late, we cant get everything done. We must have a people shortage, yes? No.
True, we have plenty of problems, but we have enough people to do the jobs we need done. What we dont have is skill at hiring and managing the people we have.
If we had a staff shortage, I would expect to see us managing technical staff as a scarce resource. We would:
I dont see us managing our staff this way. In fact, I see just the opposite. We dont seem to value this "scarce" resources, our technical staff. If we treated our people (and ourselves) as if we were all scarce resources, we might not think we have a staffing shortage. To manage our human capital well, we need to:
The problem is not a staffing shortage. The problem is the mismatch between the work weve taken on and the staff we have available. To reduce the mismatch, we can manage the work, our existing staff, and our hiring process more effectively.
Planning software projects involves both selecting which projects to do when, and choosing which people are needed when. With a scarce resource, youll need to plan the work carefully to avoid bottlenecks. How many times have you witnessed a conversation like this between a project manager (PM) and a functional manager (Manager):
PM: I need Jenny, the Oracle DBA; Max and Don, the two testers; and Elisa, the GUI person on my project by the end of this month. If I dont have them, I wont make the release date.
Manager: Well, theyre still on their other project. What if we hire more people?
PM: Well, we estimated the project with these people. Id really like to have them.
Being dependent on just a few people for successful projects sets up a feedback loop. When one project is late, the following projects are bound to be late, as long as youre always dependent on the same people. Even if you hire new people, the new people slow the project [see footnote 1], because they are new to your organization and the product. When people are not ready on time for your project, the project will be late.
If youre going to have people working with no down time between projects, you either need to start the next project on time, or not care about the consequences of successive project slips[see foonote 2]. When all of your staff is working at full tilt, you have no control points to change the feedback loop. You have no way to easily replan your project portfolio.
When you manage technical staff as scarce resources, you avoid staffing bottlenecks and reducing staff efficiency with context switching.
When people are fully committed to their current projects, they cant take time to plan what theyre going to do next. They cant take time for training, so they arent ready for the next kind of technology. They cant start low-level thinking about the next project or product, until they are freed up from their current project. If you keep everyone working at maximum capacity, you may find it difficult to sufficiently staff the project enough to actually release it. At maximum capacity, you need to hire more people so your projects can survive when people on your staff take vacations, or get sick
Sometimes, the bottlenecks show up in only one portion of your project staff, usually the writers or testers. Then, its time to examine what the writers and testers are doing on the projects, to make sure theyre working to move the project forward. I once worked with a test group that faithfully recreated all the builds, but didnt do any testing. The test manager demanded more people, but the project manager worked with the test manager to see that the testers started to test the product, not just the build procedure. The project manager eventually brought on a release engineer, so that the testers didnt need to test the build procedures at all.
One way many organizations try to manage the bottleneck or project competition problem is to allocate people to several projects at once. Some managers think this is a way of seeing that all projects make progress. Unfortunately, the more projects a person works on, the less effective he or she is [1,2]. If you plan projects so that people multitask, youll need more people than if you plan for people to work on just one project at a time.
Context switching is a problem for managers too. Dont think youre not a scarce resourceyou are. If youre trying to manage too many people or too many projects, how good a job can you do? Can any of your projects make progress if you cant take time to think about them? If youre currently playing the shell game of moving people around from project to project, plan a way to stop. If youre playing a shell game with your time, decide whats not on your list of things to do anymore. We all need uninterrupted time to do our work, managers included. The more you have to think about, the more time you need.
How much work are you responsible for? Are you a project manager, trying to get the most important work done? Are you a manager responsible for a variety of projects?
The more work youre responsible for, the more important it is to manage your project portfoliothe work you oversee. If you have the opportunity to plan and prioritize the projects in your portfolio, then you can staff projects appropriately, plan when you need to hire more people, and train new and existing staff as needed. If you work in a relatively chaotic environment, such as a startup, where you expect to continually replan your project portfolio, then plan for less than 100% staff utilization.
Even if you dont have the ability to plan which projects are done when, you can still manage which people are assigned when to your projects. You can avoid 100% utilization or sharing people between projects. Full commitment, or sharing people between projects, is not necessarily a sign of a staffing crisis. Full utilization is not about the ability to hire more people, but about the ability to manage all the work you have to do, whether its multiple projects or one project. If you have an insufficient number of people, and you cant hire more people, then youd treat the technical staff as a scarce resource, and protect the sanity and health of the people currently on your projects.
When youre managing your project portfolio, you prevent projects from going into death march mode. We allow mandatory overtime and death marches when there are enough people to hire, but we have chosen not to. We choose to leave the project in its full definition, and to leave the staffing as is. If there werent enough people, what would you do when everyone burns out, and cant continue to work?
If you're planning the project work to avoid bottlenecks and managing your project portfolio, you're already treating your technical staff as a scarce resource. Another way to treat technical staff as if they are a scarce resource is to reduce the project deliverables.
Sometimes, the best way to plan your project portfolio is to ask what the minimum deliverables from the project could be, instead of defining and architecting a complete product. We all get caught up in wanting to do a great job with a product, but sometimes the best job you can do is to not do the project at all, or to deliver something very small, or to develop just a portion of a product.
Too many projects exist because they are someones pet project. When you manage your technical staff as scarce resources, you take a long hard look at each project in your portfolio. Should you do this project? Could you do the project later? Could you make a smaller set of deliverables? When you treat your staff as scarce resources, it makes more sense to strategically plan what they will work on, and what they wont.
If you dont manage portfolios and people allocation, then you know you have access to enough people for your organization. You dont have a hiring crisis; you have ineffective portfolio management.
Maybe you do manage portfolios and people allocation, and you still feel as if you dont have all the people you need. What do your scarce resources spend their time doing? Whats your "overhead" rate? How much time do people spend doing things other than project work?
One of my clients boasted about how they had done away with the HR administration positions; now all of the employees could fill out their own forms. When I spoke with some of the engineers, they had nothing good to say about the on-line forms. "It took me three hours yesterday to fill out all the forms now that Im married. But if I hadnt filled out the forms, I wouldnt have gotten the insurance I wanted." Do you really want your highly paid professional staff spending three hours filling out forms? How many other activities like this exist, necessary work that prevents people from getting project work done?
Assess the amount of make-work in your organization. Some examples are: meetings about non-work activities; some "all-hands" meetings so managers can disseminate information; metrics gathered that are never used; preparation for project reviews; and so on. Is all this work necessary? Does it provide enough value to any of your projects that its worth spending time on by the technical staff?
Some of this work is necessary. However, most of the work is not. Most of this work helps managers and administrative staff manage their time better, not the technical staff. Every time you have an all-hands meeting to disseminate information broadly thats not project work, you are optimizing someone elses time at the expense of your software staff. This may be appropriate in some situations, but not when youre treating the technical staff as a scarce resource.
Even if you dont waste time on non-work projects or on unused metrics or presentations, I suspect you still have meetings that waste tremendous time in your organization. How many meetings do you and your technical staff have? Are the meetings all worthwhile? How many of these meeting attributes do you have in your organization?
If your meetings exhibit many or all of these characteristics, they're likely serving your purposes. If not, you probably shouldn't be having them. One of my colleagues, Steve, said: "If I only had to be at meetings when everyone else was there, Id get back at least two hours out of every day."
Steve is an architect, and is called into high level meetings often. Since the managers are always late for their meetings, he ends up with bits and pieces of time waiting for them instead of concentrating on what he has to do.
Steves company chose him for his position because he was able to work quickly and create high level designs that technical staff could understand. Steves days are so fragmented now with meetings, that hes started working from home so he can avoid interruptions.
Steves boss wants to hire another architect to help Steve get all the work done. Steve groaned and said, "Another interruption! All I need is the time to do my job." Steves boss is convinced Steve is in denial about the problem, and is looking for an architect anyway. Unfortunately, Steves boss doesnt understand enough about the product and the technology to do a technical phone screen, so Steve is having to do those, too.
Steve only spends half his day doing project work. The rest of the day is in meetings, marketing products, and compensating for his non-technical manager. He accomplishes more at home, but then he pays for it the next time hes in the office, making up the time on his non-project work.
Steves boss may actually need another architect, but what he needs more is to increase his knowledge of the product, and start protecting Steve from the outside-the-boundaries work that Steve is doing. Steves organization may have a technical staffing problem, but it has certainly hired inappropriate people into management positions.
Maybe in your organization, you manage the project portfolio, and there is little overhead work. Maybe youre just having trouble hiring the people you want. In that case, maybe youve overconstrained your job descriptions. If we assume technical staff are scarce resources, we have to choose which parts of the job description are essential attributes, and which parts are desirable, just like project requirements.
Job descriptions seem to come in two categories: laundry lists of everything you might ever want a candidate to do, or two sentences that could apply equally well to developing software for the space shuttle or supply chain management. I can sympathize with hiring managers who write those job descriptions. Frequently, the descriptions go to the Human Resource departments, where a non-technical person or a software application reviews resumes before sending on possible candidate to the hiring manager.
The HR staffer doesnt know what technical qualifications to look for on a resume, so they look for keywords. Software doesnt know how to look for anything but keywords on a resume. Candidates arent stupid; theyll put anything that might be a keyword on a resume. The result: severe keyworditis, and your inability to screen appropriate resumes from your ever-growing pile of them.
Companies that have trouble hiring tend to write narrow job descriptions without considering transferable skills and investing in training for current and new staff. Too many software companies think they need people with college degrees in computer science or engineering. Thats too bad, because some of the most talented software people I know dont have college degrees. A degree is a sign of perseverance in an academic environment, not the ability to perform on the job, certainly not a software job. If we have a hiring shortage, why are we not hiring more people without degrees, and giving them training, if necessary?
How old are the people youre hiring? How much are you willing to pay them? Those of us whove passed the magic age of 40 tend to have a more difficult time finding jobs than younger technical staff. When I ask hiring managers about this, they say things like, "I really need someone with 3 years of Java experience." When I ask why they wont train experienced engineers, the managers say, "Theyll leave in a couple of years anyway. Why should I train them?"
Experienced technical staff cost more money than younger, less generally experienced staff. More experience can bring more maturity, more loyalty, and more experience making software that works. If we dont have enough people, why are we not making offers to experienced engineers, even if they are experienced in a different area?
We dont need to hire just people who are only warm bodies, just anybody. We can find people who are close enough to the job descriptions we have, and hire them. After all, we rarely fire people because of their technical incompetence; we more often fire people because of their inability to perform in our organization, a cultural fit problem.
Even if you receive appropriate resumes, how long does it take you to respond to a candidate? Most of the hiring managers I know take days to respond to resumes, not hours. In a real shortage situation, hiring managers would respond in minutes, because if they had a good resume, they wouldnt want that candidate to slip through their fingers. Even if you are one of the few hiring managers who responds to a candidate quickly, how long does your entire hiring process take? Does it take you more than two weeks to invite a candidate to an in-person interview? How many interviews does each candidate have? How long does it take you to make an offer to a candidate?
Unfortunately, many organizations have hiring processes optimized for their internal staff, not for candidates. Its not uncommon for candidates to send in their resumes, and then wait two or three weeks to be called for a phone screen or an interview. Its also not uncommon for candidates to go through two or more rounds of interviewing. And its rare to find companies who can make same-day offers (i.e., offers the same day as the interview).
When we treat technical staff as a scarce resource, were much more active in our recruiting efforts. We recruit continuously, using multiple recruiting techniques, rather than waiting until the paperwork is signed off for an official open position. We search out potential candidates, and quickly assess their ability to work in our organization. We make same-day offers. We don't wait for the perfect person to come along, interviewing scores of candidates, leaving jobs unfilled for months at a time.
We are lucky in our field. Not all work has to be done between 9am and 5pm in a centralized office. People can work remotely part or all of the time, work fewer than 40 hours per week and still be quite successful doing technical work. In my experience though, its harder for hiring managers to hire people who dont fit the "40 hours in the office" workweek model. Most of our organizations are not set up for telecommuting or making part-time workers successful.
If you have a shortage of technical staff in your geographical location, there is someone looking for a job who would fit. As hiring managers, we need to be willing to explore remote workers.
Some people prefer to work part-time. Part-time workers may not fit with how youve planned your projects, but I know of many part-timers who accomplish almost as much as a full-time employee.
If we had a true shortage of people in our field, we would treat our technical staff the same way we would treat any other scarce resource. As managers, we would change the way we hire and manage them, and manage our projects. We havent at least, not yet. There may be local shortages of particular technical skills. We certainly dont have enough skilled technical managers. But the evidence doesnt point to a shortage of people.
If youre having trouble staffing your projects, consider your options:
We dont have a shortage of technical staff. We may have a shortage of effective technical managers, but there is enough technical staff to get the work done, as long as we treat our technical staff as if they were scarce resources.
I thank the following people for reviewing early drafts of this article: Martine Devos, Mark Druy, Dale Emery, Elisabeth Hendrickson, Dwayne Phillips, Stever Robbins.
1. DeMarco, Tom, and Tim Lister. Peopleware: Productive Projects and Teams, 2nd edition, Dorset House Publishing, New York, 1999.
2. Weinberg, Gerald M. Quality Software Management, Volume 1, Dorset House Publishing, New York, 1992.
1. It requires time from your current staff to educate new people, so not only do you not get an immediate productivity increase, your productivity actually goes down as you hire more people. After you've sufficiently assimilated the new people (3-6 months), they no longer drag the original staff's productivity, but their productivity is not yet that of your original staff. Only after the new people have been on staff for 9-12 months does their productivity match that of the original staff.
2. Not all projects have to be done quickly. In my experience, any product thats past its early adopter stage doesnt need frequent releases. In fact, your customers would prefer that you ship fewer revisions of the product, because they are not ready to install the new revision.
Johanna Rothman observes and consults on managing high technology product development, looking for the leverage points that will make her clients more successful. You can reach her at jr@jrothman.com or by visiting www.jrothman.com.
Copyright © 1998-2007 Rothman Consulting Group, Inc.
All rights reserved.