Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Most degrees and professional certifications are meaningless to people who only care about the knowledge - there's no point in chasing paper that's out of date the minute the course is designed.

This is a stretch. Most of what you learn in a CS curriculum is extremely useful. Things like algorithms, computer organization, object oriented programming, operating systems, networking, mathematical approaches, etc. aren’t going anywhere anytime soon.



Yes and no. I have never implemented so much as a linked list never mind any more complicated data structures at $JOB. These things are provided by standard libraries.

But knowing what they are, and when to use them, is useful. As is the general background knowledge when it comes to understanding something new (since everything devolves to machine language eventually).


> Yes and no. I have never implemented so much as a linked list never mind any more complicated data structures at $JOB.

And I never divided four digit numbers per hand, yet I don't think we should drop the requirement for primary school math. I fully agree with your second point, but I think the critic is getting too hung up on the vehicle used for teaching these concepts. You don't need to implement a linked list per hand in your day job, but you need to grasp the concept and have an easy task to learn to program on.


So when should you use linked lists ?

My undergrad course didn't say shit about losing cache locality + indirection overhead, allocation cost per entry, etc. You will almost always be better off using whatever the default List implementation is in your standard library, and if performance really matters you will be better off using some optimized tree or whatever fits your use case and measure. Languages these days are not C, you are provided with really good defaults, reading the usage docs and ignoring the internals will yield better results than basic theory without testing your assumptions. You really need to know what you are doing to beat the standard library offerings - and knowing what is available > having a grasp of the underpinnings.

Knowing about algorithms can be useful, recognizing your data structure is a cyclical graph or a DAG, implications of it, knowing how topological sort works, etc. is useful - but even there - if you are good with search you can find the solution to your problem, you will just take more time.


It's extremely easy to "beat" the standard library offerings by incorporating what's unique and specific to your situation. They have to be super generic to be in a standard library. Of course, don't re-implement a completely generic list data structure. But implementing a particular kind of dictionary that takes advantage of assumptions that are true for your use case (but not true in general) and is custom tailored to your environment is extremely valuable.


>But implementing a particular kind of dictionary that takes advantage of assumptions that are true for your use case (but not true in general) and is custom tailored to your environment is extremely valuable

This requires way more knowledge than I got from my undergrad classes and in comparison learning that part is trivial forward to the hard part that you can pick up in "refresher" part of a book/article on the topic.

I doubt your average undergrad could do it so I disagree with the extremely easy part as well (heck I doubt they could write a bug free version in the first place, even less a better performing one) that a correctly selected std lib container. Well at least not without researching and testing a bunch at which point the background knowledge is trivial in comparison.


> but you need to grasp the concept and have an easy task to learn to program on.

"We have to reinvent the wheel every once in a while, not because we need a lot of wheels; but because we need a lot of inventors." -- Bruce Joyce


You have never implemented a linked list or anything more complicated? What the heck do you do all day!? I create new data structures all the time!


Likely creating and debugging http endpoints or web pages within the limits of popular frameworks. Those are the jobs like 90% of developers works on.


My step son is getting into programming and he told me about a console app he wrote where he stored the data in a flat file. I suggested he look into storing it in json format.

For me, the biggest benefit of a degree is more to show you what you don't know in pretty broad strokes. It's up to you to investigate deeper either on the street or with a more specific curriculum.

Broadening the possibilities of knowledge is pretty big. I've known of several otherwise great self-taught developers who didn't know much about database design because they just never really ran across it.


Fair. Perhaps I was over-zealous to include degrees in my statement.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: