Creativity in Software Engineering

Creativity in Software Engineering

This is the latest issue of my newsletter. Each week I cover the latest research and perspectives on developer productivity. Subscribe here to get future issues.


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:

Find more DevEx job postings here.


That’s it for this week. Thanks for reading.

-Abi

Dmitry Kozhedubov

Senior Product Manager, Developer Productivity/Cloud Infrastructure at Zalando

5 个月

Reusing and repurposing as the definition of creativity definitely resonates. I also like to add another dimension which is "elegance" - when things are done in a concise, maintainable, well readable fashion. So one should strive for solutions that are creative *and* elegant.

回复

Fascinating insights on developers' definition of creativity! Abi Noda

Matt Gunter

Leading with Clarity

5 个月

The claim that "Creativity is not about originality, it’s about reusability", fits well with the "Monkey see, Monkey do" approach to software that is all too common. Software and the systems they enable are not really changing "What" work is happening, they primarily are changing "How" the work is done. Buying a kindle book online vs a physical copy from the bookstore with cash is not a difference in "What", but a huge difference in "How". Both of these "transactions" are reusable, but one is an innovation and original compared to the other. It is in the "How" that creativity is most important, because that is the primary frontier of innovation in Software. The network effects of a well-digitized process is another area originality comes into prominence. We've seen the power of digitalization, virtualization and dis-intermediation change entire industries. These network effects tend to require new concepts and new platforms that never existed before. Uber, Netflix, Airbnb, even businesses that make money off of "Clicks" demonstrates the need for thinking originally and creatively and to innovate when the opportunity emerges from the underlying software innovations.

回复
Justas Lau?adis

Testing Practice Lead

5 个月

Knowing Google, it is no surprise there is a lot of emphasis on reuse ?? On a similar note, there was an interesting research paper from Microsoft Research: https://advait.org/files/sarkar_2023_ai_knowledge_work.pdf In the paper, there were some similar yet some more different concepts of creativity: - Process as creativity - Authorial intent and discourse as creativity - Interpretation as creativity - Reuse as creativity - Randomness as creativity I hope that may give some more ideas on top of this article. Thanks for sharing, Abi Noda!

Shane O'Rourke

Program Director - IBM Application Services Portfolio

5 个月

Hi Abi Noda. Looking forward to this one in particular. I have been espousing for a number of years on creativity not being strictly about originality, or for that matter complexity, it’s about 100% about reusability. As a coder my best ideas were always adaptations from the great implementations and patterns of others. No shame in that.

要查看或添加评论,请登录

社区洞察

其他会员也浏览了