A system for programming an industrial robot to perform work in a robot cell including a plurality of workstations (4a-c), the system comprising: - a first memory location for storing a plurality of programming blocks, each of the programming blocks includes robot code comprising program instructions for the robot to carrying out a part of a task, wherein a plurality of the programming blocks comprises program code comprising program instructions for generating a graphical user interface for guiding a user to program the part of the task, - a graphical generator configured to generate a first graphical user interface allowing a user to define a plurality of workstations, to select a sequence of said programming blocks for each of the defined workstations, and to define at least one specific robot cell including one or more of said defined workstations, - a second memory location for storing the defined workstations and the selected sequences of programming blocks, - a programming tool generator configured to generate a guiding tool for programming the at least one specific robot cell based on the program code in the selected sequences of programming blocks for the workstations in the robot cell, wherein the guiding tool comprises program code for generating a wizard having a second graphical user interface including a sequence of views including instructions for guiding a user to program the specific robot cell and allowing the user to select one or more of the workstations in the specific robot cell, and to input parameters in response to the displayed instructions, - a program executer configured to execute the guiding tool and to display the second graphical user interface, and - a robot program generator configured to generate a robot program based on the robot code of the selected sequences of programming blocks for the selected workstations, and the received parameters. - a first memory location for storing a plurality of programming blocks, each of the programming blocks includes robot code comprising program instructions for the robot to carrying out a part of a task, wherein a plurality of the programming blocks comprises program code comprising program instructions for generating a graphical user interface for guiding a user to program the part of the task, - a graphical generator configured to generate a first graphical user interface allowing a user to define a plurality of workstations, to select a sequence of said programming blocks for each of the defined workstations, and to define at least one specific robot cell including one or more of said defined workstations, - a second memory location for storing the defined workstations and the selected sequences of programming blocks, - a programming tool generator configured to generate a guiding tool for programming the at least one specific robot cell based on the program code in the selected sequences of programming blocks for the workstations in the robot cell, wherein the guiding tool comprises program code for generating a wizard having a second graphical user interface including a sequence of views including instructions for guiding a user to program the specific robot cell and allowing the user to select one or more of the workstations in the specific robot cell, and to input parameters in response to the displayed instructions, - a program executer configured to execute the guiding tool and to display the second graphical user interface, and - a robot program generator configured to generate a robot program based on the robot code of the selected sequences of programming blocks for the selected workstations, and the received parameters.