I think it's a common pattern, only perhaps the magnitude is worse in your case. I observed it on myself as well on other programmers back when doing a project management stint. What helps me personally is having a notepad where I jolt down TODO items, to the most atomic level if possible. To give an idea what's on it here now: - probe for activity on the I2C bus - find the SIGCHLD problem - remove rectangle in the l…
When you know you need to "add feature X", what do you do? Write "itemize feature X" on your list, and then, when you come to it, sit there and think of a list of things to replace it with?
If I need to add a feature, I just come up with first obvious things that have to be done, and expand it as the problem works out or new circumstances arise. E.g. I had to add a protocol support (Modbus TCP & UDP) to the product, the list ended up like this (editorializing a bit):
- get green light from the manager
- read the spec for minimal conforming implementation
- implement conforming request parsing
- implement register read command
- add application-specific bit X to a register
- add application-specific bit Y to a register
- implement UDP recv/send loop
- test UDP part
- implement TCP listener
- test TCP part
- fix zombie issue with TCP handler
- test TCP part
- build of product with the new feature
- test the build
- test the build vs real PLC
Perhaps everyone has at least some ideas what you should do when you begin on chunk of work X, so you just write them down, no matter how trivial.