Extending Unfamiliar Code and Handling Changing Requirements