I have a lot more to post on the subject (particularly the obvious vs. non-obvious distinction and the idea of 'bad patents'), but for me the biggest change I think that is necessary is for the PTO to recognize that different technology areas surely require different validity lengths for patents. The current 20 year period is simply way to long for most current technologies in the computer space. For something like drugs, it certainly makes sense. I certainly benefit from the fact that the patent on ibuprofen has expired while the Drug companies certainly got the protection they needed for a sufficient time on Advil to benefit from their investment. When I was 13, I had a IBM clone pc with an 80386SX processor (complete with a turbo button to bump the bus speed to 50mhz). A patent on that processor would still be valid today despite the fact that the technology has been worthless for years. This is compounded by the fact that a technological leap in this technology area that used to take 10 years, now takes 1. That said, If the patent term is adjusted based on technology area, companies would still be able to get patent protection for the most valuable timeframe of their invention while still ensuring that the patent expires early enough so that the public can innovate.
The downside to this approach, is that some patents don't become fruitful until towards the end of their term. For instance, Apple put a lot of time and money into the development of the original iphone. No one can deny it was a complete game changer, and while they have patents to cover many of the components, many of those patents expired shortly after the iphone was released. The invention was created and patented long ago, but it took a long time for the technology to find it's calling. A shortened patent term might hinder these inventions. Perhaps the term could run from the time of first sale or licensing? Regardless, I feel that the patent term is one of the biggest hinderances to meeting the aims of the patent system when applied to the rate at which software/computer/internet technologies evolve.