6 ms·
I have a CS degree, and while nobody sits around talking about data structures and complexity that's not the point. It gives you a foundation of knowledge that
by jacobsenscott 10y ago
I have a CS degree, and while nobody sits around talking about data structures and complexity that's not the point. It gives you a foundation of knowledge that you automatically and subconsciously apply to every job you do.
A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. It sort of gives you a crystal ball. You can see that some code isn't going to work when a db table gets to 100,000 records, or that some code is making the wrong space/time tradeoff, or that some code is using the wrong data structure from the standard library.
When your performance monitoring tool is telling you something is slow or leaking memory you have the foundational knowledge to understand why and fix it, rather than spending money on 10 more dynos or whatever.
Computers are so fast and cheap today a lot of this doesn't matter most of the time. The naive solution does just fine. But when the core dump hits the fan you better have one or two CS grads on staff.
- eksemplar 10y agoThe thing is though that you don't really deal with this in your day to day life, and when you do, even with a few CS candidates on staff, you're going to hire a consultant with a Ph.D. in the field. Of course I may be environmentally damaged from never having worked with someone who was self taught.
- jacobsenscott 10y agoI deal with this stuff regularly, but not daily. I'm sort of the go to guy on the team when things start to feel CS'y. It isn't PhD level stuff.
- schrodinger 10y agoI don't think that's entirely true. It comes up pretty often. You may not be doing formal proofs but it's helpful to have a thorough understanding as it helps guide intuition around scaling your product (e.g. how a database query will scale with more users). It should influence your design early on rather than be something requiring a PHD consultant later on
- emodendroket 10y agoI agree with the sentiment, but I would say people who are familiar with the CS principles and not necessarily people who have CS degrees.
- muhmi 10y agoThat sounds like very basic CS stuff, so I guess "CS degeee" here means B.Sc. level knowledge? ;)
- vonmoltke 10y agoWhy would it not?
- mamon 10y agoIn some countries (think "Europe") Bachelor degree is considered "incomplete", or just an intermediate step. Only Master of Science degree is regarded as true "higher education". There are even university programmes that take you straight to MSc degree, without stopping at BSc.
- pc86 10y agoAs opposed to what? When discussing the existence of degrees in industry "CS degree" means Bachelor's 999 times out of 1,000.
- burnstek 10y agoIt also helps communicate with colleagues who prefer to leverage their CS background when discussing algorithms, issues, etc.
- crdoconnor 10y ago>Computers are so fast and cheap today a lot of this doesn't matter most of the time. Indeed, yet since it's emphasized so much in college people prioritize this over cleanliness and architectural elegance which matters much more.
- Silfen 10y agoDepends (like most of these generalizations) on your college and teachers. I had two professors who hammered the point that the priorities are: clarity, correctness, and performance. In that order. Perhaps a bit dogmatic, but a useful idea. We would often spend class time writing cleaner, simpler code after arriving at a correct answer.
- BinaryIdiot 10y ago> A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. I couldn't disagree more. I do not have a CS degree and have lead many teams of folks with a combination of having and not having them. It's a huge mixed bag and I'm not confident you can make a general statement in either direction. Yes CS can prepare you by knowing some of the basics but I've run into countless people with CS degrees who don't understand how much of anything works. I've also run into many without CS degrees who understand how the damn storage implementation in Postgres works. Anecdotally, to me with my small bag of data points from the teams I've lead and the people I've interviewed, a CS degree is only what you make of it. If you were a good student, studied and understood the content then you have an edge. If you were an okay student who just memorized things for tests and never actually applied the knowledge then you're in no better state than someone without a CS degree (perhaps even in a worse state as most of the people I know, including myself, were told by multiple leads that without a CS degree everything is going to be a struggle and to advance you career you must get one so of course I had to work even harder to prove them wrong).
- nikmobi 10y agoI agree with you for the most part, but I think if his sentence read: > A CS degree can prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. I think most people can agree that it doesn't provide any guarantee, but it definitely gives you a boost in the right direction. (For the record, I don't have a CS degree)
- BinaryIdiot 10y agoYeah a simple word and I would have taken the post entirely differently :)
- jacobsenscott 10y agoI must have thought the word 'can' and didn't type it because it doesn't read right as it is. I do that sometimes.
- BurningFrog 10y agoSpending 4 years to get a CS degree gives you a lot of skills and knowledge. But so does writing software outside of college for 4 years. Which one is better? That's an empirical question.
- JoeAltmaier 10y agoUsually here is where we observe Dell, Gates and Jobs didn't finish college. But that's more about business than engineering.
- cholantesh 10y agoAnd even if it wasn't, one could retort that Brin, Page, Musk, Nadella, etc. did, and in fact, did graduate level studies. It's a complex question.
- epalmer 10y agoI think the CS degree validity question depends on the person and the institution. I have interviewed programmers from CS programs that did not know even the basics of programing, not to mention the more advanced topics that we should know. I also know of programs that are producing pretty well rounded and knowledgeable students with a 4 year degree. So the normal YMMV must be applied. I also think the same holds true for self taught programmers. I am self taught. Early in my career (decades ago) I was using perl to process some large text files. I was building a string of relevant information like $x = $x + "some value". So this was wrong on so many fronts. After 25 hours of running I figured something was wrong. Okay, so I'm a slow learner... I preallocated the string and the program ran in less than 20 minutes. Now of course a string was an inappropriate data type as well. I learned a lot at that point and starting thinking about internal representations of data structures and other concepts.
- rayiner 10y ago> A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. This. Many years ago, our code was shitting the bed, a month before a major milestone deadline. Turns out that someone wrote an N^2 algorithm and only tested with N=5. I don't have a CS degree--just a few semesters of combinatorics and graph theory. When I was programming, I always felt that was a huge liability. I'd confront a problem, and I knew just enough to know it could probably be reduced to some graph problem and solved using a known algorithm, but I didn't know what that was.
- simtel20 10y agoYes but I've seen CS degreed developers with industry experience do that when deadlines approach and the test procedures don't keep up with the product specs.
- pc86 10y agoAnd a CS degree teaches you nothing about how to appropriately test a given system and whether N=5 is sufficient, but industry experience will.
- unethical_ban 10y agosome CS degrees. From what I've observed, some CS programs are teaching "software engineering" at the senior/masters levels in order to focus on development and design over theory and math.
- ap22213 10y agoIt's extremely helpful if a team member has a CS degree, but it's not always essential. The CS grad usually understands the whole stack from UI through CPU, I/O, and memory. They don't get the distant stare when they see code with a Red black tree or a graph algorithm. They may not know about skip lists and bloom filters, but they can figure it out quickly. They understand reference vs. object equality. They understand multi-threading and concurrency strategies. They understand how to implement a hash so that there are few map collisions. That said, a lot of IT work, web development work, database work, API work, etc. doesn't require all of that. A lot of my work does, but if it doesn't, I hire based on passion, productivity, resourcefulness, and craftsmanship. As an analogy, many small businesses are successfully run by self-taught entrepreneurs. But, running a $100M company requires different knowledge.