Although you cannot possibly reduce to zero bug except for simple programs, good practice would make it better. The problem is any change could lead to another unexpected bugs.
The following was the concept on zero bug scheme from my article Super Programmer in the defunct PowerBuilder magazine.
Basically you go through the program with all possibly outcomes and check the codes on paper. If you find more than one bug, fix it and repeat the same procedure again until you do not find any bug. Followed by actual tests trying all the possible outcomes, alpha test and beta test. Quite simple concept, right?
However, most corporations do not do so. They are short-sighted to put an untested products in the market to gain market share, money at the expense of the company's reputation and long-term profit (it costs far more to fix a bug in the field).
Microsoft's Windows is a good example. They must be required to meet a specific deadline. If you cannot, you would get fired and hence the software has not been thoroughly tested. If there is a design fault (such as the same version of Windows for laptops and tablets), they have to 'swallow' it other many folks would be fired or get someone high up in big trouble. No one wants their stock option and/or bonus reduced.
If they give me half a day, I can tell them most problems of the current Window. How hard and how expensive to do so? Where have all the programmers and QAers in last decade gone?