I hate flat code. Flat meaning no sub-VI's. It looks messy, it is difficult to debug, it prevents multiple developers on one project, it hinders code reuse. Ahhh, to be able to decouple the front panel from the diagram, that is pure delight. You notice things like this when you open up other people's code. I had to do this today. The offender will remain unnamed, perhaps in a future post...
Don't create sub-vi's for sub-vi's sake, please. Try to bundle a specific functionality and God forbid, don't embed your globals into a subVI. The first level of sub-VI's are usually found on the diagram of a user-interface. This is the front line. The modularity of your code depends on what your application does, this needs to be defined. How will you break apart your functionality so it is easier to test and debug.