Maybe they are just more practical. The worst physician's salary averages about $50K more than the best programmer's salary. Nurses get paid as much as programmers. If you do pre-med but can't get into med school, you can still get into public health, physical therapy, dentistry, optometry, pharmacy, etc... If you do CS but can't get a job at Google, you can get into TPS reports or be unemployed. That last part is grossly simplifying, but compare getting a programming job someplace like Wyoming or North Dakota vs. getting a medical job in the same place.