Why we need creativity in software development
More inclusive algorithms and unbiased data may be complex problems, but developers can solve them with creativity.
These are wild days. The pandemic is still with us. Yes, there is good news regarding more vaccines, but the vaccination and case numbers coming out of poor countries are just shocking.
How can you stay creative these days? Is it ok to be less creative than usual? How much impact does the current world situation have on finding creative problem-solving approaches? These are some of the many questions that are trolling my head and the numbers keep growing.
Today I want to dig into one of this question in particular:
How do you solve complex problems through creativity?
First, let’s see what creativity means. The Cambridge dictionary defines it as:
“…the ability to produce original and unusual ideas, or to make something new or imaginative”
Creativity in software development is crucial.
In this field, you need to solve complex problems and therefore you need to be creative. If you didn’t, you could automate the process of creating software (although building the automation would be a form of creativity in itself). And, of course, there are a lot of fields in software development that are already automated or which developers automate as soon as they can. But still, the process of getting there is a creative process.
Those problems which are solved in software development could be as diverse as our world itself, because they are designed to address real-world issues. For example, it could be finding a way to bring a product to its users in the same manner on all devices. It could also mean creating a new programming language, development framework or library.
What problems need solving?
But there are bigger problems to solve than creating the next cutting-edge framework or product website.
And this is why one quote of Dara Dotz made me think:
“We aren’t going to be able to throw tech at every problem as efficiently or effectively as we would like – as time moves on, there are more disasters, more people and less resources. Instead of focusing on the next blockchain or AI, perhaps the things we really need to focus on are the things that make us human.”
This is true. Our society puts a lot of effort and money into technologies like blockchain and AI – effort and money which could also solve a lot of other problems. Problems that, if solved, enhance our humanity: clean water for every human being, enough food for everyone or school education for every child in the world.
The dangers of encoding bias
But, what I ask myself is:
- In which ways can technology support us that makes us human?
- And how can AI help us to create a better world?
We know that AI can be discriminatory. Sometimes that’s because we feed it with biased data. Data doesn’t always reflect the diversity of our society. By training machine learning with data that excludes minorities, it learns to discriminate against them. The AI will copy our biases, even our unconscious ones. For sure, there are areas where people need to be excluded: for example, products or content which is not suitable for under-18s. But there are a lot of examples where people are discriminated against only because they are not white, not male, not hetero.
We need to put ethics in our process of creating software.
What does that have to do with creativity?
We need to establish processes that avoid perpetuating the unfair situations minorities face. We need to ask ourselves who will be excluded by this – and why. We need to produce inventive and unusual processes to create more inclusive algorithms. We need to find new ways of collecting the data we use to train machine learning, so that it includes minorities. We need to include it in the software in a way that doesn’t lead to its rejection. And to do so we need creativity in software development. We need to be creative.
We shouldn’t just accept the facts that data is showing us at face value. Instead, we should challenge our own assumptions – and find creative ways to do better.
Feli Kugland needs pasta at least once a week. She also loves CSS and works as Executive Principal Engineer, Developer Relations at SinnerSchrader, part of Accenture Interactive.