Blender had been designed with this flow diagram in mind: 

    -Data select 
    A user selects data. This means that the user decides which part of the 3D world will be worked at. The Blender universe is organized in an object oriented structure.  
    At the top level are (Unix/Dos) files and scenes. One single file can contain several scenes, the scenes contain the 3D-objects, materials, animation curves, rendering options etc. 

    -Visua select 
    This data can then be visualized in windows. As 3D wireframe, or Z-buffer rendered, or as buttons, as a schematic diagram, as animation curves, as sequences, as a file system. Blender offers an extremely flexible window system. Any non-overlapping screen lay-out is possible.  

    -Edit select 
    Based on the selected window - the visualization chosen - the user obtains a set of editing tools. Editing is always done directly at the data. This sounds quite obvious but this is where common 3D software fails in being intuitive and interactive.  
    Mainly this is a speed problem: it can take minutes before you see the result of an editing command.  
    It's also an 'inverse correction' problem: the user is only aware of the visualization, not the actual data it represents. It can be very confusing when you try to do something and you see the opposite!  
    Blender has a fast visualization system, under perfect control of the user.  
    It offers a wide selection of tools, all of them at choice accessible with a single mouse click, as a keyboard command, popup menu's or even mouse gestures!