My work consists of technical analysis. I like software development, but it's not my job. However, I have developed a significant system of executable files, libraries, databases and modules. This is not to say that such products simplify the work. I have produced enough documentation for each product.
In my work, working with a sufficiently competent software developer can actually hurt (if your original work is not software development), which means that you can quickly take on software maintenance and, even worse, you can be attached to project because "only you know the software." If you think that at NASA the project can last 15-20 years (Voyager lasts 32 years), this is not necessarily good. Although you are as good as others, others are moving on to amazing design projects or hardcore engineering (my passion).
To prevent this, I developed the following rule:
If you ask a question, I answer, but you document the answer in the official guide; if you ask for a function, I will work with you, implementing it in the actual code.
What I think will happen is that users will try to ask questions more diligently (otherwise they will have to document the answer themselves), and more people will learn the internal workings of the software as new features are added.
Enough context.
In a specific case, I would like to know what formal process follows in the software development life cycle to ensure knowledge transfer throughout the organization.
I firmly believe that this is not a subjective question, but will make it a public wiki to avoid confrontation.
Thank.