One of the most prominent double edged sword in software engineering is the fact that it's arguably the easiest profession to right your wrongs. I once read a tweet from a musician who wished he had used a different word in a part of his song, the best he can do is make a remix, he can't take back that song and change the lyrics. This same thing applies to most industries, in manufacturing the worst one can do is recall products.
In software engineering when we right our wrongs we call it "update", the drawback of this is that some projects spend too much time in development because software engineers keep trying to make the product perfect. Mark Zuckerberg was famously quoted to have said that if he waited till Facebook is perfect before releasing it, he would never have launched Facebook. This is why product managers are important on tech teams, without them developers will spend much longer on projects.
Project specifications and deadlines are what help to limit how long a developer spends with a project and how much a developer can do on a project. Without these a project may go on indefinitely.