Tripartite knowledge is difficult to obtain in software development. You don’t really know exactly where you are going until you have already completed it. You have a goal in mind in the form of acceptance criteria. You have a toolset in mind that you will begin you work using. You may even have a good idea of what the code will be. The problem is this is not knowledge.
Working without knowledge is difficult for me. Every project I work on feels helplessly out of control until things settle down just in time for a release. This is why I like refactoring or re-architecting existing code. I have the knowledge in the old code base to refer to when I feel things are not going well.