Computer Science is Creative (fight me)
Don’t fight me. I’m not good at fights. Instead, I will woo you to my side using words.
Computer Science is a STEM subject, that much is true. I think people tend to see people who do STEM subjects as highly logical/analytical, which is fair enough. However, that doesn’t mean that STEM people are un-creative.
I think that creativity is important in CS. So much so, that my third-year project was on exploring how we could encourage students to be more creative in CS higher education.
Don’t believe me? I’m not going to throw my entire literature review into this post, but creativity can be seen across the Computer Science discipline.
Creativity in STEM
I’ve written elsewhere about modules on our CS course. But I want to emphasise that what makes CS a particularly unusual STEM subject is just how broad it is – we draw from Mathematics, Engineering and the Natural Sciences.
I think the types of creativity that you might see in Maths, Engineering and the Sciences may differ, and you’ll see all of those on a CS course. While ‘design’ is a big part of engineering, creativity in mathematics is more logical.
So, in my mind:
Producing a mathematical proof for something that a) you’ve never proved before and b) is slightly different to all the other proofs you’ve done before? Creative.
Designing an ‘original’ algorithm to solve a problem that you’ve never seen before, or even modifying an existing algorithm to make it more efficient in a way that hasn’t been done before? Creative.
Writing poetry in Python? Creative. No, seriously, code poetry is a thing.
Programming, while not being the be-all and end-all of CS, is still a considerable part of it.
On one hand, I view programming as a tool. On our course, learning programming is often not the end goal, but we dabble in various programming languages to complete coursework. In software engineering, I see several areas where creativity is needed:
- Problem definition / Requirements analysis. Sometimes problems can be quite complex. Often, people don’t even know what they actually want! Creativity may be needed to come up with requirements for an innovative solution – such as one using VR/AR.
- Design. Which architecture and design patterns do we use? Perhaps we need to come up with a number of possible solutions (divergent thinking).
- Implementation. Believe me, fixing some bugs requires a particularly tenacious brand of creativity.
- Testing. Come at me, fiend. Find ways to break my code. (Often, I am both the hero and the villain this story).
But more than that, code can be beautiful. Trust me, there is such a thing as ugly code. Code aesthetics for the purpose of readability is important for all programmers, but I know some people who take it further.
Programming art and graphics
When people think of creativity, they often think of visual (artistic) creativity. We have that too in CS.
Code can be used to create artwork. Whether that is ASCII art or more sophisticated generative art, it’s an art that uses a medium other than paints, pencils or clay.
Computer Graphics is a module that definitely required visual creativity, and I thoroughly enjoyed mucking about with different textures and colours and lighting and shapes – often with unexpected results! For example, at one point while doing my coursework, I ended up with this funky thing instead of textured bubbles:
And then there’s web design, app design, game design… just think of anything with the word ‘design’ in it, really. I don’t think everyone can agree that designing user interfaces requires visual creativity. After all, nobody likes ugly websites. Unless they’re delightfully ugly relics from the 90s.
CS for anybody, Creativity for all
Up until this point, I haven’t actually talked about what creativity is. That’s because creativity is a complex thing. There are several definitions floating about, but they have the following in common: for something to be creative, it should be novel and task appropriate or useful.
While the traditional view in Psychology was that creativity was inherent in an individual, newer theories in Psychology and Sociology acknowledge that there’s a lot more to it than that – we need an environment supports creativity. So, I reject the idea that someone is just an uncreative person and there’s nothing that can be done about it.
You can be creative. Yes, you.
Why have I dedicated this post to rambling about creativity in CS? I think that the common perceptions that CS is not a creative discipline and that there’s a dichotomy between being logical and creative are harmful.
I see myself as a designer-y CS person who is largely driven by aesthetics. In other words, I like to solve problems with style. 😀
I think the best Computer Scientists are passionate about technology, analytical, logical and creative. Does that sound like you?