Discussions surrounding enterprise IT at a board level have traditionally resided within the realms of the CIO, a role responsible for ensuring organisations have adequate technological power and capacity to achieve business goals.
Technology refers to a tool or a set of tools that serve a certain purpose or solve a particular problem – this has remained true from the invention of the wheel to the invention of the quantum computer. However, what has changed recently is technology’s ability to completely transform processes and redefine how problems can be addressed. As a result, not only is the CIO no longer the sole purveyor of technology on the executive board, enterprises themselves are becoming ‘technology companies’ by default.
A recent Forrester report “CEOs: Foster The Software Teams And Talents Your Firm Needs” recommends that at least one board member have software delivery expertise, and symmetrically that software leadership increase their business awareness. The report details a number of ways where the lines of business and IT need to blur to ensure everyone is driving towards a shared goal.
A big driver of change is the realisation that enterprise software holds the key to being truly disruptive. This is probably most visible for organisations interacting directly with end-users, but in the age of enterprise agility and start-up mentality, an effective software development programme is essential for all enterprises alike. As a result, organisations are now going from having one or two software technicians to employing whole teams or departments of software developers.
What does this all mean for me?
If you work for a large company in enterprise IT, especially in a leadership role, you are undoubtedly under pressure to build a strong software development culture. Each company’s cultural transformation is unique. It is defined by distinct opportunities, constraints, and realities.
But the heart of a strong software development culture is the same no matter what industry you are in or how long your company has been around: people. Specifically, a strong software development culture is one in which software developers:
Feel productive, and focus on delivering value
Feel autonomous enough to drive outcomes
Feel that they are working on something purposeful
Feel psychologically safe enough to experiment, fail, and learn
Feel they are growing to the point of mastery
The following are the key challenges that I believe enterprises still face when it comes to creating strong software development cultures:
Software developers must feel productive
Due to age and practices, many large enterprises have accrued significant technical and process debt over the years. Think inflexible infrastructure, legacy software with suboptimal code quality, bad architecture, tightly coupled integrations, a lack of scalability and snowflake environments, all enveloped in a deadline-driven project management structure, a misplaced focus on delivering against specification rather than solving a user need, and a mindset more suited to safety critical systems rather than an ever-evolving digital landscape.
Surprisingly, this is a common condition in IT across many industries, resulting in software development processes that are slow and waste-ridden, bloated IT administration to sustain the chaos, and environments where software developers have less time available for writing new code. As a result, operating in such an environment becomes a game of psychological endurance for any software developer.
Developers want to see their work in production, they want to point to something and say “I built that”. Every project that never reaches production feels like a waste, a missed opportunity, and contributes to a frustration which either leads to attrition or reaching a point of indifference.
Developers need to not just feel productive, they actually need to be productive. Companies must therefore invest significantly in redefining their physical, virtual, process, and team architectures to be faster, more flexible and more agile.
Software developers must feel autonomous
In the typical large enterprise software developers are given a solution to implement, rather than a problem to solve. They are asked to write code based on pre-defined architectures, designs and requirements that are handed down from on high. Handing down specifications makes software developers feel isolated from product and technical decisions and deprives them the opportunity to see the whole picture and create globally optimal solutions.
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 reduce organisational boundaries, reorganise IT delivery teams into small cross-functional agile product teams, and pursue open-source software development as much as possible. Balanced teams that are mission-oriented, allocated full-time to a product, and composed of business and IT are a great start even at a micro-scale. It will need to go further to truly transform, resulting in an outcome-oriented funding model and aligned business and IT goals and measures.
Software developers must feel they are working on something purposeful. Dan Pink describes the surprising truth about what motivates us: autonomy, mastery and purpose. People tend to want to work on something meaningful, that has purpose. That means having access to the bigger picture related to the work they are directly working on as well as working on something which they feel will make a difference to the applications users. This is a key contributor to motivation that also drives inspiration and creativity.
Software developers must feel psychologically safe
Many companies promote a so-called ‘hero’ culture, where developers and other IT practitioners with maximum tribal knowledge who save the day are rewarded and singled out for praise. For sure, retaining a vast reservoir of legacy IT knowledge is impressive. But a hero culture often results in other software developers feeling they must achieve the same understanding in order to be perceived as strong performers. This prevents the formation of a safe space in which developers can be open, ask questions, and express concerns regarding a user story, the product, an architectural detail, or the program vision itself.
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.
This also positively contributes to a creating a learning organisation, one where individuals, teams and indeed the whole organisation is constantly learning, and applying the lessons learnt to improve people, process and their products.
Software developers must feel they are growing
IT in large enterprises is usually organized by horizontal technologies with centralised architecture, PMO, and IT operations functions. This leads to the creation of specialised roles, which necessarily isn’t a bad thing; for some companies, specialists simply make more sense than generalists.
However, with this approach developers become very good at specific skills and functions but don’t ever step out of their comfort zones or develop new skills. Modern software companies allow software developers to decide which products they’d like to work on and rotate easily. 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.
Ensuring future ROI
Building a strong software delivery culture is no easy task, but it can be done. In “Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations” by Nicole Forsgren et al., there is a discussion about how cultural change depends on a change of behaviours. You cannot think your way into a new way of acting, but you can act your way into a new way of thinking. By creating cross-functional teams, giving them business problems and business measures, fostering a learning organisation that emphasises autonomy, mastery and purpose you can start to deliver against your digital agenda.