a coder's journey : practice, past project, prototypes, random trials, and so on.