Abstract: The invention provides a bi-directional programming method/system/computer product for a programmer to enter source level instructions via either a visual language interface or a traditional syntactic level (code) interface. Irrespective of which means is used to describe the program, a corresponding “view” of the program (visual or syntax) is generated. Changes to the program can be made at either level, allowing the regeneration of the corresponding view (visual or syntax) to refect the changes. For example, should the original program be described in a visual format, then a program can be generated in the corresponding syntax level, then the equivalent version of the program can be regenerated in the visual format to reflect the changes. The invention can advantageously be used to develop back-end logic for an application program.