Three perspectives of which most people ignore one or more:
- Computer technology is over-run with frivolous, vague, stupid, conflicting, and contradictory patents. Any pretense of quality control by the USPTO was lost in the 1990s. This imposes a non-trivial cost on the entire ecosystem and a complete absence of quality control is arguably worse than no patents at all.
- R&D into new computer algorithms is a non-trivial investment, frequently requiring years and millions of dollars. There is a tendency among programmers to discount the level of effort required to develop a new computer algorithm that materially extends the state-of-the-art even though most could not develop such algorithms themselves and have never been involved in such R&D. Organizations that make this investment do so looking for a return.
- Academia is already facing difficulties in computer science because much of the state-of-the-art research is being done by private companies. Much of this research is being treated as trade secrets because (ironically) patents offer flimsy practical protection. As a consequence, there are a number of areas in computer science where the leading academic papers are literally a good half decade behind the state-of-the-art that is buried in NDAs. Lack of publication means that a lot of smart people are wasting time duplicating work. Patents were originally invented precisely to avoid this outcome. One of the reasons that I stopped reading academic computer science in some areas that interest me is that I see computer science under NDA that is much more sophisticated, which is a shame.
Any practical policy will need to take into consideration all of these perspectives. It is not as convenient and simple as "all software patents are evil!" or "software patents FTW!" but it more closely reflects the real tradeoffs.