Of course, the only way that you do gain this experience is to encounter it in the first place. When you hire junior programmers, you're getting inexperienced programmers, which is not by itself bad. When you fire experience programmers because they are "too expensive", on the other hand, you lose that ability to train newer programmers, lose institutional knowledge, and find you keep making the same mistakes over and over again.