dgbarnes
One, part of the problem is that I've found "computer science" and "software development" get shoved under the umbrella of the "computer technology" departments of community colleges, rather than the math or engineering departments. Consequently there's a sense that software development is an extension of IT rather than an engineering practice. That might be true in a lot of settings (e.g. making VB widgets), but I'm not sure it's great for producing generalist developers. Frankly, I think it also lends to unqualified people leading departments, hiring instructors, and designing a curriculum. Anecdotally, one semester I took a discrete math class (through the math department) and a data structures class (through the CIS department); I ended up learning a lot more about data structures in the math class, and the programming project I did for the math class was much more instructive than any of the projects in the CIS class.
Two, across all institutions (boot camps, community colleges, universities) there doesn't seem to be a coherent curriculum on how to teach this stuff [1]. With math, english, economics, etc. the lower division classes are basically the same everywhere. Even if you think the way we teach subjects is kind of weird (as I do with math), everyone knows what "Calc II" means, or what's taught in an intro to microeconomics course. With software, there's no consensus on where to begin. Is it an infusion of theory and practice ala the SICP-based courses (MIT and Berkeley)? Intro to programming (Stanford)? A class where you learn how to use an office suite (a lot of community colleges)? Git and HTML/CSS (bootcamps)? [2] As a result, it's not surprising that individual classes don't line up. Maybe this is fine for the case where students will only ever study at one school, but for a lot of students indenting on transferring to a university (or anyone trying to evaluate a curriculum) it's quite cumbersome.
Not being an educator (and being mostly self-taught for software development), I'm not sure what the best approach is. Personally, I think a combination of theory/assignment based classes supplemented with longer-term project courses is probably the way to go. The former helps in presenting a general area or class or problems, and how to solve them, and the latter might help with exposure to the diversity of practical software development.
[1] I say "stuff" intentionally. Even the scope of "software development" is huge and hazy
[2] I could be wrong with the specifics on schools here :)
* If you already have a bachelors, chances are getting further education doesn't make sense from an ROI/opportunity cost standpoint. That's ok though--there are other reasons to further your education. Just run some numbers and know what you're getting yourself into though.
* Community college can be an excellent value, especially for more introductory classes that have a pretty defined curriculum. Outside of that, quality seems to vary more and it's possible your credit won't transfer or satisfy the prerequisites to your program of choice. Unfortunately, most community colleges don't seem to have university-level courses beyond the basics. Leading to...
* Computer science programs have a lot of variation in terms of their curriculum, so it can be hard to piecemeal classes from different sources. At the masters level (which, if you have a bachelors already you might consider) most programs expect you to come in with something of a bachelors-ish level background in computer science, and if you don't, they'll have you take their curriculum. It seems like having professional experience helps in terms of consideration, but not in terms of coursework.
* There are a ton of online programs out there. For what I'm looking at though (MSCS), they work pretty similarly. You can take classes on a per-class basis, then apply to the program, and they'll accept some amount of units toward the degree (note that you can't apply units from your undergrad degree). I know this is the case with Stanford's SCPD program, and I believe it's also true of USC and Columbia.
* Online programs can be pretty expensive on a per-unit basis. Taking one class at a time helps with the sticker shock. Also, there are a lot of professional programs that take less time. Personally, I'm hoping to do a research project, so that won't work for me, but it might for you.
* You can also take classes on an "open" basis at a local university, which is nice for the odd class that is tangentially required that you don't want to pay a lot of money for. For example, I'm taking probability theory at SFSU right now.
A little about me: I'm currently taking classes in preparation to apply to a masters program. I have a BA in economics, but I've been developing software professionally since 2008. I'm currently doing the "Foundations in Computer" science courses through Stanford's SCPD program to provide a coherent core curriculum before applying to programs.