Creativity in software engineering
The primary attributes of creativity are the clever reuse and recombination of existing code.
This is the latest issue of my newsletter. Each week I cover the latest research and perspectives on developer productivity.
Join Manuel Pais (co-author of Team Topologies) and Laura Tacho (CTO at DX) for a discussion later this month on how to structure platform engineering teams. Sign up here.
This week I read Creativity in Software Engineering, the newest installation of the Developer Productivity for Humans series by Google’s Engineering Productivity Research team. Previous papers in the series have covered topics like build times and tech debt. This paper shares findings from their study exploring how software developers define creativity.
My summary of the paper
Creativity is an important part of developer productivity: software engineering is an inherently creative and complex task, and creative thinking is essential to solving complex problems. However, in order to understand how to better support developers’ creativity through better tools and processes, we have to first define what ‘creativity’ means. This is what Google’s Engineering Productivity Research team aimed to achieve in their study.
“With the recent changes in the ways we work, from new hybrid models to the rise of artificial intelligence (AI), there is an increased attention on creativity in the workplace. As software engineering continues to evolve, it is essential that we consider creativity as a core aspect of the developer experience and ensure that we are building tooling and processes to support it.”
This study was conducted in multiple phases. After an initial literature review, the research team used a diary study and then conducted follow-up interviews. The diary study was one week long; developers were asked to share how they expected to be creative and what they saw as creative upon reflecting on their week. Participants were also asked to submit screenshots of their work that they considered creative. Then, follow-up interviews were used to get more context on what made their work creative, as well as what parts of daily life developers find creative. The researchers applied codes to the feedback collected to identify common themes.
Here are the themes that emerged from their analysis:
Creativity is not about originality, it’s about reusability
Clever reuse and recombination of existing code are the primary attributes of creativity. The analysis revealed that developers consider the clever reuse and recombination of existing code as the essence of creativity. They identify 'reuse' as a dual concept: creatively adapting existing code for new purposes and designing their code to be easily reusable by others in the future.
Ultimately, this means that developers perceive creativity not as inventing from scratch but as a form of problem solving that emphasizes reusability and usefulness over originality and novelty. Some went as far as considering themselves to be not “creative” at all, because mainstream definitions emphasize newness. The researchers note that it appears developers align more with the concept of combinational creativity, which is “the combination of familiar ideas in unfamiliar ways.”
Creative thinking happens when collaborating, brainstorming, and learning
Team collaboration and brainstorming enhance creative thinking. Creative thinking often happens at the initial stages of a project, particularly during planning and design. Developers in this study highlighted that engaging in team discussions, ideation, and brainstorming spurs creativity.
A big part of creative thinking involves learning new things—whether it's new techniques, tools, or understanding systems better. However, a lack of documentation can stifle learning and creative thinking. When developers have good access to information and documentation, it improves their ability to be creative by enabling them to dive deeper into learning and exploration.
The researchers point out that these activities where developers feel most creative—such as collaboration, learning, refactoring—can easily be overlooked when optimizing for productivity. While they don’t offer a specific “counterbalance” metric that could be used to take these activities into account, they indicate that this is an area they will explore further.
Final thoughts
Most leaders recognize that creative thinking is important in software development, but it’s an ambiguous topic. This paper unpacks the concept so we can better understand and support it. It also raises some interesting questions about the impact of AI on creativity and how to measure creativity in software development. I’m looking forward to seeing more research in this area.
Who’s hiring right now
Here’s a roundup of new Developer Experience job openings:
Asana is hiring a Senior Software Engineer - Developer Efficiency | New York City
Netflix is hiring a Technical Program Manager (L5/L6) - Platform | Remote (US)
Plaid is hiring a Product Manager - Developer Platform | San Francisco
Rocket Money is hiring a Team Leader - Engineering Performance & Developer Experience | Various cities or remote (US)
SproutSocial is hiring an Engineering Manager - Developer Experience | Remote (US)
Uber is hiring a Senior Staff Engineer - Developer Platform (Gen AI) | San Francisco, Seattle
Find more DevEx job postings here.
That’s it for this week. Thanks for reading.
-Abi
There are a few aspects in which “creativity” could be important.
* Getting traction from your partner teams to gather requirements/clarity. Like you need to project manage some pieces to find right people in the room.
* Designing abstractions. Naming and abstracting things take a lot of thinking. Since you want to try and create not too specific but not too general abstractions. Naming plays a big role in communicating abstractions.