What is “creative” coding, anyway?
At this point, I am wary whenever I hear the term “creativity” used in the domain of computer science and computer programming. Since there are so many ways to create in this world, creativity can mean different things to different people.
For example, I might look at a HackerRank coding problem to manipulate a graph structure in some way and think “I don’t want to do that, it’s not creative enough!” But to another coder, they might look at that problem and think, “Oo, interesting, what creative approaches can I use here?”
Why don’t we agree? Well, for me, my favorite way to create is to put something completely new into the world. For another coder, their favorite way may be to figure out ways to solve a problem they haven’t seen before (even if other folks have solved that problem). I might personally value novel output more than problem solving, but that is not an absolute ranking; just a personal preference.
So I suggest that we instead use specific language when attempting to describe the creativity of a particular project or curriculum:
- Novel output: When I complete this project, will it be something that has never existed before in the world? Or will it be the same as what other learners have come up with?
- Self expression: When I work on this project, will I have a way to express my personal values and interests? Oftentimes, self-expression goes hand-in-hand with novel output, but projects range in the spectrum of self-expression. For example, a project to come up with elevator logic likely involves less self expression than a project to design a website that rallies people around a cause dear to you.
- Problem solving: Is it already clear how to solve the problem, or will I need to think through various approaches before I figure it out? Some coding projects may involve little problem solving, like projects to implement pseudo-code in a particular language, as they’re more about syntax memorization. Other projects involve a massive amount of problem solving, like those on Project Euler.
My hope is that thinking of creativity in terms of these aspects will help me design better coding projects, since I can actively identify what forms of creativity are over or under represented and come up with ways to make the projects more holistically creative.
I’d love to know what you think of this categorization and way of thinking.