Reflective Articulation

Roughly the same thing as SelfTalk. See also DebugByDescribing, ProgrammersNotebook, RubberDucking.


I constantly 'talk to myself' by typing into a text file, whether it's designing, debugging, or implementing. My writing is fairly stream-of-consciousness, as if I'm talking to someone next to me. It is useful for the reasons other people have described above, but often even more so when I'm coming back to code I wrote a long time ago. It's like having the old me describe things about the system to the current me, including all of the reasons that I discarded other approaches before settling on the current one. As other people have noted, coding speed isn't really bound by typing, so I don't think being verbose in my diary costs me any time overall. And it makes working a lot more fun. --DanSchmidt


I do this too! ( And thought I was the only one :-) In addition to plain stream-of-consciousness, I have found certain structured formats very helpful.

"Question and Answer"

In question and answer, I write all unknowns as questions, and then post answers as I get them:

Q: How does the client know their own id?

A: The local_client record contains a client's own id.

"Problem and Solutions"

In problem and solutions, I write a problem statement followed by brainstorming of possible solutions. These can nest indefinitely. When I choose a solution, I flag it with an IMPLEMENTED comment:

Problem: Actively colliding objects need to be able to find each other.

Solution: Each object stores a link to a possible collider.

Solution ( IMPLEMENTED ): Use a central Mediator object to manage collisions.

"Key Idea"

I use Key Idea to place special emphasis on the gestalt of a system. For example:

Key Idea: Record ids have static mappings to object types, therefore record ids provide MEANING, not just a pointer to data.

--AshleyFryer


ShouldWeTalkToOurselvesWhenReadingCode?


CategoryLearningMethods


EditText of this page (last edited July 7, 2012) or FindPage with title or text search