As I travel from place to place, I’m often asked, “What does modern software engineering look like? What is the level of investment that is required?” Or, more specifically, “How can we develop and deliver high-performance software in an environment like ours?” At Solstice, we work diligently with clients to reshape the way they build and deploy software, but this is only a snapshot of what’s required in order to truly transform an organization into a modern software delivery machine.
Below I have outlined three essential elements that are required of organizations seeking to excel at software development. These principles are sourced directly from working with global enterprises that have successfully transformed workforces and processes in order to consistently deliver successful digital outcomes at scale. While these components are not exhaustive of everything your organization needs in order to build a flourishing software delivery machine, they are what I would describe as “vital” to success.
Methodology Drives Outcomes
The first key component is a total commitment to the belief that the methodology drives the outcome, and not the other way around. The tail should never wag the dog. What do I mean by this? In the world of high-speed digital innovation and disruption, there always seems to be a moment where principles and values are challenged, bent or even sacrificed in order to achieve a short-term gain or solve a pressing need. These decisions are usually driven by a sudden shift in strategy or a delivery timeline based on a new or perceived urgency. These are the moments where methodology (quality and accuracy) often gets set aside in favor of expediency. With software development, there are no shortcuts; there is no “easy” button. Taking shortcuts often leads to problems in unanticipated places and most often requires significantly more work to fix than the amount of work that was perceptually “saved.”
Based on experience, these types of trade-offs most often arise when unanticipated changes or new requirements are introduced into a project. Resource shuffling causes teams to fall behind and it’s at this critical moment where methods and principles are tested. As development teams attempt to hold the line against taking shortcuts, the demand for speed over process often makes its way to the upper layers of management. It’s at this critical junction where executive support is crucial in order to bolster front line teams who are taking a stand against short-cuts in order to preserve a structured, process-driven way of building software.
If executive support falters and internal pressure continues, the engineering team will often concede and the methodology that was carefully put into place and followed from the beginning will be short-circuited, which often leads to costly rework and longer production and delivery timeline.
The lesson here―which is often learned the hard way―is to not only create solutions quickly and efficiently but a commitment to let your development methodology drive how you build products rather than external forces. After all, it doesn’t make sense to speed through development if the end result won’t meet the user’s needs.
Never-Ending Pursuit of Engineering Talent
One of the tenets of modern software engineering is that the job is never “done.” This goes for software products themselves, but this principle also applies to the developers, designers and product managers that build and operate the software. The second “must” for modern software engineering, then, is to continually update and improve your engineering talent.
Managing any kind of product development is difficult under the best conditions. But software product development can be especially challenging. Neither business needs nor technology stops evolving while development is underway, which means software products are managed in a highly fluid environment. That requires the right talent and expertise.
I see many organizations today scrambling to update and equip their existing engineering talent with the skills needed to meet today’s complex, fast-changing software development demands. Many of these engineers are operating with skills that haven’t evolved past the technologies of the past few decades. I see organizations trying to equip COBOL developers with cloud-native Java skills, which can be done. But recognize not all of your existing developers want to learn a whole new skill set.
Depending on which study you read, you’ll find failure rates for large IT projects range anywhere from 30 to 90 percent. Whatever the number, it is an astonishing figure considering the strategic importance of many of today’s IT initiatives. As technology evolves, your developers need to be incrementally equipped with the changes in architectural patterns and development methodologies so that when your organization is ready to make big moves, your development team is ready. To keep their in-house skill levels current and focused, many organizations create a heat map that shows the gaps between business needs and current skills. Ideally, the heat map should be based on market trends and their impact on the availability of talent in the future.
Focus on Your Core Competence
The third key element to becoming a high-performance software delivery machine is to sharpen your organization’s engineering and IT focus. More specifically, focus on your core competencies.
Many of the leading organizations we work with often ask how Solstice can take a function off their hands and run it as a managed service. These organizations understand that their workforces need to stay focused on and aligned with the highest value software products and services in their businesses. To sharpen your competitive focus, get out of the business of managing infrastructure, packaged software and legacy application maintenance. These functions are essential, but on their own will not differentiate you from the competition.
In other words, expand your services and capabilities but focus your talent on high value, core competency efforts. By expanding your ecosystems and disseminating ownership of non-differentiating functions to third parties, you can narrow your focus and be the best at what you do, which is delivering exceptional, customer-focused software that supports your organization’s core mission.
Gaining a Competitive Edge
A new breed of digital-savvy companies is entering and disrupting markets across the business spectrum. They are putting increased pressure on established companies to significantly up their software development games.
Although there is no simple measure of performance effectiveness for software development teams, and no two teams are identical, there is a shared understanding emerging of what’s required to transform an organization into a modern software delivery machine. To successfully compete in today’s digital economy, it is essential for organizations to adopt and hold tight to a modern software methodology, to continually replenish its engineering talent (through both training and hiring), and to offload non-differentiating functions in order to keep focus on its core competency. For corporate leaders, this means new modes of operating, new ways of thinking and an intensified focus on technology as a key competitive differentiator.