There may be some virtuoso programmers that can write astounding software without any prior experience. However, there are aspects that take most people years to learn, due to the time it takes to release a project and see it's failings. This is different from learning physics, philosophy, or the academic aspects of law and medicine which can be learned in a classroom setting. However, the practical aspects of law and medicine cannot be learned without years of experience in the field.
So yes, to be able to start practicing software the required body of knowledge is much smaller than medicine or law -- however this is somewhat artificial. There is monopoly control over licensing for doctors and lawyers. If there were monopoly control over licensing for programmers, they might have to spend years in the classroom before practicing as well. I believe that apprentices could start practicing medicine and law much earlier in their careers and learn the facts they need along the way. This would be a lot more affordable for students, but it would lower the wages of lawyers and doctors, so it's probably not going to happen.
As a medical student that just today finished his first year, I take a little offense to that ;) Namely, there are already fields for exactly what you describe: nurse practitioners, and to a lesser extent, physician assistants. They are taught general patterns of a small set of diseases, and can only diagnose that small set of diseases that specifically follow the course (i.e., pattern) that they were taught.
After a year of schooling, I am nowhere near ready to practice internal medicine or family medicine, let alone specialty fields. I can spot your garden variety shingles, ear infection, etc., but anything more requires experience - and knowledge - that I do not yet possess (even after a year of grueling studying!).
And no, it's not true just of programming. I'm currently working a job that I would get paid more for with an Associate's in the field... my four years of Ivy League education is totally worthless.
Basically, the only use of a 4 year degree is a stepping stool to a professional degree. For the vast majority of folks, it's completely useless.
For the most part it requires a great deal of skill and expertise, but not necessarily so much education. Practice is the most important thing, the amount of actual book-learning you need is quite small. This is why twelve-year-olds who have read a few books are quite capable of becoming halfway decent programmers; and I'm sure a lot of us here were once those twelve-year-olds.
I'm not quite sure how to distinguish between jobs that require skills and those which require education, but I do know that a doctor or lawyer needs years of filling their head with facts about a particular field of expertise before they can start producing useful work, whereas a programmer doesn't.