Saturday, March 12, 2016

Programmer’s Block

[Book concept] There are many books on writing, economically written, that could be cross-applied to the struggles of a programmer in ‘writing’ code. There are just as many programmers that struggle with the creative and mental challenges of software development as in writing, but there do not exist similarly accessible guides. Instead, the software development literature focuses on skills, instead of questions of psychology, motivation and style.

It is common to characterize programming as problem-solving rather than a creative process. But in truth, especially if you work in a field like I do, it’s both. (Writing is both too.)  In my own work as a social roboticist, I have often struggled with Programmer’s Block. I have concepts that need to translate to lines of code in ways that I struggle to articulate.

I make human-inspired algorithms for robots, simplified social behaviors that a person can automatically interpret the way we interpret each other. In this sense, I am programming “living” characters. A mother and father may provide the basic DNA, however, who a child becomes involves many more variables. The motivations and expressions and ability to parse the people around it present formations of impressions of character are nondeterministic, but that I hope to influence in statically predictable ways.

Programming is Thinking
   Much like modern engineers do more than solve problems their boss hands them (they come up with ideas, start companies, create art), programming has become more than a set of skills, it is a way to explore interactivity. One of my favorite phrases from the writing books is “Writing is Thinking” — it’s hard to see the faults and strengths in your logic into you spill it from your head onto the page. Programming is the same way, the big concept you start with turns out to have twists and turns, each of which needs to be defined. Programming is thinking provides explicit feedback, sometimes fatal errors, other times warnings again to the green and red underlines that auto-check your grammar and spelling.

Cultivate a Programming Addiction
  Daily practice, small problems, goals that are impossibly to miss. Happiness is not drinking beer, kicking your feet up, it's Flow.

Conceptualizing vs. Editing 
  Use different materials, look at thinks from different angles.

Elements of Style (in Python)
  We adopt coding conventions to make our code readable to others, but also because it becomes

No comments:

Post a Comment