1. Don’t have a good understanding of the existing system architecture
2. Have not thought through the design of whatever has to be added, both in terms of function expectations or overall flow
3. Overly (?) concerned with “getting it right”; that can lead to paralysis: somehow you have to both demand the best of yourself at that moment and yet accept that despite it all you may not make the best choices - and that’s ok
- the method's signature and spec
- the changes in behavior you want
- history for file (and any bugs listed in there that had to get fixed more than once)
Looking at a diff and seeing a small modification to a method tells me more than a method that has entirely changed with for loops changed to while loops, indices replaced with iterators, different whitespace and brace placement, etc...