You wouldn't expect someone with a degree in English to know how to navigate a book contract, would you?
You wouldn't expect someone with a degree in English to know how to navigate a book contract, would you?
The vast majority of computer science students pursue a CS degree because it has become a prerequisite for being a professional software engineer. NOT because they have a desire to become a computer scientist.
The simple fact is that if you do not have a 4-year college degree you will find it immensely harder to work as a software engineer in the industry. It's silly to pretend otherwise.
The vast majority of today's CS programs do a disservice to all of their students. They are neither good engineering programs training students for industry (for which they currently serve as a proxy) nor good computer science programs. A recently minted graduate of a Chemistry or Physics program (from an accredited US 4-year college program) is, on average, much more versed in the relevant scientific findings and research techniques of their field than a CS graduate. They are so poor precisely because the vast majority of CS graduates do not go on to do CS research or utilize their CS knowledge but instead become software engineers.
Personally, I was already a programmer when I took my first University CS courses and realized quickly that while I love programming, CS isn't where my interests lie. I took the CS courses that were most relevant and wound up getting a business degree.
I do wish there were more programs available serving the middle ground between the v-school ghetto and the ivory tower.
I agree, it is possible to be a professional software engineer without a CS degree (some of the best fit that category), but that's a non-traditional road. More to the point, it's exceedingly rare for someone to intentionally avoid earning a CS degree if they plan, prior to attending college, to become a software developer.
I don't know if things are different outside of Canada, but isn't this precisely what a computer engineering or software engineering diploma is for? That's what I'm doing and it's definitely different from CS - very applied, a lot of low-level programming (assembly, VHDL, embedded C), making a game with Java calling C++, source control is always used, etc.
Software Engineering is more of what Joel is describing, and more schools are starting to offer it as a major, with as much focus going to various project management methodologies as algorithms and data structures.
> ...nor good computer science programs.
This may well be true, and that is pretty unfortunate.But, frankly, if all you want a job developing software, I'd suggest interning instead of getting a degree. You'll certainly be more qualified than your peers for most jobs four years on.
And, for what it's worth, I'm currently hiring for a Jr Developer. I want someone smart who we can train. A CS degree wouldn't hurt, but it's certainly not a prerequisite.
Any (career?) suggestions in general? I have a strong background in CS (I made prodigious use of ocw.mit.edu), and I feel competent at a practical level.
At this point, I'm just trying to pick a particular language to master while learning something esoteric on the side.
More importantly, I also developed all my programming habits during my formative years and therefore developed pretty good habits that are now hard wired and second nature. It gives me a huge edge over other programmers of my age who have been joining the work force over the last few years.
Trade schools exist, but since they're generally looked down upon you're not going to see a lot of popularity in Programming Trade degrees. Though perhaps the only difference between programming and metal craftsmen is that CS is more obviously popular and valuable these days. P only might equal NP so computers and robots haven't yet taken over the job of crafting programs.
This is meant to be a lot less a critique of programming and a lot more a nod toward the intense craft that goes into many of the things you might learn as a "trade". The general skill to build something physical and high quality is so frequently looked down upon these days.
There's a certain purity in studying the math and science behind computers instead of studying how to bring your C# program in under deadline.
Those who really care about both can always double major.
Mind you, I've not seen degrees in programming as distinct from Computer Science or Computer Engineering over here. We have one, two and three-year diplomas, yes, but degrees are all on the fundamentals over here.
The concepts are what should be taught - not the latest buzzwords.