5 ms·
> I have no fucking clue how to write a BFS. I've never needed to know how to write a BFS. [...] If there's something I need to know and don't, I simply researc
by skookumchuck 8y ago
> I have no fucking clue how to write a BFS. I've never needed to know how to write a BFS. [...] If there's something I need to know and don't, I simply research it.
The problem with that is when the best solution to a problem is a BFS, you may never recognize or realize it, because you know nothing about BFS. You won't know what to research for.
I see it when people who don't know what calculus is go to enormous efforts to develop workarounds that sort of half-assed work.
I see it in my own work when I didn't know about a class of techniques, so I invented some crappy solution. For example, reinventing bubble sort when I could have used quicksort.
BFS is awfully basic knowledge. How do you know you've never needed a BFS? Maybe you never needed a BFS because a linked list is your go-to data structure? Maybe you've been reinventing bubble sort. (I'm not the only programmer who incompetently reinvented bubble sort, not even close. I just didn't know any better.)
- zanny 8y agoAt least in my case I'd like to think I absorbed the habit of recognizing sub-optimal traversals of data (for example, yesterday I was writing a parallel iterator and made the intentional choice to "waste" effort duplicating the map result than having to synchronize threads on mutable boundaries) but I don't remember all the buzz word jenga that was in my data structures class in uni.
- skookumchuck 8y agoI've often been able to dramatically improve other peoples' code by selecting the right data structure (array, list, tree, hash, whatever) where the original programmer clearly did not know about them. They were able to make the code work, but not very well. It's hard to do research when one doesn't recognize there's a problem, nor know what question to ask.
- devxpy 8y agoYou think every programmer has a CS degree?
- shkkmo 8y agoI don't. The ability to figure out how to write BFS still seem pretty basic to me.
- skookumchuck 8y agoI don't have a CS degree. But I know the freshman algorithms. It's the basic tools of the trade.
- chooseaname 8y agoBegs the question, if they don't, shouldn't they still get familiar with CS? Honestly, how hard is it to read Grokking Algorithms? Look, I think the dev hazing ritual that is current hiring processes sucks, but Algos and Data Structs are the language that we speak. We have to be familiar with them.
- microtherion 8y ago> I see it when people who don't know what calculus is go to enormous efforts to develop workarounds that sort of half-assed work. cf. https://escapethetower.files.wordpress.com/2010/12/tais-model.pdf https://escapethetower.files.wordpress.com/2010/12/tais-mode...
- arvinsim 8y ago> I have no fucking clue how to write a BFS. I've never needed to know how to write a BFS. [...] If there's something I need to know and don't, I simply research it. >The problem with that is when the best solution to a problem is a BFS, you may never recognize or realize it, because you know nothing about BFS. You won't know what to research for. Just because someone doesn't know how to write BFS code doesn't mean they don't know what it is. > BFS is awfully basic knowledge. How do you know you've never needed a BFS? Maybe you never needed a BFS because a linked list is your go-to data structure? Maybe you've been reinventing bubble sort. (I'm not the only programmer who incompetently reinvented bubble sort, not even close. I just didn't know any better.) Never had to write a BFS in all my years of programming. I am one of those programmers that write glue code and are not "real" programmers by the definition of some here in HN.
- skookumchuck 8y ago> Just because someone doesn't know how to write BFS code doesn't mean they don't know what it is. Actually, it does mean they don't know what it is. BFS stands for "Breadth First Search". If a node in a data structure has two links, one going down in the data structure, and one going sideways, breadth first means going sideways first. "Depth First" means going down first. That's the algorithm. It ain't rocket science. There's no trick involved.