Yes, that is how these systems work. Usually, the "sumError" is actually a "leaky integrator" -- either the sum of the error for the last N data points, or a simple "new = old * alpha + sample * (1 - alpha)" single-pole filter. This is so that very old errors don't affect the integrator for the current situation.
Getting good PID values can be a time-consuming trial-and-error process. While you can put in "theoretically correct" numbers, all the various non-ideal behaviors of the real world may make the best set of parameters significantly different. Sometimes, jumping one of the values by a factor of 2, or 4, just to get a good sense of what the right order of magnitude should be, is the fastest way to the optimal solution. It's like doing manual simulated annealing on the PID values with your eyes and senses as the "fitness function" :-)