3 ms·
> - you don't use most of the stuff you learn from CS at work (when was the last time you proved root two was irrational, or used red-black trees on the job?)
by mitchty 11y ago
> - you don't use most of the stuff you learn from CS at work (when was the last time you proved root two was irrational, or used red-black trees on the job?)
Used them yesterday in fact. Then again, using red black trees and knowing when you need to isn't uncommon in kernel programming. I'd couch this more: you generally don't need to care about using red-black trees. Until you do need them that is. The key is knowing and realizing when that time has come.
Just thought I'd put my $0.02 in on that one as it is both my opinion and experience.
- dagamer34 11y agoIt takes a really special person who hasn't gone through a CS education to be aware that when faced with a problem that have an obvious solution, they realize that there are things they don't know and either seek out resources to learn them or identify people that can ask for help beyond a simple "I'm stuck, solve this for me!" response. And that's why of you're a good software engineer, your job is secure. Because most people definitely aren't that and just end up making a real mess of things.
- yomly 11y agoDo you think that level of independence and self awareness is restricted to special people or CS grads? Is it so unlikely that someone who has earned a decent degree (which involved self study) and gone through a bootcamp to foster that behaviour in a software context may also have it?
- deleted 11y ago[deleted]
- BWStearns 11y agoI think after a certain amount of time writing code you get a feel for that though, even without a CS degree. Anyone who's opened a terminal knows they don't know everything, but it takes a few iterations of shittily reinventing the wheel before you internalize it. After that things start to smell(?) like someone solved them and then it's a matter of finding the right chapter in a book or set of google search terms.
- loco5niner 11y ago... did you mean "faced with a problem that DOESN'T have an obvious solution" ?
- yomly 11y agoFair enough, thanks for the input! Though you raise (inadvertently) a related issue in mentioning kernel programming: When asking a friend whether I should learn C, he posited: Do you want to be a programmer or do you want to be a coder? If you want to be a programmer you should look at C at some stage. His stance being that "programming" involved writing lower level code while "coding" involved working higher level with scripting languages and frameworks. There was no value judgment in his use of the words programmer and coder btw. So really it's a case of realising what you want to do with your code: If you're interested in working on kernels, OSs or videogames then CS is probably going to be more useful than a bootcamp If you want to work on building webpages and apps, a bootcamp could be a fast means of getting you onto the first rung of the ladder. The world of software is large enough for both CS and bootcamps to coexist.
- swsieber 11y agoAnd that's the kicker, isn't it: software development has stratified a lot. I'd put and other low-level programming languages on one end, and IT on the other.
- themartorana 11y agoI always pose this slightly differently as developer vs engineer, but it's the same thought. You can be a developer that's only ever written JS after reading a few blogs trying to make your Wordpress site do something fun. If you don't know what a pointer is, or aren't able to talk about thread safety intelligently, or pick-your-example, you're a far way off. I often press employees on this - it doesn't require a 4 year degree, but it does require years of education. You can be a developer the rest of your life, or you can continue to educate and push yourself. I graduated with a 4 year degree and definitely had a head start on some of the more esoteric concepts, but I think it took 7-10 years before I was confident to call myself a software engineer.
- mitchty 11y agoSure, I wouldn't tell anyone they need to learn C. Far from it to be honest. It is a rabbit hole of epic proportions. If you don't need to use it don't. But being able to drop down to C/assembly is sometimes the only way to fix problems. If you're writing a web page though... I'd say you're nuts to use C/asm. You should still at least learn some C at least in passing but I'm also a freak that likes to learn a new language every year. I don't stick to them but its a good exercise I think. The constants though are data structures and complexity, no matter what language you use those will always come in handy. Knowing when things turn quadratic is really useful. Or to be able to spitball how the tree structure you're using is going to fall down with N entries or traversals is a good thing to know.