3 ms·
Can you give some examples of things you'd consider fads versus classical in software?
by sunrunner 2y ago
Can you give some examples of things you'd consider fads versus classical in software?
- TylerE 2y agoTDD. Agile.
- throwaway2037 2y agoI would disagree about TDD. I am continuously surprised when I learn that yet another one of my teammates practices TDD. TL;DR: TDD is dead; long live TDD. I think that TDD will remain viable in enterprise programmer for decades, perhaps permanently, thanks to "vibe-coding", where LLMs eventually produce most code for CRUD projects (the vast majority of enterprise programming).
- TylerE 2y agoJust to be clear, do you mean full-dogma Rails tutorial write a bunch of trivial tests before writing code TDD?
- throwaway2037 2y agoYes, exactly this. I never bought into TDD, but I can understand that it brings comfort for many normie enterprise CRUD developers... of which I am one myself!
- TylerE 2y agoI despise it because I've seen some absolutely HORRIBLE designs that excessively separate concerns (that are actually linked and shouldn't be) in the name of "testability". I would rather maintain 50 lines of clear idiomatic code than 1000 lines of TDD code salad full of 3 line functions that each take a bunch of fragile mocks. It's also my experience that a few well written integration tests are more useful and catch more actual bugs than a million unit tests. This is especially true of web apps which are inherently highly stateful. The most powerful design paradigm I have ever found is to spend the first, say, 10-20% of my time making a rough prototype. Not with an eye of actually using a single line of it (although it happens) but just to do the quickest and dirtiest possible exploration of what the actual problem is.
- cylemons 2y ago> excessively separate concerns (that are actually linked and shouldn't be) you mean concerns that should be seperated but they did it in a wrong way?
- lovich 2y agoWhen you say TDD do you meant test driven design or the test first design actually practice when “doing TDD”
- djtango 2y agoNot very long at all ago, people waged war over dynamic vs lexical function scoping. These days you are hard pressed to find a language that uses dynamic scoping as the default. The needle likes to swing back and forth between dynamic be static typing but we definitely seem to be coming back to static typing again
- Exoristos 2y agoThe answers so far are pretty damn telling.
- tdeck 2y agoIt was somewhat common in the 1970s and before for programming languages to support abbreviating variable names when you referenced them. So for example, you could say patients = 400 x = pat / 2 And x would be 200. This seems like an obvious footgun today and I don't think any language designer would even consider it, but it seemed to make sense for a while.
- TylerE 2y agoWere they actually supporting abbreviating or just doing something like only storing the first 3 characters of the name? That feels more like something a compiler trying to fit in 8k of RAM or whatever would do.
- lovich 2y agoIs there a difference between doing something and supporting something? This joke is like a decade old at this point https://xkcd.com/1172/ https://xkcd.com/1172/
- TylerE 2y agoWell, yes. Namely, what does the following code do? patients = 400 patents = 20 x = patients / 10 If the compiler truncates, x will be 2 (assuming it allows variable reassignment), and you've probably introduced at least two bugs. It's doing some sort of lookup against the source, well, all bets are really off.
- lovich 2y agoYou have ignored my question “Doing something” is the beginning of how to describe the actual truth of what some actions causes in relation to its affect on reality. “Supporting something” has literally nothing to do with reality beyond what’s necessary to support a brain that can _intend_ a result or action regardless of what actually happens. I linked the xkcd comic because the behavior described by the developer in the comic met the criteria for “doing something” but it didn’t meet the criteria for “supporting something” because the behavior of the software was not what the developer intended.