- You don't understand your code unless you can execute it in your head.. in the shower. Pro-points if you can decompose down to assembly and execute.
- You learn as much or more about your code through refactoring as when you wrote it the first time, especially applies to architecture.
- Refactoring is very often architecture centric/focused (code&data flow/paths, abstraction, composition, systems, coupling & interfaces) vs implementation ( flow control, conditions/constraints, data, operations etc). This makes architecture higher level and therefore requiring deeper thought and different thought processes.
- Anytime you are building systems/writing code for even mildly complex programs it is key to map it out on paper first. It seems trivial to the uniniated but it is a definite classifer regarding pro vs nube engineers.
- Don't be afraid of breaking things, after all you wrote tests right? YOU DID WRITE TESTS DIDNT YOU?!?! Ouch, that one stings..
SJK