The techniques I know for understanding code: by figuring out how others understand it, by reading it, by writing about it, and by changing it.