Programming and creativity

My client had been bringing me a constant stream of little technical challenges to solve. I pulled together different tools to make things happen: AutoHotkey, NodeJS, shared files, optical mark recognition, and so on. He said it was fun watching me figuring things out. It got me thinking about how programming can involve many different types of creativity. If you can tell the different types apart, you might be able to focus on improving some of those aspects.

2014-09-10 Programming - What does it mean to be creative?

2014-09-10 Programming – What does it mean to be creative?

Here’s a rough first pass:

  • Design: Probably the most obvious form of creativity in development, whether we’re talking about interfaces or architecture.
  • Imagining or anticipating needs: When people don’t even know what they’re missing
  • Imagining practical applications: Starting from the solution or from an available tool
  • Seeing gaps and being curious about possibilities: Maybe related to anticipating needs? More like, “Hmm, what if?”
  • Collecting components/capabilities and combining them: API functions, tools, etc. Like collecting puzzle pieces and then being able to dig up the right combination later on.
  • Making adapters: Smooshing different systems together.
  • Generating variants and other ideas: Coming up with different approaches, or coming up with variations on a theme.
  • Incorporating feedback and iterating effectively: Probably related to generating variants or shaping requirements, but also related to getting beyond vague requirements or too-concrete requirements.
  • Breaking things down and building a plan: Seeing the components and figuring out a good order.
  • Shaping requirements: Translating vague requirements/feedback or seeing past what people think they want.

Hmm…

  • Raymond Zeitler

    The “Breaking things down” is an interesting test of how well the coder understands the problem and its solution. I’m thinking now about algorithm design and even the recording of Emacs keystroke macros. There’s a “knack” to translating human instructions into instructions that the machine can understand.

    Anyway, I think creativity is my secret tool that makes me stand out. So I get nervous and annoyed when I see Deepak Chopra and other gurus plug creativity to the business community. “Anyone can be creative,” they say. Perhaps, but it comes naturally to you and me.

    • I do think creativity is a skill that can be developed (or a set of skills, even). =) So yes, I’m all for more people embracing their creativity. It’s not as intimidating as people might think, too. I remember thinking something along the lines of “Creativity? But I can’t draw well / come up with lots of new business ideas / etc.”, but creativity has many more forms than that.