6 ms·
I laughed when you only pointed out two of the things I listed in what I accomplished for my CS degree and went on to say it was "insufficient" because we don't
by jshowa 14y ago
I laughed when you only pointed out two of the things I listed in what I accomplished for my CS degree and went on to say it was "insufficient" because we don't have budget and time schedules like companies do in order to actually do production scale work. Not only that, the point of doing those things isn't to ship it to the masses, its to create something useful and to sharpen your skills. Case in point, your professor and sometimes the university are your customers. They evaluate your work, give you suggestions, and help you identify things you did wrong or could do better on.
I also laughed at the assumptions you made about me somehow being a lone ranger and not doing group work... I guess I should ask if you've even went to or been in a college.
You seem to have incredibly high and almost unmeetable standards that would actually require a college grad. 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. Not only that, its a pretty good guarantee they will do well if the have decent grades. 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. 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. And you are willing to train them to be up to par, then you must be living in a fantasy world or we have completely different concepts of what programmer and computer scientist/engineer are.
One last thing. 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.
- potatolicious 14y ago> "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?
- jshowa 14y ago> Creating useful one-offs is a long, long way from consistently shipping. Yes it is. There is a lot of software, consistently shipped, that is shit. And if you honestly think creating one off items is useless, please go down to your local universities research department and tell me why one off items like robots, exoskeletons, autonomous quad copters, that came straight out of the university from the work of students means nothing. >Software-for-fun, without constraints, is really, really cool, and completely unlike software in the private sector. Yeah, as if students have all the time in the world to produce software without anything like a budget, or schedule, or progress meetings. Yup, we all take one class a term. That's why it takes us 4-5 years to graduate. > This is the line that separates a very good, but very green programmer from a guru-level senior. So, you want senior level, but you're willing to start from scratch by pulling people who have no degrees. How can you have any guarantee of a formal knowledge base? Why the hell would you want to waste time fixing things like style and teaching people software engineering (which isn't only about shipping product that you are so gun-ho about)? You do know software engineering is in most computer science curriculum. > They will be rough around the edges on the CS side, but that's something you can fix with experience and training. Something you wouldn't have to do if you pulled college students, like me for example. > 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. I fail to see how that makes getting a CS degree worthless. It says that either a lot of junk is put out, or you are in the parcel business. Shipping code is something for product managers and sales people if you're working for a company. The Internet if you aren't. If you think that's what separates the men from the boys, see points 1-3. I wonder why I don't see a lot of books on shipping code when I go on Amazon or to the local book store... I wonder why... I guess we can all just forget about good software if "shipping code" is the grand answer... Yeah, I've done an internship with a company and guess what? There are people without CS degrees that are commercially certified in the languages they develop in and suck. The code they ship is buggy with hardly any input validation and doesn't work according to customer requirements. There are people that don't even know OOP concepts, or even basic design patterns. They don't produce any UML diagrams because they use their own ass backwards design notation and they don't have a consistent development methodology. > Lots of hustle along with experience are much more valuable than academic knowledge. Except with my academic knowledge I don't need to be hustled or have basic, remedial things fixed. I can also identify problems with existing systems and solve them competently. I don't need to be "taught" basic practices. I may need to be refreshed from time to time, but I know "what" I need refreshing on and "why". > And what percentage of CS graduates do you think will commit all of the above sins? A low percentage. I've committed some, but my professor caught them and I fixed them. I don't have to be told those habits are bad by my boss. I don't need to be told how to do things efficiently. But hey, if you want to spend time fixing problems that programmers are clueless on, go ahead. So I ask the same question, how many programmers do you think can identify such problems and fix them themselves? > Why wouldn't I value real world experience that actually trains shitty habits like this out of people? Because I don't need real world experience to train those shitty habits out of me.
- stch 14y agoWhy do you think it's so surprising that when comparing CS graduates and someone who's spent 4 years in the workforce doing real programming work, the latter is better at doing exactly that? I was CS grad from Stanford, and I agree with the other guy -- an enormous amount of the work I did in college was mental masturbation that, yes, did help me get better at programming, but didn't make me nearly as prepared for work outside academia as I would have been had I been working outside academia.