Robert O’Callahan very coherently expressed something I've thought about software for a long time:
In software, especially cutting-edge software like Firefox, every developer is an inventor; coming up with new ways of doing things is not exceptional, it's what our developers do every single day.
(h/t Br3nda)
Every piece of software is something new. Every time we sit down to create software, we're inventing something. We're creating something that, in a very specific sense, has never existed before -- much like we didn't have War and Peace before Tolstoy sat down to write it. After all, if you wanted an exact replica of some existing piece of software, wouldn't you just copy it instead of making it yourself?
Horrible metaphors of construction, engineering, or manufacturing are so frequently applied to software creation. "Making software should be just like building a house!" people say, less-than-subtly implying that it should be perfectly predictable in both time and cost (and ignoring the massive schedule and cost overruns that often plague construction projects). But making a new program isn't like making other programs one might have made before. You may be informed by similarities between a new project and older ones, and you certainly get better with the tools, but you're not faster because an identical item has been made before -- it hasn't.