I disagree with this analogy. As software engineers become more experienced, they start avoiding patterns or obviously flawed software constructs which they recognize as potentially creating bugs in the future.
Things like marking fields of objects final/const, requiring immutability of objects, reduce bugs interior to objects. Immutable objects also reduce multithreading issues. That’s one pattern that can be used to reduce common bugs.
Nature doesn’t do this. For example: Southern California has a fire season (natural) followed by a wet season (natural) which tends to cause sever mudlides. These natural processes never learn from experience that large fires before the rain is more destructive (I know I’m stretching here and fires would be smaller if we didn’t put down the small ones initially).
My point is that humans, software engineers included, learn from past mistakes. Ideally we improve from those, not just throw our hands up and say bugs are a “natural” result of the software development process. Software will always have bugs, but ideally you as an engineer never make the same one twice (with the exception of off by one errors ;)