As background, I've been programming for about 5 years, and feel like I'm somewhat "up to speed" on industry best-practices and techniques (for web development, specifically), as well as software development fundamentals. However, I know I have a lot to learn.
Recently, many free online classes, MOOCs, have been made available from multiple initiatives, including many universities. A number of these courses are in software development, theoretical computer science, mathematics, and other fields that are generally relevant for programming.
I've been taking many of these MOOCs, learned a lot, and had lots of fun in the process. However, the time that it takes for me to complete the material leaves little room for doing much of anything else, including diving deeper into the subject matter or applying the material in the form of a project (I'm usually taking 3+ courses at once).
Thinking about this, I've come up with a few questions:
From a purely skill-oriented perspective, what are the pros and cons of taking classes / working on projects? Will working on projects help me improve my real programming skills faster? Will I miss out on some deep insight by not taking courses?
From a career perspective, what do employers value most? (I suspect that I already know the answer) Will a multitude of (open source) projects or a plethora of coursework be most convincing?
Finally, assuming courses are deemed as a "net positive", how much formal education is enough? If I continue taking MOOCs, when should I take a break and work on a project?