9 ms·
So, I have two engineering degrees, but not a CS degree, so I'm kind of an intermediate case between the CS degree and the self-taught programmer, but closer to
by rossdavidh 7y ago
So, I have two engineering degrees, but not a CS degree, so I'm kind of an intermediate case between the CS degree and the self-taught programmer, but closer to the latter.
The only one of the advantages listed in this article that seems true to me, is the Prestige of having a CS degree. There are plenty of employers who will require a degree, and a few which prioritize a CS degree.
In general, CS majors spend their first few years unlearning all of the theoretical constructs they were taught in college. 90+% of the programming which needs to be done in the real world is CRUD with a few special features. Rarely are those special features related to anything taught in school, they are usually horrible hacks that are related to the legacy system your new system has to connect to.
There are, of course, exceptions, and for a few employers a CS degree is a big advantage. But, unfortunately, much of the teamwork and communication skills which the author lists s advantages of a CS degree, are again something where the CS major has to get over their schooling, and learn to communicate in the language that everyone else on the team understands.
Which, of course, nearly every CS major learns to do, they're smart people. But the only thing they really get out of the CS degree that matters in the real world, is the prestige, in 90+% of cases.
- lkitching 7y ago> CS majors spend their first few years unlearning all of the theoretical constructs they were taught in college Do you have any examples of these theoretical constructs? I find most of the things I learned in my CS degree useful for commerical software development and can't think of anything I had to 'unlearn'.
- rossdavidh 7y agoWell it depends on your employer/domain, but mostly it's the idea that most of what was learned falls under the category of "premature optimization", and makes the software more complex while making a negligible difference in efficiency. Of course, if you're dealing with truly big data, like a FAANG company or something, this may not be true at all. But the reality is, 90% of the software needed is satisfied by a standard CRUD setup, and you will not need to use any of the algorithms learned in school. This can be frustrating for a new graduate, who feels an urge to do "real" development and get past the simple stuff. It is mostly simple stuff, and should mostly stay that way. So basically, anything that wasn't CRUD (sort algorithms, processing that avoids just loading it all into memory, etc.) will usually be overkill. But, where you work it could always be different.