As the design for a GUI evolves, it is useful to include the code generated by the Interface Builder with your own code, in order to produce a working application that you can test.
The flexible design of the Interface Builder means that you can use the software development strategy that you find the most appropriate. You do not have to change the way you work in order to get the best out of the Interface Builder. Rather, your usage of the Interface Builder fits in with your own working practice.
At one extreme, you can attempt to specify the entire GUI for an application using the Interface Builder: even callbacks, keyboard accelerators for menu items, and so on. This means that the source code for the entire GUI is generated automatically, and can then be integrated with your own hand-written source code in the manner which suits you best, perhaps by using Common Lisp systems, as described in the LispWorks User Guide .
Alternatively, you may prefer to use the Interface Builder for the basic design only. This is the most practical approah. Once you have created an interface skeleton that you are happy with, you augment the automatically generated source code with hand-written code. At this stage, you could dispense with the Interface Builder completely.
There are, of course, many stages between these two extremes. Because of the iterative nature of software evolution, the Interface Builder is often best used in parallel with other tools. A cyclic work pattern is often most effective, whereby you develop part of the interface (using the Interface Builder) together with the underlying code (using other tools), then save and test the results, and then go back and fine-tune the code you have already developed.
The Interface Builder is flexible enough that you can use it to whatever level you feel is most suited to your working methods, and to the needs of the application itself.