That being said, the system is clearly broken.
Two suggestions i have is to shorten software patents to 10 years and adjust the length of a patent based on the financial capability of the filer (eg pegged to inflation). The other thing is that filing for a patent should not be so expensive because of the lawyer, it's just ludicrous. If the lawyer can be removed via a combination of software and policy changes (either pubic efforts, private efforts or both), then people will be able to pay significantly more for examination. For small inventors, a "slow lane" that is significantly cheaper can be allocated. Another idea is anonymous (for the filer) crowd sourced prior art search with incentives.