The ongoing race to reinvent enterprise IT’s identity as a modern software development shop
A few years ago, I was helping a large bluechip company deliver a multi-year software program. The goal of the program was to modernize a portfolio of legacy software products that had slid past the wall of maintainability, though were critical to the revenue of the company. When I arrived, these products had accrued significant technical and process debt. The cost to change was high, and the cost to distribute was even higher.
Hundreds of full-time developers were committing changes to these legacy codebases daily. Most developers belonged to a swath of different IT staffing companies, motivated to compete against each other to grow their contracts. The existing software development process was heavily waste-ridden. Production releases were intense, high-risk, ceremonial events. Production servers had not received consistent security patches. Bug backlogs were touching the ceiling. The business had lost all faith. As a result, the product and IT culture had become unbearably toxic. The inevitable outcome? Half of the full-time software developers at the time left.
To recover from this mass exodus, IT brought in new leadership with a goal to transform the lingering toxic culture. That goal quickly developed into a foggy, herculean undertaking with no clear solution in sight. Eventually, it took 2 excruciating years of slog, sweat, and tears to recreate a sustainable software developer culture grounded on autonomy, mastery, and purpose.
Today, nearly every bluechip Global 2000 company is undergoing an identity reinvention. The unrelenting pace of technological innovation coupled with emerging values like sustainability, autonomy, and purpose has leaders all around the world scrambling to redefine their “culture and DNA”. Themes like customer-centric, product-oriented, data-driven, diverse and inclusive teams are proliferating every corporate environment.
“Culture” has become a buzzword for resumes. Cultural transformation is on every IT leader’s “what keeps me up at night” list. IT executives who once wore suit and tie, are now seen in hoodies and jeans, carrying a Macbook loaded with tech stickers. Silicon Valley is everywhere. Yes, software is eating the world. And yes, by 2022, over 70% of all enterprise software will be custom-developed.
What does this all mean for me?
If you work in enterprise IT, especially as a leader, this simply means that bluechip companies have a narrowing window to build a strong software development culture. And what is at the heart of a strong software development culture? People.
OK, how do I do that?
I’ve been asked this question by IT leaders from 25 Global 2000 companies over the past 2 years. The short answer is there isn’t a single template for success. Each company’s cultural transformation is unique. It is defined by distinct opportunities, constraints, and realities. However, here’s an effective “culture litmus test” I’ve discovered.
A strong software development culture is one in which software developers (and others whom I will not cover in this blogpost for the purposes of simplicity):
- Feel productive (to deliver value quickly)
- Feel autonomous (to drive outcomes)
- Feel inspired and motivated (to create and thrive)
- Feel psychologically safe (to experiment, fail, and be vulnerable)
- Feel they are growing (to achieve mastery)
This is interesting. Let’s unpack each of these by exploring the specific challenges that bluechip companies face, and possible solutions they can employ. As we read through, I suggest following the timeless advice of Atticus Finch, “you never really understand a person until you consider things from their point of view … until you climb into their skin and walk around in it.”
1. Software developers must feel productive
A famous developer quote goes “Why do we never have time to do it right, but always have time to do it over?” Due to age and practices, bluechip companies have accrued significant technical and process debt in IT. Think inflexible COTS products, legacy software with suboptimal code quality, bad architecture, tightly coupled integrations, multiple SDLC processes, lack of scalable test infrastructure, snowflake environments, enveloped in a deadline-driven project management structure.
Surprisingly, this has become a stereotypical condition in IT across many industries. The outcome? A software development process that is significantly slow and waste-ridden, a bloated IT organization to sustain the chaos, and an environment where software developers spend at best 30% of their week writing code. Yes, just 30%! Inevitably, operating in such an environment becomes a game of psychological endurance for any software developer. The eventual outcome? The good ones leave.
In my experience, the solution to this problem is not straightforward. Companies must invest significantly in redefining their physical, virtual, process, and team architecture. The end state is one where multiple cross-functional, agile product teams share well-defined contracts, and can build and release software independently. Big rock items such as an end-to-end agile SDLC process, strong software development principles and practices, scalable code branching and merging strategies, CI/CD pipelines, test data infrastructure, service virtualization, automated and immutable cloud environments, and microservices-based architectures can collectively solve this problem. However, this is no easy undertaking.
2. Software developers must feel autonomous
Autonomy means freedom from external control or influence. In typical bluechip companies, a software developer is asked to write code based on pre-defined architectures, designs, and requirements that are handed down to them. Handing down specifications makes software developers feel relegated from product and technical decisions. It is a total anti-pattern to cultivating a culture of autonomy. Hard walls between business and IT, monolithic IT planning and budgeting processes, and the ivory tower nature of architecture functions further exacerbate the situation. In other cases, software developers are asked to build products on proprietary low-to-no code platforms. This strategy quickly thwarts developer creativity, and binds them to a technology they may not believe in.
To build a culture of autonomy, leaders must contemplate melting away organizational boundaries, re-organizing teams, and pursuing open-source software development as much as possible. Balanced teams that are mission-driven, allocated full-time to a product, and composed of business and IT are a great start even at a micro-scale. Open-source software development gives developers the freedom to practice combinatorial architecture, implement their own patterns, and advocate for reusability. Architects and developers become synonymous. Technical decisions are made by the team writing code. And developers practice incremental design by avoiding big architecture up-front. This also weeds out the odd “boxes & lines diagram drawing” architects who’ve somehow dominated software design for decades without writing a single line of code.
3. Software developers must feel inspired and motivated
I wrote a blogpost a while ago on Mission-led Companies where I highlighted the importance of a shared vision, and Mission Command (a management theory based on centralized intent with decentralized execution). The question I get often from IT leaders is “how do I create an inspiring culture for software developers?” Sure, productivity and autonomy are prerequisites to a healthy software development culture. But, inspiration is different territory altogether.
Inspiration has led human beings to achieve incredible feats across all endeavors. To inspire is to connect and mobilize someone at the deepest of levels. Yes, it is personal. For a software developer, inspiration doesn’t solely originate from their company’s purpose and value statements. Neither does it come from working on sexy projects and technologies. Inspiration is rooted deep within the subtleties of a software developer’s everyday experience. This includes the manner in which their leaders spread engagement, encouragement and empowerment. Inspiration lives inside an empathic and inclusive space. It is an infectious energy that circulates through a collective system and is transmitted from individual to individual.
4. Software developers must feel psychologically safe
It is no surprise that an over-indexing on the importance to know everything has serious, long-term, psychological consequences. Despite that, I find many bluechip companies, unknowingly prizing a “hero culture” (one where those with maximum tribal knowledge who save the day are awarded). On the one side, retaining a vast reservoir of legacy IT knowledge is impressive. On the other, a dangerous culture can quickly form where software developers feel they must achieve the same understanding in order to be perceived as strong performers. This prevents the formation of a safe space.
Prizing certain stereotypes is a phenomenon that plagues social groups across every dimension. It isn’t odd when one sees IT leaders recognizing the “overly articulate, extraverted, know-it-all smarty pants.” Deep listening and empathy are lost in such environments. This ultimately leads to cognitive and emotional exhaustion, and eventually attrition.
Creating a safe and inclusive environment is the joint responsibility of everyone, especially IT leadership. Topics such as unconscious bias, micro-aggressions, blind spots, equitable opportunity and pay, and other prevalent biases should be discussed in small intimate groups to bring everyone closer.
Another reality that contributes towards an unsafe environment is the legacy financial structure of IT, which makes it nearly impossible to foster a culture of experimentation. Pre-existing bridge-building software approaches thwart all hopes for incremental learning. Instead, massive financial investments are poured into IT projects where value is not realized until the end.
Eric Ries in his latest book The Startup Way proposes an organizational structure built on the principles of lean, agile, and entrepreneurial management. His alternative to the pre-existing financial structure of IT is to establish growth boards, employ metered funding, and advocate for lean accounting. An environment, whether by design or intention, that does not encourage vulnerability and learning through failure is definitely one to repel a passionate software developer. And in this space, the work for IT leadership is again cut out.
5. Software developers must feel they are growing
Benjamin Franklin said “without continual growth and progress, such words as improvement, achievement, and success have no meaning.” IT within bluechip companies is usually organized by horizontal technologies with centralized Architecture, PMO, and IT Operations functions. This leads to the creation of specialized roles, which overtime develop into walled job families. This isn’t necessarily a bad thing. For some companies, specialists make more sense than generalists. But, where this becomes a problem is back to the project-centric, bridge building software approach. A software developer is hired into a group, works within that group on a few software applications over the course of many IT projects. Over-time, this individual gains deep knowledge and skills in that particular area, which makes them an indispensable, irreplaceable part of the team. And, this inevitably leads to one-dimensional growth.
Modern software companies allow software developers to decide which products they’d like to work on, and rotate at will. This model is obviously not feasible for every company. But, through effort and creativity, ensuring that software developers have a range of options to pick from can be accomplished in any company. A second way to promote growth is by allocating a period of “working time” for software developers to contribute towards personal projects. Most software developers would love to partake in open source software projects provided they have time and mind-space. Thirdly, encouraging software developers, based on interest or otherwise, to try out other disciplines such as product management or product design for a period of time can also be promising.
Building a high performing team of software developers is no easy task. The challenges confronting IT leaders from bluechip companies are serious and in need of immediate action.
Having started my career as one, to me, software developers are no different than artists or chefs. We thrive when we are allowed to innovate and create. Our sense of reward comes when our created product brings joy and value to others. To us, meaning resides in what we create, and how we create. The process is as important as the result. And, for us, that ultimately serves our higher purpose.