Fast growth is a great problem to have. You may be experiencing viral success, attracting new investment, or successfully pivoting to a broader business model. Or all of the above: Good for you!
You will begin, no doubt, by recruiting the best developers you worked with in the past from your trust network; the pool of resources you can always hire with high confidence. Ideally, you will recruit senior leaders first, then a mix of mid and early career developers to fill out agile teams with minimal training time after onboarding. Also, ideally, you will be able to sell your firm’s future to convince talent to join you full time and trust you with their career.
But it won’t be easy. Rapidly scaling your software organization beyond your trust network is always hard because trust in a developer is not earned in just one or two sprints. You will be confronted with labor scarcity and brutal competition. To succeed will require access to multiple labor pools, including remote, possibly offshore and contingent labor pools. Automation will be necessary but not sufficient.
Success will also require a sophisticated staffing process to expand your trust network with the help of experienced managers expert in both technology and the recruiting of elite software talent.
At Telegraph Hill Software we have learned some valuable lessons helping firms rapidly scale their development organizations in these times of scarce labor supply, high demand and brutal competition. This article presents the first four of eight lessons that are common to nearly all of our clients:
Lesson 1: Your Business Model Determines Organizational Structure
Lesson 2: Technical Architecture Determines Who You Hire
Lesson 3: Budget Determines Where You Hire
Lesson 4: HR’s Primary Role Is Orchestration
Your industry, market, and business model determine your product architecture. That in turn determines the shape and texture of the development organization you need to grow (Conway’s law). Some of the factors that will determine your agile development organization include the following.
- Are you in a regulated industry? Many non-functional requirements (security, privacy, risk, availability, data domiciling, etc.) are non-negotiable under regulation. They impose inescapable organizational complexity — particularly in QA and Release.
- Are you a SaaS firm? Then yours is a DevOps world, and the pipeline of software development (requirements, architecture, design, code, test, deploy, operate, support) will be tightly integrated using software. DevOps organizational decisions are highly variable: Some see DevOps as separate from development, others tend more toward the DevSecOps approach with a very close relationship with application developers.
- Are you B2B or B2C? The relative value and importance of front end developers varies widely between the two models. There are few true full-stack developers interchangeable between front and back end, and you will likely need line managers for front end and others for back end.
- Are you a platform play based on data ownership? Then data engineering will be a core and distinct development team. The coding style, programming languages, and software components (ETL, Database, Reporting) are different. Those, plus the need to understand business semantics usually requires a separate team.
- Are you a legacy monolithic application experiencing rapid growth? If so, then feature-set teams may be the right organizing principle for your agile teams. You should plan for an architectural shift to micro-services — a shift more complex than expected.
- Are you a project or program within a larger firm? Then your team’s growth is in the context of existing teams and functions in the larger firm which complement yours. HR and management support will be key.
There is no one-size-fits-all software development org chart. You cannot force-fit your org chart into something you read by a former Google or Microsoft manager. You must instead design the organization to best fit into your business model, product architecture and the technologies you choose.
Your core software stack and programming language choices are the single biggest determinants of talent availability and development costs over the entire lifecycle of software development.
Cloud Services Choices Determine Who You Hire
We are still early in the era of cloud services. Cloud service providers are deploying ever more sophisticated software tools, applications and functionality than ever. The growth of off-the-shelf components is growing from the cloud platform up more than from the application level down. Your choice of cloud platform is likely your single most important cost driver because of the ever-growing off-the-shelf componentry and its shared operational responsibility model.
Cloud service choices also determine resource availability — especially for devops. First-mover AWS leads in both service variety and overall talent availability. But Microsoft Azure might be a better choice for .NET shops, and the labor pool is growing. Google might be the right choice for firms with intrinsic user or data scalability issues, and although its tooling is largely open source, and its sales plans aggressive, its experienced labor pool is small.
Programming Language Choices Determine Who You Hire
We also live in the great age of new programming language development. New programming languages have powerful new features that can, properly applied, improve productivity and quality of delivered code (e.g., Kotin, Go, Haskell, Erlang, to name just a few.) But they come with few experienced resources to hire. Expect large training costs that work against any productivity gains. When controlled by a large platform (Apex, Expresso, Go, Typescript, etc.) they are not just about productivity, but vendor lock-in.
No programming language decision should be made without a lifecycle cost estimate. Similar arguments can be made for your database and other solution component choices. Best of breed decisions are rarely for free, and sometimes going mainstream is a better call.
It’s essential to work closely with your company’s financial executives to understand the financial drivers of the business and how they affect the engineering budget.
Software managers in San Francisco often respond to a need for speed by assuming a purely local growth model. After all, agile methods prioritize co-located teams. That’s why so many product firms continue to choose San Francisco and Silicon Valley despite the cost. But not all businesses can afford such high developer costs.
And supply is not increasing quickly enough. Recent political changes to immigration are also worsening total technical labor supply. In some regions, even if you can afford to hire locally, you won’t find anyone qualified:
- The current administration has slowed down the H1B program (PDF – 220KB) for high-skill resources to live and work in the USA and is gratuitously denying work to their spouses, who are often also well educated;
- STEM college enrollment from foreign nationals is way down due to a strong dollar, concerns about safety on US campuses, increasingly credible alternatives and perceptions about visa policies;
- Despite shrinking unemployment, IT job growth rate shrank from 28% to 23% in the last BLS reading — a likely indication that work is being pushed offshore because of an inability to hire locally.
Even when local US talent is preferred, financially sustainable growth may require you to find remote or offshore talent pools or partners where costs can range from 50% to 20% of comparable USA costs.
But managing distributed teams across time zones, space, legal systems and cultures is a special challenge:
- You’ll be dependent on distributed management tools and will need line managers with distributed team experience.
- You’ll need hiring managers with language and cultural skills compatible with your offshore team.
- There is little legal recourse to protect your intellectual property or enforce contracts.
- Regulated industries (fintech, healthtech, government, etc. )must be very careful about using offshore labor in any capacity.
- And if not managed carefully, the labor arbitrage advantage quickly disappears with over-hiring and longer delivery schedules.
After you venture beyond your existing trust network of proven colleagues, you will be confronted with labor scarcity and brutal competition. To succeed will require access to multiple labor pools, such as contingent labor, and including lower cost pools, such as remote, possibly offshore.
Most firms place talent acquisition with the human resources department, which usually resides under Finance. When HR is a part of Finance, it does what Finance does best; lower risks and costs. That’s why there is a growth market in “recruitment process outsourcing”, “contingent workforce management”, “workforce procurement” and “vendor management services” SaaS.
Rapid software staffing is a different problem requiring technical expertise, technical team management experience and an understanding of technology in the business context. HR does not typically have these skills. Inevitably, the same technologists and line managers who are under pressure to deliver faster are immediately bogged down with resume screening, interviewing and recruiting tasks. HR should be limited to an orchestration and risk reduction role.
HR should differentiate and standardize full time, contingent and project contract terms for software resources. The management of contracting standards is more important than software managers in a hurry realize.
Some third-party staffing firms will submit contracts with problematic, if not outright deceptive, terms. Those problematic contracts get signed because technical managers are focused on product delivery, not contract language.
HR can help codify diverse hiring, fair and attractive compensation and work environments. Talent acquisition for software positions is best done by software experts. That’s not the case for most all HR professionals, and their role in talent acquisition should be limited to hiring and managing professional recruiters — another form of contract management.
Process Automation and Outsourcing
When it comes to talent acquisition, specialized Human Resources (HR) software can automate many parts of the talent acquisition workflow as represented below:
Coordinating and scheduling the activities in the staffing pipeline — applicant tracking, evaluation workflows, remote interviewing, on-boarding, etc. — cries out for automation for both productivity and risk reduction reasons. But effective use of these tools is only effective with the active and continuous participation with every affected department: HR, Recruiting, IT, Development, Facilities, etc.
Corporate culture is increasingly held to be a top executive priority. If you can instill values that will enable the organization to make decisions autonomously, the firm can evolve faster and be more agile.
Culture manifests itself throughout the organization by being modeled by managers and communicated via internal marketing. HR has to “walk the talk”, but that’s true of all departments, not just HR. HR, however, is typically tasked with the internal marketing of culture (even though Marketing would be a better choice, in my opinion).
Software leaders cannot leave corporate culture issues to HR. Define what your company’s culture means with respect to your agile processes and train your talent acquisition partners to target compatible candidates.
LOOK FOR PART 2 OF THIS ARTICLE
Lessons 1-4 presented in this article tie your overall business to your software recruiting strategy. In Lessons 5-8, we get more specific about accelerating and optimizing software recruiting.