Software engineering has become one of the most important fields of computer science, with the design, development and maintenance of software applications becoming essential for a wide range of brands and activities.
To outsiders, software engineering is often viewed as a purely technical task — a field that doesn’t really involve much (if any) creativity. But as Srinivas Allaparthi, a distinguished engineering leader with over two decades of experience revolutionizing systems and processes and a notable tenure as a director of software engineering at Tesla explains, creativity isn’t just a natural part of the software engineering process — it’s required.
Creativity In Problem Solving
“Software engineers primarily rely on creativity in the same way that individuals in other technical fields do — creativity in problem solving,” Allaparthi explains. “Software engineering ultimately comes down to using a technology and logic to solve a specific problem that a person, company or even industry is experiencing. Quite often, these problems can be extremely unique to a particular person or situation. This means the software that helped solve similar problems in the past likely won’t be sufficient, and this requires a creative approach to building a solution that will work.”
Allaparthi’s sentiments are echoed in a 2021 study that conducted focus groups of software engineers to evaluate creativity’s role in the field. Creative thinking was ultimately determined to be an important element for solving complex problems and developing effective solutions. Creative problem solving, often enhanced by attributes like critical thinking, curiosity and a creative state of mind all enhanced outcomes.
In a blog post, Wouter Groeneveld, one of the researchers involved in the study, noted that admiring creativity in other fields often spurs engineers’ own creativity: “Admiring something creative because of the creative aspects drives your own curiosity, pushing you to look for alternatives and niche paths you might never have looked at before. In short: get out of your comfort zone! Work cross-team, pick up that other programming language, read others’ blogs — even if it makes you feel uncomfortable. That feeling is the feeling that you’re learning.”
Even if the action that is taken to implement the solution looks the same (creating or iterating on code), the creative problem-solving that goes into the process is what ensures that the finalized piece of software actually achieves the intended result.
Creativity In Design, Adaptability and Reusability
One area where Allaparthi sees creativity in action comes from the way that software engineers design software, databases and frameworks. “Design is inherently a creative process, even if it doesn’t always look creative from an outsider’s perspective,” he explains.
“For many software engineers, creativity occurs when they look for ways to reuse or recombine existing code so they can adapt it for new purposes. A combination of creative problem-solving and technical expertise allows software engineers to choose the best solution to meet a specific programming need, while at the same time still ensuring that the end result is user-friendly. At Tesla, we applied this approach by reusing software components to build enterprise software that supports both vehicle and energy products so we didn’t have to create duplicate systems.”
Similar to other forms of creative expression, this generally leads to an iterative, exploratory process of creation. Software engineers often prototype different solutions and conduct A/B tests to continually refine and improve upon their software. Even though the iterative process may look different than in “creative” fields, this approach ultimately helps software engineers develop the best solution for a given need.
Creativity Through Collaboration
“One aspect that is often overlooked regarding software engineering is how collaborative it can be, and this is where a lot of creativity occurs,” Allaparthi says. “When designing code, we often see software engineers approaching this with an open, documented approach that lays a foundation other software engineers can use in the future. Essentially, engineers are undertaking their own creative work with the expectation that it will help others in their creative efforts. At Tesla, we build common frameworks and practices, which enables building our home-grown apps. This ultimately helps engineers increase their efficiency in building systems.”
This type of collaboration is naturally most effective when software engineers document their processes, giving others access to the necessary information that will promote deeper understanding (and in time, yield new coding creations).
Of course, creative collaboration extends beyond the reuse and recombination of code, which often occurs more indirectly. “Team collaboration and brainstorming can be especially valuable during the initial planning and design phases of a software engineering project,” Allaparthi notes.
“When teammates are able to come together for discussions and ideation sessions, it naturally allows us to integrate a wider range of ideas, as well as think more critically about our own concepts and proposed solutions. I experienced this firsthand while building public-facing apps at Travelzoo, where engineers would think creatively as they considered a user’s perspective.”
Indeed, group brainstorming has been consistently found to lead to more effective creative problem-solving by forcing everyone involved to consider others’ ideas, while also resulting in a more unified team.
A More Creative Process Than Expected
As Allaparthi’s insights reveal, software engineering may not lie in the same vein of creative work as music or art, but this doesn’t mean that it doesn’t involve its own brand of creativity. Creative problem-solving is crucial to solving complex engineering challenges, and engineers who learn to adapt and reuse existing code and collaborate with others can be even more effective in this regard.
The most effective software engineers are inherently creative, bringing unique problem solving perspectives and a natural curiosity as they design or improve upon software. As software engineers lean into their creativity (including as they collaborate with others), they can ultimately develop more effective solutions and make a lasting mark in their field.