Developer Productivity: getting the most out of new hires
Developer Productivity: getting the most out of new hires
New projects are fun!
New projects are usually easier to work on for developers. Starting with a single line of code and building from there provides several distinct advantages:
- Code is easy to read (you probably wrote it or know who did).
- The codebase is smaller and therefore more manageable. It’s possible to know the entire codebase.
At this point the business thinks their dev team is made up of a bunch of rock stars!
A growing problem
However, as the company grows, so does the codebase. As the customer base grows, so do user requests for features and enhancements. New requirements, features and bugfixes naturally accumulate, and the project becomes more complicated. This complexity produces more work for the developers. The demands on the development team increase until someone has the great idea, “We need more developers to keep up with demand!”
A Typical Business Response (and temporary solution):
To manage increased demand for enhancements and deal with bugfixes, the team hires new developers. It’s a great idea: the extra capacity allows the team to take on additional work.
With more headcount, individual developers can specialize, and focus on, specific application areas. Teams are built to divide and conquer the influx deluge. Developer productivity increases cause the business to think the danger was averted.
Wash. Rinse. Repeat.
The inevitable outcome: I got 99 problems and all of them is code
Most teams don’t acknowledge that adding more developers also has drawbacks.
With increased team specialization, fewer and fewer developers know the entire application. Eventually, no one does, and it becomes large enough that no one person could know the entire application. Specialization also leads to chained development, requiring developers to wait for another dev to finish their work before they can complete theirs.
Increased complexity requires more unit testing. More unit testing requires more time before code merges. Merge reviews take longer due to increased code complexity. Production deployments become more and more risky, requiring delicate coordination between multiple teams.
How many times has your commit made it to production only for a blame ticket to subsequently land on you? How many times does a buggy commit make it to production even though it passed unit testing?
The outcome? The same developers previously praised as rock stars are now villainized for “getting us into this mess.”
Recognize the REAL problem
This is a foundational issue.
Here’s a novel idea: react to the root cause
The problem is one of managing code complexity, not burgeoning numbers of developers.
So how does one manage complex code? Enter software Intelligence, a concept enabling organizations to empower development managers and developers. Developer teams using software intelligence optimize the development process by being able to:
- Understand the code quickly and with greater certainty
- Understand downstream impacts
- Plan and estimate work quickly and easily
- Recognize when complexity and tech debt are inhibitors and require remediation
- Answer their questions from a single resource by enabling senior devs to demonstrate global impact to junior developers
Interested in how continuous software intelligence can help you simplify complex applications? Read 5 Ways a Dependency Map Improves Software Development.