There is a moment in programming where you have to make the transition. From incompetent to competent, from worst to better, from junior to, well, less junior. Unfortunately there is no specific time when it occurs. For some it comes very early on, for others it comes very late. Some never even experience it. But the realization comes suddenly and often it is followed by shame. That moment is when you realize that you are the problem.
The only thing a person can do to create a program is to write code. The more code he writes, the more he contributes. Unfortunately, the more code he writes, the more problem he introduces. It's more of a philosophical realization then a programming skill to learn.
To quote this very popular github repo:
No code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.
This may be just a parody, but it is still true. Software becomes more complex over time no matter what we do. And the programmer's job is to write more code, thus increasing the complexity.
It doesn't mean you will go out there and never write code any more. This rite of passage is an important one because it makes you question even the highest quality code. It forces us to double check and test code even when it comes from a trusted source.
That's why a respectable technological company like Intel still undergo scrutiny when its programmers push down code into the world. Linus Torvalds called their last attempt to patch the Meltdown security vulnerability, "Complete garbage." And rightly so.
The humblest of programmers, if there is such thing, will understand that his code like anybody’s should undergo the same scrutiny.