CUTTER BUSINESS TECHNOLOGY JOURNAL VOL. 32, NO. 7
Paul Pagel discusses the key importance of a modern software labor strategy for organizations hoping to remain competitive in today’s digital and innovative world. The right team is key to crafting software systems capable of supporting innovation. Software delivery talent, however, is extremely difficult to find for a multitude of reasons. The solution, according to Pagel, is to structure software teams to deal with fragility and to thrive on change.
As software continues to work its way into every corner of our daily lives, no industry will be spared. While many new companies get their start every year as digital-first organizations, many predigital companies that helped forge the world as we know it are facing the more challenging task of adapting to this changing tide. Industries such as construction and logistics are tackling not only the pressure to adapt to digitally driven ways of working, but also to continue innovating. And software systems are not just the new baseline; they’re uncovering insights and creating opportunities to expand your business’s capabilities and to offer new services you might never have predicted.
These innovations don’t come to businesses magically, though. They require hard work and discipline to craft software systems capable of supporting them. Like most new capabilities, the execution matters as much as — or more than — the strategy. Building the correct software execution muscle starts with building the right team. Transitioning from an IT labor strategy to a modern software labor strategy is key.
Why Is It So Important to Start with Labor Strategy?
These Employees Will Manage Your Biggest Cost Center
Technology is becoming the largest cost center for more and more companies, and these costs are still growing. A survey last year of 500 US executives from privately held companies discovered that 57% of mid-market businesses were spending more on tech than they did the year before, while a third of respondents were spending more than 5% of their annual revenues on technology.1 Another survey that collected responses from nearly 4,000 CIOs and technology leaders across 84 countries found similar trends: 86% of respondents expected their IT budgets to increase or stay the same, with 47% expecting to increase headcount on their IT teams.2
These investments are not purely to support innovation. While newer initiatives, such as protecting against cybersecurity threats and launching new digital initiatives, account for a large share of the projected US $4 trillion in IT spending worldwide, a CNBC report identified enterprise software as the fastest-growing area of tech investment.3 Companies that don’t consider themselves tech hubs are being forced to keep up by building modern infrastructure to allow for rolling upgrades, cloud migration, and integration of new insights into a system not designed to support constant changes.
None of this work is simple, and companies need to invest in experts to ensure they transition their software systems to successfully take advantage of the new technology. The biggest cost and risk in these continual transitions are associated with the team and the team members’ expertise. And none of these costs is likely to decrease any time soon.
A Different Way of Working
IT investments cause a ripple effect that goes beyond a company’s balance sheets and into its everyday operations. As mentioned earlier, software execution matters as much as software strategy, and high-quality software execution requires a new way of working that is foreign to most traditional companies.
Traditional businesses have typically grown successful through hierarchical processes. Specific tasks, goals, and priorities are handed down from executives to managers and then delegated to teams. Higher levels of authority in the business in many ways dictate the teams’ daily work.
Today’s modern, high-quality software cannot be built this way. Software teams must be highly collaborative, with frequent feedback loops of multilateral communication. While executives and managers can help set a vision, it is the software team of product owners, designers, and developers who will make the thousands of decisions that will determine the end results. Consequently, the feedback loops and specialties will develop inside the team rather than going through the hierarchy.
Transaction Costs Are Very High
Building teams capable of executing at this level is not easy. The market has a shortage of experienced, highly skilled software developers, and even when you do manage to hire the best and brightest developers and designers, they will still require a significant investment in onboarding and training to get them comfortable in your unique domain, ecosystem, and team workflows. The transaction costs in recruiting, training, and retaining this talent start high and will grow with volatility.
This underscores the importance of building your software team the right way, from the ground up. If you invest in hiring the right people to work on the right problems, the culture created will decrease the transaction costs involved in software talent.
Why Is Software Delivery Talent So Difficult to Find?
High-Complexity Activity
Computer science is fractal in nature. At each layer of a system’s stack, and at each level of abstraction, there is a dizzying amount of complexity that is easy to get lost in. Your team will need to understand complexity at each of these layers well enough to understand the tradeoffs of different design decisions and how they might impact larger decisions such as scope and flexibility as your system matures.
Trying to manage your labor within this ecosystem is equally challenging. It’s often difficult to know how long a task will take until the developer has begun building the feature and you can see how the codebase responds. Your leadership team will need to account for this ambiguity by growing comfortable with more uncertainty than you’re used to when building budgets, forecasts, and project plans.
Generalist and Specialist Skill Sets Requirement
It’s unrealistic to think any one developer can understand all the complexity described above. You need to build a team of complementary skill sets and give that staff the time and space to build expertise to handle the unique problems and constraints across your system.
Your team will need to feature two different kinds of expertise: breadth and depth. You will need developers with a detailed understanding of the holistic system: where are the important interaction points, what are the key dependencies, and how is the system shaped?
You will also need team members with expertise in some of the specialties in the system; for example, operations, front-end development, or data engineering. The specialist expertise required may change depending on the nature of the problems you need to solve, but it is critical to build the team with the right skill sets and to ensure they are fully utilized.
Both types of experts are essential to your team and to your ability to understand and plan for the complexities within your system in a responsible way. But they cannot exist in a silo. These two types of experts are most valuable when they interact with each other. This adds a layer of complexity to team management decisions, as there cannot be a full division of labor across your system. The different team members focusing on different problems need to constantly learn from each other and collaborate if they are to achieve a high-quality solution optimized for your system.
What makes this arrangement even more challenging is that neither of these types of expertise is static. Every six months, thought leaders introduce new architectural concepts that can improve your system, and new tools will show up to support new languages. Becoming an effective expert in even one specific component requires actively looking outside of your company’s code for new ways to constantly improve the system.
No Formal Path to Trained Expert
With so much fluctuation within an expertise, it should not be a surprise that there is no standard path to becoming an expert. There is no straight line from novice to expert. Every developer’s journey to mastery goes through fits and starts, leaps and setbacks, and will only result in true mastery if every step is built on a solid foundation. The immaturity of the industry means there is no consistent institution or curriculum to ensure the foundation exists.
While everyone walks his or her own path, the industry has failed to establish an agreed-upon way to measure progress, and there is no standard way to gauge competency in a software discipline. Many in the industry have adapted by placing an emphasis on length of experience. If you scroll through any of the thousands of job postings looking for software developers, you will see teams looking for developers with some specified amount of experience — 5, 10, even 15 years’ professional experience using technologies that have barely been around that long.
This metric, however, is woefully inadequate for judging someone’s actual capabilities. Simply delivering software is an insufficient metric, and it becomes misleading in predictable ways. Software development 10 years ago looked a lot different than developing today’s modern software systems. Every year we discover new ways of architecting our code, gain new tools to build on new platforms, and discover new best practices to apply to these. As a result, the experience of developing a particular product 10 years ago is often less relevant than the lessons you would have gained from developing a similar product just 10 months ago.
Throughout my career, I have seen dozens of software crafters with only a few years’ experience mentor others who — though they have been industry professionals for decades — had never been taught to follow the more foundational principles and practices that lead to higher-quality software. While the experienced developer might have a better recall of idiomatic nuances, the inexperienced one may be the developer who understands how to apply best practices and will drive your team to success.
Another popular approach to training developers for success has been the influx of coding bootcamps and similar programs. These programs are good crash courses for developers to quickly get up to speed on the skills they need to contribute to a particular software stack, but the expediency of this training is often chasing after trailing indicators of what the industry wants.
One lesson we can take away from these programs is that there’s no shortcut to mastery. It requires an ongoing investment in continual learning at every stage of a developer’s career.
Fast-Changing Skill Sets
These problems are endemic to software because the industry itself has immature and changing best practices. Software is still a relatively new discipline, and the frequency of change in tools and technologies has made it difficult to cement established best practices the way other disciplines have, much less have those practices become commonplace around the world.
Without strong guardrails around the ways we work, teams are often tempted to take shortcuts to deliver more quickly and please their stakeholders. This short-sighted strategy has led to enormous waste that riddles the industry.
Every corner cut at the beginning of a project has the potential to add exponential complexity later. Several months down the road, as you’re collecting live user feedback and fine-tuning your business model, what might seem like trivial software changes will end up requiring massive refactorings or rewrites because so many layers of complexity will have been built on top of a decision your team never considered might need to change.
After being involved in helping hundreds of projects either get unstuck after years of stagnancy or trying to anticipate changes to a greenfield app, I have seen how following disciplined practices and processes makes all the difference.
What Do You Do About It?
Software teams need to be structured to deal with fragility. Fragility is a shortcoming that’s easy to understand; when you try to add new features or modify the codebase in some way, it crumbles like a house of cards, with unintended side effects causing bugs throughout the system. The goal is to build talented teams that don’t fall into this trap. Organizations must create a system that is not just sturdy and resilient to change, but actually thrives on change. A high-quality software system will respond to a failure by exposing new and stronger ways of designing and architecting it.
To incorporate a software delivery capability, an organization should embrace this mentality throughout its entire operation. From the executive team on down to junior workers, your team should thrive on adopting new technology, practices, and processes. There are three primary ways companies can do this effectively, as we explore below.
1. Become a Training Organization
As technology becomes more chaotic, your business can approach this challenge as an opportunity rather than as a threat. Investing in your team’s ongoing education will inspire team members to dive deeper and learn more about how to improve operations. While this training will not have an obvious or immediate impact on your bottom line or productivity, it will provide the support needed for your team to discover the most stable solutions, allowing for higher profitability and sustainability in the long run.
There are many different ways to implement this kind of training. Companies can offer budgets for attending conferences and taking advantage of other educational venues and materials and hold regular “lunch and learn” workshops to introduce new tools and concepts. However, it is important to move the professional development budget past these traditional ideas into creating a learning culture that has maximum impact. For example, companies can adopt weekly “10% time” reserved for professional development and learning; they can develop apprenticeship programs or dedicated mentoring programs. The important distinction is that sufficient space and investment are devoted to training for it to become part of both the work and the company culture, rather than an afterthought or yearly endeavor. Training should be modeled from the top down, with leaders visibly participating in growing their own skills and investing in learning as a core value.
There is a distinct competitive advantage in being able to grow your own talent through training and experience. Having a combination of expert practitioners (who can push your technology forward) and teachers (who can educate your team on how to keep up with any changes) can go a long way toward keeping your team engaged and productive for long careers. Expert teachers and mentors will also allow you to hire smart people from a wider range of backgrounds and train them to be engineers. This provides not just a competitive advantage in hiring but also helps you train new mentors and teachers and create a virtuous feedback cycle of mentorship that will guarantee a baseline of quality across your team as you scale your business.
One of the key factors in this strategy is making sure you’re hiring for the right traits. Rather than using the application and interview process to check off past accomplishments and experiences, you should look for a curiosity and growth mindset, and a capacity in the potential new hire to learn whatever he or she doesn’t already know. This type of hiring process is an imperfect science, as it requires diving quite a bit deeper than the stuff highlighted on someone’s CV. However, if you can ensure the people you are hoping to train actually want to grow and learn, they are much more likely to remain engaged and successful employees throughout their careers.
2. Invest in Keeping Retention High
Complex workers are intrinsically motivated through autonomy, pursuit of mastery, and clear connection to the challenges they are solving. One of the best ways to keep retention high is to encourage and feed team curiosity. Your teams will stay engaged and invested if you give them interesting problems to work on and the support and opportunity to solve them.
It is important to consider carefully how you provide this support. Investing in a network of skilled managers and mentors ensures that all team members have someone supporting their functional and career development and never feel that they are on their own. Developers stuck on a problem need to have outlets where they can ask for and receive help.
These support systems should lend themselves naturally to a culture of feedback essential to making your team feel invested and secure in their role at your company. If team members are struggling, they should have support built into their regular work cycles. If they are performing extremely well, they should be recognized. It’s important to celebrate successes and regularly remind your team that their work is appreciated.
It also helps to pay your team competitively and offer inclusive and flexible working policies. Many tech companies invest in flashy perks — like free lunches and onsite ping pong. There is nothing inherently wrong with these perks, but they should not come at the expense of policies that provide for a healthy work-life balance. When your company is flexible to different working arrangements and embraces policies that encourage outside interests, you’re helping to establish an environment that is sustainable for long careers. If you provide support to employees at all phases of life, you’re not only encouraging employees to stay but also helping attract people with diverse and complementary skill sets and background experiences.
3. Mix in Specialists from the Outside
While it might follow logically that a team fully dedicated to your software and your business’s unique problems is a positive, teams can struggle when they fall too far into their own work silo. If your teams are completely absorbed in your software system, they aren’t paying attention to developments in the community that could provide a simpler solution or even transform your employees’ capabilities by adopting new strategies and tools.
Whether you bring in specialists from the outside to do one-off training presentations, to consult on the state of your software system, or to offer a more prolonged residency program, gaining insight into new ways of working and thinking through problems is invaluable. Such insights will not only stimulate your team but also ensure your organization is keeping up with modern standards and practices. It is important to break down the walls of the organization to ensure improvements are flowing in.
Conclusion
Yes, software is eating the world, but a successful strategy for adapting to this new reality will still revolve around attracting and growing the talented people who can drive innovation and manage your business’s new technological foundation.
Investing in a holistic onboarding program and ensuring your team has the skills and resources to continue growing within their roles will go a long way toward making sure your business keeps pace with today’s rapidly changing tools, processes, business priorities, and more. A human-centered approach will also protect your business from being swallowed up by today’s constant change and will maintain more authentic and lasting engagements with both employees and your system’s users.
References
1Bujno, Maureen, and Chris Jackson. “1 in 3 Mid-Sized Firms Lack IT Governance and Could Face Digital Disruption.” The Business Journals, 8 December 2018.
2Pratt, Mary K. “How to Build the Next Generation of IT Leaders.” CIO, 6 August 2018.
3Rosenbaum, Eric. “Tech Spending Will Near $4 Trillion This Year. Here’s Where All That Money Is Going and Why.” CNBC, 8 April 2019.

