4 ms·
Clever ideas that failed (2010)
- elvinyung 9y ago"And, behold, I will deliver you up to the programmer tendency to build overelaborate castles of abstractions." --- King James Programming (http://kingjamesprogramming.tumblr.com/post/136036727910/55-and-behold-i-will-deliver-you-up-to-the http://kingjamesprogramming.tumblr.com/post/136036727910/55-...)
- dankohn1 9y agoThis is superb. YAGNI may have it's own Wikipedia entry, but that doesn't mean that we remember it when a brilliant idea comes to mind. https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
- senatorobama 9y agoAll hail YAGNI, the god of code.
- fiddlerwoaroof 9y agoI find that YAGNI is usually used to justify hacking something together without thinking about the design of the system you’re working on.
- syllogism 9y agoYagni is a duality though (like a trinity, but two). You've just met Yagni's other face, You Are Going To Need It.
- TylerE 9y agoAn important corollary to this is "0, 1, many". Any time you are storing data, the acceptable number of items to handle are none, exactly one, or a number limited only by machine resources. Don't design a container to hold, say, up to 5 items.
- always_good 9y agoI don't understand. I would just about never want to use an unbounded buffer, for example, for a channel.
- ComputerGuru 9y agoYes but that is an artificial limit and not an architectural limitation. i.e. a feature added to code that was once / would have been infinite otherwise.
- 0xcde4c3db 9y agoOn the other hand, instantiating/specializing a container to hold up to 5 items can be a perfectly reasonable thing to do, depending on the application. It might be a design requirement that a safety-critical program never has to restart due to heap fragmentation, for instance.
- newfoundglory 9y agoYou sound lucky, not to have tried arguing someone down from building a platform that would be able to implement both the system you're working on and any related hypothetical future systems as well.
- draw_down 9y agoI wish I felt that way. I’ve seen so much silly overcomplicated junk in my career, my inclination is always to keep it extremely simple.
- nurettin 9y agoIn the beginning, KISS and YAGNI created DRY, but it was corrupted and gave birth to DIY and NIH.
- n3d1m 9y agoThe site responsiveness is questionable. Maybe invest some time in making in nicer looking and more responsive?
- matte_black 9y agoBy the time most people realize the site is not responsive or nice looking, they have will consumed about 80% of the content they will ever consume on it. No point in making it more responsive. It’s a diminished return.
- kornish 9y agoYAGNI.
- pier25 9y ago> "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." This is brilliant.
- jorjordandan 9y agoIt is brilliant... but I think it's a false dichotomy. I'm sure code can be clever and easy to debug. If it's designed in a way that is impossible to debug is it really that clever? I've been using react and redux a lot lately, and the design patterns make the code much easier to debug, and I'm not experienced enough (and probably not even clever enough) to have written them myself. It's like saying that smart people always use big words and hard to parse sentences - it's more of a display of cleverness than actual cleverness.
- markbnj 9y agoThere's probably a specific name for this construction, but I don't know it. I'd place it in a category of statements that are not meant to be read as literally true in all cases, but use comedic exaggeration as a warning against a common misstep.
- digsmahler 9y agoIn my circle of peers, and perhaps beyond, we use "clever" as a pejorative. It roughly means what you said in the last sentence, "more of a display of cleverness than actual cleverness." In other words, calling a piece of code clever, indicates that it was made too complicated to easily grok. We also have an explicit goal of making code not clever.
- deleted 9y ago[deleted]
- nurettin 9y agoThis is why people write tests.
- smsm42 9y ago
- nikita2206 9y agoThe first one is basically the messaging system and a smart broker. I’m not aware of any brokers that would take into account how busy a particular node (they usually just use round robin approach) but surely the concept you outlined is far from being a definition of over-engineering, cron is almost always worse because it is hardly scalable (it is with some crutches and until some point when it becomes unscalabel again, and it introduces a consistent delay).
- elvinyung 9y agoIt's less of a message broker and more of a scheduler, although considering that both of them have some kind of queue at its core, the distinction is probably more superficial than it seems (a FIFO job queue is basically a kind of scheduler). Spark has a scheduler that takes data locality into account (although I don't have a ton of experience with it and have no idea how well it works on a fine-grain scale). That itself is probably inspired from Borg and MapReduce, both of which have some kind of data locality-based job scheduling logic.
- pram 9y agoMost of these sound awful to begin with, except the first maybe. Not to insult this guy, but people who force ego projects like these in a company quickly end up looking like a charlatan.
- beemboy 9y agoGotta give him credit for owning up.