If you made a list of "If I knew then (when I got started) what I knew now," what would you include?
Test early, test often
Every requirement document is (a) wrong and (b) incomplete
Nod to JamesCherrill.
My work involved and still does getting products out of the engineering cycle and into the world or production.
One of our company's best methods for doing that is to produce or use what is known as "the user manual." If you read books you may find this method in "The HP Way." While HP in my opinion has lost their way since about 2000 what we learned is this: If the product functions exactly as described in the user manual then you may completed your engineering cycle.
This can upset the engineering staff so be sure to listen to their concerns so you don't put out a 737-MAX product. Fix those and try the test as you being the user.
The buyers and users don't care if variables are in camel case or not. They only care if the product does what it is supposed to do, is reliable, lasts a good time and maybe serviced later.
I'm going to offend many by writing this but I wish I'd used this method on more projects that were mired in a design, redesign loop.
Do unit testing. Only test one small module at a time. Once that passes, do unit test of next small module that relates to the first module. By process of elimination a very large set of programs can be tested thoroughly this way.
Testing is never complete. There is always something that was not tested.