Being a student is a essentially a full-time job which one is compensated a negative amount. A reasonable alternative opens up the possibility to get compensated in a positive amount. In terms of just programming, you get might get a job for 60k conservatively and suddenly the difference becomes 120k... every year... for at least 4 years. Teaching oneself the theoretical foundations online is still harder than with a professor but the former was never intended to be a direct alternative so the comparison seems as meaningless as it is obvious. Considering someone with 4 years industry experience almost certainly fares far better on an engineering team than most undergraduate CS majors with a summer internship, the economics of the "in-person experience" just doesn't add up. As someone who left school, the reason I only dabble in online education rather than take it as seriously as a student might is because I have more important shit to do.