The developer sees and works with every software facet.
How it is seen by the user, the developer see during testing the software.
This analysis is often covered by a series of documents, known as specifications. Wherein a mix of diagrams and literal text describes the present problem and its solution embodied by the software code.
Facets of Software:
Written languages, either as documents or code, allow synthesis as a means of problem solving. Any written text is prune to various interpretations, so is code –not for the machine of course. Pogramming languages are ill-fitted analytic tools for analysing the problem domain.
Whenever a program gets written, a simulacrum of the given problem is solved by the software. Worse, the successful analysis only exists inside the head of the developer. When a software loses its lead developer, the entire analysis –knowledge acquired during writing the software– is lost, too. The investment in the problem analysis is gone, too.
The other Unified Modeling Language (UML) diagrams are meant for software construction and lead to the same synthesis inherent in every language.
GUI-Builders are analytic tools: With a GUI-Builder it´s possible to analyse the visual and interactive aspects of a software to be. The developer faces her software during the entire design phase and thus strengthens her design skills constantly.
A GUI-Builder must loose its analytic benefits when combined with a code-editor. The authors of software tend to concentrate on the creation of software, knowledge acquisition is only seen as a byproduct of writing the software. This is perhaps a social phenomenon, developers are being paid for results and not for gaining knowledge.