“Bad code can contaminate otherwise good code that interacts with it, if the interface is not right.”
Coding is dealing with abstractions and the way that things relate to one another. You’re not just constructing the pieces, you are constructing how they will be put together. If you set it up wrong, it can be tricky to change later, if other people are relying on the parts that you’d like to change to keep working the same way they have been working from the beginning. And creating new software is usually a process of discovering requirements and uses for the software as you go along, so it is often difficult to know how to approach something at the beginning. Also, working with other people on the code means working with people who set up abstractions differently and have a slightly different, or wildly different understanding of what the code is meant to do, and the assumptions that underly it.
Working on a software project is a good way to see how people think differently, and how errors and assumptions affect the project and how people work together.
I like Frederick P. Brooks’ books on software design, and design in general. They are classics: “The Mythical Man-Month” and “The Design of Design”.
I think that unresolved doubt can and does serve a purpose. I think that becoming more comfortable with uncertainty, and refusing to come to a conclusion to avoid the uncomfortable feeling that comes with uncertainty, is valuable. I think that staying in a state of “I don’t know” can be psychologically tougher than coming to a conclusion.
Sometimes I see people, or catch myself, jumping to conclusions in order to have a resolution. I’ve had to train myself to stay in the unresolved state longer, in order to eventually end up having a better answer. That does not necessarily mean seeking that answer right away, and sometimes the path to finding such an answer is not clear.
I don’t agree with you that “A doubt that is not investigated might as well not exist. Every doubt exists to destroy itself, one way or the other. An unresolved doubt is a null-op; it does not turn the wheel, neither forward nor back.”
I think that a doubt that is not investigated still serves as a placeholder in one’s mind, a space carved out for uncertainty, so that if and when new evidence comes in, there is somewhere for a new model that includes it to take shape.