liveBook · Manning

Naivety

As explained in The Creative Programmer

Naivety is a lack of established knowledge or assumptions that can leave a person more open to attempting unconventional possibilities.

Naivety is the deliberate suspension of established knowledge and constraints so unconventional ideas can be explored before they are judged. It can be playful spontaneity, ignorance of what supposedly cannot work, or independence from rigid structures of thought. The goal is not to trust every idea, but to postpone rejection until possibilities have been gathered. section 4.6.2 section 2.2.2

Use healthy naivety as a short creative phase:

  • Pretend you know nothing about the existing system or its limits. section 4.6.2
  • Generate possibilities without immediately declaring them impossible. section 4.6.2
  • Try a simple, naive approach before optimizing or adding complexity. section 4.6.5
  • Step back afterward and evaluate which ideas survive practical constraints. section 4.6.2 section 2.2.2

A naive algorithm

A recursive Fibonacci function that directly mirrors the mathematical definition is a useful starting point. It is inefficient, but beginning there can preserve creative momentum; memoization or tail recursion can follow once the basic idea is understood. section 4.6.5

Trying what seasoned developers might reject

Rare’s inexperienced GoldenEye team did not know which Nintendo 64 game ideas were impossible, so they attempted features such as split-screen multiplayer. Frame-rate constraints forced compromises, yet the result helped shape the shooter genre. section 4.6.4

func Fibonacci(n int) int {
    if n <= 1 return n
    return Fibonacci(n - 1) + Fibonacci(n - 2)
}

Inspect the compact recursive Fibonacci listing as an example of starting with a readable naive implementation before considering optimization. section 4.6.5

How The Creative Programmer covers it

How deep it goes
Explains naivety through definitions, research contrasts, software stories, and an exercise, while deferring critical evaluation to later treatment.
Examples
Uses brainstorming, GoldenEye’s multiplayer experiment, recursive Fibonacci, and memoization or tail recursion as contrasts.
What you can do after
Apply healthy naivety by suspending expert judgment, exploring unconstrained possibilities, then evaluating and improving the simplest promising approach.
How it connects
Connects naivety with creativity, constraints, divergent thinking, knowledge priming, problem solving, evaluation, and critical thinking.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of The Creative Programmer. The section links point to the parts of the book it draws on.