5 ms·
> We should avoid the notion that naive string concatenation is a problem that impedes our ability to deliver software, except for niche applications, this is n
by SomeCallMeTim 10y ago
> We should avoid the notion that naive string concatenation is a problem that impedes our ability to deliver software, except for niche applications, this is not the case.
The attitude that really basic Computer Science concepts like algorithms and algorithmic complexity are irrelevant is exactly why software projects are so frequently FUBAR.
The Dunning-Kruger reference is spot on. The original author doesn't even know what they don't know, or why they should want to learn it. Being proud of ignorance of a cornerstone topic isn't something to be celebrated.
- chrshawkes 10y agoCan you provide an example of an open source code base which is messed up due to ones inability to understand algorithms?
- SomeCallMeTim 10y agoI don't have an open source example; I tend to actively avoid such projects, and so I tend to accumulate lists of the ones that seem well engineered rather than the opposite. The Quora app, though: If I'm writing a reasonably long answer and I delete a paragraph, it can take more than 10 seconds to complete. There's some profound inability to understand algorithms in there somewhere, I can guarantee it. There was just a headline on Hacker News a few days ago about a "reject!" function, if I remember correctly, that ended up with an n^2 algorithm for several major Ruby releases because someone fixing a bug didn't understand the consequence of their change. I don't have the link, though. EDIT to fix the name of the Ruby function and to add the link. [1] Thanks to user nighthawk454 who dug it up! [1] https://news.ycombinator.com/item?id=13691303 https://news.ycombinator.com/item?id=13691303
- nighthawk454 10y agohttps://news.ycombinator.com/item?id=13691303 https://news.ycombinator.com/item?id=13691303
- SomeCallMeTim 10y agoYes, this link! Thanks!
- Apocryphon 10y agoGiven that the Quora interview process is reputably difficult [0], and not lacking in algorithms questions [1][2], this is quite a puzzling situation. [0] https://www.quora.com/Which-companies-have-really-hard-algorithmic-math-interview-questions-beyond-Google-level/answer/Jerry-Ma-2 https://www.quora.com/Which-companies-have-really-hard-algor... [1] https://www.quora.com/challenges https://www.quora.com/challenges [2] http://www.businessinsider.com/heres-the-test-you-have-to-pass-to-work-at-quora-silicon-valleys-hot-new-86-million-startup-2010-4 http://www.businessinsider.com/heres-the-test-you-have-to-pa...
- SomeCallMeTim 10y agoInteresting. I wonder what the history of their mobile app is, though? It feels like it's a hybrid app, and it feels like it's developed iOS-first, Android-as-afterthought, so it may be the ugly stepchild of the team that gets no attention. "Does it build on Android? Ship it!" Also, if it is hybrid, it may be a JavaScript team -- and JavaScript still has that "top developers love to hate it" aura [1], so it may be that some of the least talented Quora developers populate the team? (Apologies to the Quora app team, but ... 10 seconds to delete a paragraph?) The worst of the problems seem to be when I'm also using the SwiftKey keyboard, so they may not see them internally. Somewhere along the way they're doing something pathological, though, because SwiftKey works like lightning in other apps, and only in the Quora app can get bogged down and end up so slow that I have to disable it and use the standard keyboard just to type anything at all. There's also a bug where I sometimes can't hit enter after a link I've pasted, and again I have to switch to another keyboard. SwiftKey may be reacting to notifications that the text has changed, for instance, and Quora is sending 200 change notifications, one for each character changed, and then SwiftKey is querying the entire source document again each time... Or some such. Don't know. It's not just SwiftKey related issues, though. Whatever they were using for rich text editing has been broken in different creative ways every few months, where edits wouldn't take, or what you're actually seeing would vary from what gets posted, or you can't edit the link text, or you can't GET OUT of the link text, so all the new text you type ends up part of the link, or ... It's been broken in so many ways that I've lost count. A recent bug I encountered was when I was pulling the text down to get to the top of what I'd written, I scrolled it down once too often, and that triggered a "refresh" ("drag down from the top" to refresh) which lost all of my text. Sigh. The Quora app is really in need of a solid team experienced in app development, robust data handling, and proper UI behaviors. If it has competitive programmers working on it, they're solving the wrong problems. [1] I used to be guilty of this, but JavaScript got better, linters now help prevent the worst legacy JavaScript issues, I changed my opinion in large part, and I use TypeScript now anyway. :)
- sidlls 10y ago> The attitude that really basic Computer Science concepts like algorithms and algorithmic complexity are irrelevant is exactly why software projects are so frequently FUBAR. You must mean "some software projects" and not "frequently." And who's proud of ignorance? Ignorance of what? And, what's more, why should it be considered a negative if someone isn't concerned, or even is proud, about ignorance of certain things.
- stcredzero 10y agoYou must mean "some software projects" and not "frequently." In the 2000's and prior, it was common knowledge that the majority of software projects failed. Even if they succeeded on paper and shipped, they weren't actually used. By some estimates, it was something like 75% of software projects. If you look at the contents of "ecosystems" like Steam and the the various app stores, you'll see much the same. Most of the software out there is a defacto failure, and much of it is due to the ignorance of the programmers resulting in substandard programs.
- nulagrithom 10y agoYou really think that the majority of failures on Steam and app stores are due to lack of basic algorithm performance knowledge? A project can die a thousand deaths before performance becomes its death knell.
- stcredzero 10y agoThe large numbers of iPhone apps crashed a lot before ARC made memory management easier are good examples of bad programming killing a project.
- acdha 10y agoDo you have a citation supporting the claim that those failures were due to poor performance and not far more significant problems like failing to correctly model the actual business problem or handle changes? That era was dominated by waterfall development which is notoriously prone to failure due to the slow feedback loop. This is highly relevant because one not uncommon problem with highly-tuned algorithms is the greater cost of writing that faster code and then having to change it when you realize the design needs to be different, especially if pride + sink cost leads to trying to duct tape the desired feature on top of the wrong foundation for awhile until it's obvious that the entire design is flawed. That failure mode is especially common in large waterfall projects where nobody wants to deal with the overhead of another round.
- base698 10y agoI would say in my experience most projects are messed up from lack of separation of concerns--on many levels. Followed by, different teams maintaining the same code base all with their own stands. Being generally messy and not considering the over all design hurts way more than just basic CS. I have seen plenty of performance issues related to CS knowledge but a lot of times those are masked by messiness.