Moving a short job before a long one decreases the wait time for the short job MORE than it increases the wait time for long one. You lie, you die. If a process has been using the CPU for about 100 ms lately, it will most probably do so the next time also. This concept is important for real scheduling algorithms. Can be preemptive or non-preemptive.
Starvation is possible.
Aging is the solution - increase the priority of the neglected process. For time sharing systems. If not, it is preempted and a new process is started.