>
"its to create something useful and to sharpen your skills."And there's nothing wrong with that - what I am saying is that if your goal is gainful employment in the software sector, that is insufficient. Creating useful one-offs is a long, long way from consistently shipping - which is experience you can only get, as a student, via internships, active open source, or hell, entrepreneurship.
You are not going to get that no matter how many class assignments or projects you work on.
> "because we don't have budget and time schedules like companies do in order to actually do production scale work"
And therein lies the rub. Software-for-fun, without constraints, is really, really cool, and completely unlike software in the private sector. They are completely different beasts, and your everyday life as a software engineer is only fractionally writing code.
Think about it this way: you're an incredible sprinter, but you're looking to join a triathlon. No matter how good you get at sprinting, it is insufficient for success in the overall scheme of things. This is the line that separates a very good, but very green programmer from a guru-level senior.
> "I guess I should ask if you've even went to or been in a college."
Yes. And let me tell you, those 4-man projects they have you working on are nothing like working in a software shop. Hell, it's not even very much like working in a 4-man startup, where the bulk of your day becomes architectural, business, and product-focused.
I'll be impressed the day they can craft a CS curriculum that even remotely approximates the actual dynamics of professional software work.
> "You seem to have incredibly high and almost unmeetable standards that would actually require a college grad."
Note that I didn't say that you absolutely won't get a job without prior professional experience. You may, but your road is going to be unnecessarily difficult. For every one of "you" (i.e., someone with a great deal of self-hacking, and presumably did well in school, but lacks real professional experience) there are tens of thousands who went the other route. I've been through the fresh-grad hiring cycle several times now, and companies will go into bidding wars with each other for the graduates with prior internship experience.
Everyone else is just picking at the scraps - not particularly slim scraps mind you, but you are not treated like an A-player. This may be an unfair judgment, but such is the state of the industry. Hiring is an incredibly difficult task, and most means of judging skill are incredibly noise-heavy. An internship guarantees a company a known quantity for very little risk, and they will favor them heavily above all others.
> "Yet, you seem so adamant that a degree isn't necessary which is illogical since you usually pick up software engineering experience, group work, and a solid understanding from graduates."
Thankfully software engineering is not yet a regulated profession. You can ship product and code without going to school for it - and many people do. I've hired one or two, and worked with many more - they are pragmatic programmers who are well-rounded. They will be rough around the edges on the CS side, but that's something you can fix with experience and training.
A CS degree has a relatively low correlation with being a capable programmer. A lot lower than one would expect anyhow, especially since the vast majority of code being written in this industry do not delve into CS fundamentals very often.
> "If you're telling me you are willing to pick programmers up off the street expecting them to know software engineering concepts like scalability, modeling, and being on a development schedule."
Lots of people graduate from college (or don't go at all) knowing this. That's why we pay them the big bucks - this is the demographic that's being courted by all sides by multiple companies throwing $150K+ numbers into the air. Yes, for a fresh undergrad.
You know how, as a programmer, you leave school knowing this?
You ship product. You ship it a lot, either on your own, or you do it as part of internships with other companies, or you join active open source projects with strong leadership. You do not learn this from hacking on class projects or assignments.
> "Programmers who've got a couple of projects under their belt that probably involved no human contact and probably aren't even that good due to lack of formal training."
Formal training is the most overrated part of software engineering, really. Software is absolutely a trade, and is realistically not unlike plumbing or carpentry. Lots of hustle along with experience are much more valuable than academic knowledge. And who do you think has a more realistic experience with human contact in software: the guy who's shipped product as part of a team, or the guy who got assigned to a group assignment and hacked it out in a week?
> "And you are willing to train them to be up to par"
Oh yeah, we are. Because they are way further along than a green CS grad with no experience. They have experience shipping code, which is the hardest thing to learn, and encompasses a huge number of skills. The whole "not having super amazing CS knowledge" part is fixable, particularly if you have strong mentorship and guidance. Fixing a pure-academic is really hard, though it can also be done.
> "If you think god objects, no early exiting of loops, and lack of enum use are "style" problems, then I can see why you are hiring the wrong people"
And what percentage of CS graduates do you think will commit all of the above sins? Having a CS degree in no way promises that they won't make stupid, shitty decisions like that. Like I keep telling you: having a CS degree doesn't have as strong of a correlation with "being a competent programmer" than you imagine. I have seen all of the above and worse from CS grads. So why would I value "having a CS degree" over anything else? Why wouldn't I value real world experience that actually trains shitty habits like this out of people?