You know, I heard PG argue this in his software patent article, and I don't buy it. In the end, necessity is the mother of invention. Software engineers invent things because they need them. They would not, by default, either try to keep it as a secret or patent it.
Let's take the funny example of Amzon vs B&N on the one-click system. Do you think Amazon would not use the one click system if it were unpatenable? In the case of modern software patents, keeping it a secret is equivalent to not using it all. Since you invented it in the first place, I find this outcome to be excessively unlikely.
You are also suffering under the misconception that a lone programmer or programming pair would be incapable of standing up to big markets with a software invention. If his invention is really worth it's muster, he can come out with a profitable product that blows big companies out of the water. I've seen it happen before.
I very much favor the trade secret option, at least for software.
Patents are (theoretically) a pragmatic compromise between 1) the benefits to society of having people publish their ideas, and 2) the drawbacks to society of giving someone a time limited monopoly on the exploitation of the idea.
For software I believe the drawbacks in general far outweigh the benefits. There might be examples of "nobody else would have thought of this within the patent period" inventions, but they are rare enough that it does not make sense to have special laws for those cases.
In the physical "better mousetrap" world the issue is different. The situation is similar to the Hacker News startup world in that ideas are plenty. However, the cost of productizing the ideas is high, and there is less of a first mover advantage, access to distribution channels is more important. So patents in the "better mousetrap" world protects not the idea, but the investment of turning the idea into a product. The drawbacks of patents here are also smaller, as you rarely build unrelated products upon the "better mousetrap", so the cost of a monopoly often stays limited to the specific market. Patents here might be a good compromise.
In medicine there is a similar situation in that many ideas are "free" from public funded research, but useless without the very expensive clinical trials. The patents basically protects the investment in clinical trials, and no so much original research. However the cost of patents is huge. People die because they can't afford patented medicine (which include initial cost for the clinical tests, marginal cost, distributed cost of failed products, and profit), even though they could easily afford the marginal cost alone. It would be good to get rid of patents here, but they must be replaced with another system to cover the cost of the clinical tests.
Trade secret actually isn't a bad option, if you patent truly had legs then your secret is probably going to be safe for a fair amount of time. If your patent is getting people on a technicality and really isn't very innovative then your secret won't be much of a secret.
The argument against trade secrets is that they hurt innovation by impeding the flow of information. Patents allow a company to publish their innovations without fear of someone coming along and simply stealing it. By allowing inventors to publish their information with little competitive disadvantage, we enable other inventors to build on their predecessors efforts.
That's not how software patents work in practice. They are written to be as broad and non-specific as possible, because their purpose is to be legal weapons. They are not about spreading innovation; competition, in functioning markets, is sufficient for that.
I think patents can be (and have been) distorted to be used as weapons, but their real purpose is to help innovation as I described.
The argument you're making is basically that the system right now is broken, so we should just throw it out. I do agree that it's broken, but I argue that fixing the system is a better solution than throwing it out.
The current state of patent disclosure is such that your arguement makes little sense. Virtually nothing in software patent disclosures informs people about "how to do it". Almost all of the disclosures are vague and unspecific. If you, as a programmer, hear the title of a patent, you basically know how to do it.
Yeah, with Google search patents, they have been published years after the system was developed and is probably much evolved by now. Looking at the text in them, they only provide very vague guidelines to say SEO's try to learn more how how ranking works.
your first point wrongfully assumes that the patent system is the dominant mechanism for spreading inventions. it may have been intended to work this way, but this is not how it works in real life.
if you have ever worked for a software company that has a competent legal department, you know that you must stay away from patents. under no circumstances are you allowed to communicate that you have looked at any given patent or even acknowledge the existence of a patent.
patents are treated with more fear than toxic waste in IPR sensitive businesses.
besides, if you don't publish and you do something clever, how long do you think it would take for the competition to figure out what you were doing? or for people in academia to publish something on it? or for some independent blogger with too much time on his or her hands?
I wish people would consider reality rather than some make-believe world that does not exist when thinking about patents. so much time, money and intellectual energy is wasted on this nonsense. not to mention that it is clogging up the courts with absolutely pointless legal battles.
Let's take what I often here cited as one of the best software patents (personally, I think it is the worst.. but that's another story), RSA. Did that patent really prevent others from using/profiting on it? Hardly (although in most cases the "profiting off of" thing is a stretch, unless the explicit purpose of their product was cryptographic in nature.
Now, what if they had kept it a trade secret? Just look at their RC4. They kept it a secret and got a few years of exclusivity but eventually we all got the algorithm, because that's just how software works.
20 year exclusivity contracts are waaaay too long. I think the trade secrets route where "you have it until others figure it out" is far more fair and workable.