Computers can do such elaborate and complex calculations and handle such intricate routines in so short a time that one is tempted to keep adding details until finally there is no possible way to understand what has been done. It is too easy to overlook some critical detail if the path through the program is too difficult. It is something like sending a small child to the store for a loaf of bread. Your chances of success are greater if the route to the store is fairly short, passes no playgrounds or amusement arcades, and if you give the child the exact amount of money, than if you send the child on a five-mile jaunt through city streets with ten dollars in his pocket. The great ideas are all simple ones.
Awareness is part of the answer.
Tell yourself that the danger is out there, and constantly ask yourself if there should be a simpler, easier way to do it. Never mind that you spent hours working up some elaborate procedure. Never mind that it has become your baby, that you feel like a mother to it, that you couldn't bear to throw it out. Throw it out, if there's an easier way to do it. You have not lost everything you throw out.