Of course many times you think you need a variable because your mindset is still biased by traditional sequential text-based thinking, while you actually don't need any at all. In LabVIEW, the wire is the variable. A wire is a 1D object and take very little space on the diagram while any kind of variable (local, shared, global, value properties) is a 2D object with a significant footprint. Often, such variables break dataflow that then needs to be artifically reestablished using sequence strucures to avoid race conditions. This will clutter the diagram evem more! Debugging race conditions is no fun at all and might take more time than programming the initial code.
More importantly, if you force sequential execution via these mechanisms, you will often loose compiler optimizations for parallel execution and you'll end up using only a single core of your multicore CPU.
As mentioned by others, often a shift register is a great subtitution for a "variable" of you need to read or write from one updated location. You can even isolate it into an "action engine".
"Variables" are sometimes needed for communication between independent code segments but there are often good alternatives, such as "action engines", queues, etc.
Your notion of using LabVIEW without wires is a silly proposition and quite artificial except in the scope of e.g. a brain teaser. What counts is the user interface (users should not care how you do things under the hood. They only care that (1) the program works correctly and (2) is as efficient as possible (memory footprint, execution speed, etc.). "Variables" often cause extra data copies and might even force a switch to the UI thread. These are all things that will make the code less efficient. If you are dealing with huge amounts of data, it might mean the difference between "runs fine" and "out of memory".
In the same spirit, I could write code with my left hand tied behind my back and the monitor placed upside down. Silly, right? So why would I artifically want to restrict myself from using wires? 😄
The reality:
A relatively simple VI using an eight-frame stacked sequence and 41 local variables (all tied to otherwise unneeeded FP objects!) :o. If you look at my modification posted later (Q-FactorMOD.vi), none of the local variables were needed at all. 🙂