Live data from Hacker News

Why I Hate Frameworks (2005)

factoryfactoryfactory.net

81–90 of 407 posts

Re: Why I Hate Frameworks (2005)

#81
post #48

I don't get it. I assume the author is trying to make it sound absurd that you would need all these layers of factories to build a simple spice rack and, by analogy, that frameworks are also absurd. But if you were building spice racks at scale, of course you would build them in a factory! And you'd use machinery made in other factories. And those factories would have tools and machines made in yet other factories. T…

Like factories, frameworks are methods of reducing production costs, but come at the expense of certain aspects of product quality.

Sometimes, that quality/cost tradeoff is desirable, sometimes it's not. The trouble comes if using a factory or framework is the only, or even main, tool in your toolbox, and it ends up getting used for everything.

Re: Why I Hate Frameworks (2005)

#82
post #46
post #14

Earlier quoted context omitted.

> In my experience, it's always the junior who shouts "This could all be so much simpler!". Or the actual senior engineer, as opposed to the mid-level engineer with a senior title. It's the ones in the middle that really love adding in the complexity - you have to relearn how to prune it back out.

Yes. My “worst” code was when I was mid-level. Too clever, showing off what I learned. Music was my first career, and there was something that really stuck with me while studying music theory- learn as much as you can, and then don’t think about any of it when you go to compose.

> My “worst” code was when I was mid-level. Too clever, showing off what I learned.

This was my experience as well, for pretty much the same reason. At some point, I gained enough experience that I no longer cared about impressing anyone or showing off, and my code became substantially better.

Re: Why I Hate Frameworks (2005)

#83
For some reason it called to mind the basic technique of stepwise refinement.

https://dl.acm.org/doi/10.1145/362575.362577 (HTML, links to PDF)

A good framework would be one in which you start your solution and find that at many locations, your pseudocode gets replaced by an equivalent call into the framework. There are, however, some other requirements that are not obvious from this specification of good framework that make it a great framework. Discoverability, testability, debuggability, deployability, documentation, readability and, of course, performance.

But, yeah, you start out with one and you lose interest in the project because of the difficulty of getting started.

Re: Why I Hate Frameworks (2005)

#84
post #81
post #48

I don't get it. I assume the author is trying to make it sound absurd that you would need all these layers of factories to build a simple spice rack and, by analogy, that frameworks are also absurd. But if you were building spice racks at scale, of course you would build them in a factory! And you'd use machinery made in other factories. And those factories would have tools and machines made in yet other factories. T…

Like factories, frameworks are methods of reducing production costs, but come at the expense of certain aspects of product quality. Sometimes, that quality/cost tradeoff is desirable, sometimes it's not. The trouble comes if using a factory or framework is the only, or even main, tool in your toolbox, and it ends up getting used for everything.

> the main tool in your toolbox, and it ends up getting used for everything.

I you get the work done efficiently this may be a good strategy. It may be a worse strategy, to spend a lot of time to find the "perfect" framework and a lot of time to master it, just because it's a better fit for the problem. "Good enough" very often does the trick.

Re: Why I Hate Frameworks (2005)

#85

Earlier quoted context omitted.

In my experience, it's always the junior who shouts "This could all be so much simpler!". Vis-a-vis the conversation that has ensued from this statement, I'll offer the suggestion that the real seniors are the ones who don't make blanket statements one way or the other, and appreciate the distinction between incidental complexity and intrinsic complexity. Some times, the problem itself is simply complex and requires…

In my experience, juniors almost never shout that. They are still living within the managed "website in 0 lines of code!" world the framework purports to provide. And mids just think that's what the job is and nothing to do about it. It's not 1985 any more and 1985s tools aren't enough to write a cloud db backed ios app. It's the seniors, and the good ones at all levels even if they aren't good at it yet, who object…

> It's the seniors, and the good ones at all levels even if they aren't good at it yet, who object to complexity on a pure lack of elegance basis.

I actually think the opposite of that. Experienced programmers, from my observations, have learned that complexity is an inevitability that requires management (all nontrivial programming is really an exercise in complexity management, after all). They resist adding complexity unnecessarily, but also recognize where it can't be avoided and opt for managing it instead.

In the real world, "elegance" is an unattainable ideal that is to be admired and desired, but experienced devs recognize that pushing too hard for it will result in the exact opposite of it.

Re: Why I Hate Frameworks (2005)

#86
post #14
post #5

Simplicity is easy to mandate: "just use simple tools!". It's not always obvious when the finished product looks wonky and slanted and has to be retrofitted several times that the complexity was always there, in the world. The complexity in our tools is hopefully there to help with some complexity in the world. In my experience, it's always the junior who shouts "This could all be so much simpler!".

> In my experience, it's always the junior who shouts "This could all be so much simpler!". Or the actual senior engineer, as opposed to the mid-level engineer with a senior title. It's the ones in the middle that really love adding in the complexity - you have to relearn how to prune it back out.

Steve Jobs beat us to it: There's simplicity before you understand complexity, and there's the simplicity after you understand complexity.

Re: Why I Hate Frameworks (2005)

#87
post #22

Related: Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=28920095 - Oct 2021 (296 comments) Why I hate frameworks (2005) - https://news.ycombinator.com/item?id=12635142 - Oct 2016 (66 comments) Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=9203959 - March 2015 (63 comments) Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=6542817 - Oct 2013 (37 comments) Wh…

If only there was a framework to locate Why I hate framework posts...

Re: Why I Hate Frameworks (2005)

#88
post #22

Related: Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=28920095 - Oct 2021 (296 comments) Why I hate frameworks (2005) - https://news.ycombinator.com/item?id=12635142 - Oct 2016 (66 comments) Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=9203959 - March 2015 (63 comments) Why I Hate Frameworks (2005) - https://news.ycombinator.com/item?id=6542817 - Oct 2013 (37 comments) Wh…

There must be some metric of the resonance of a particular piece by looking at the number of reposts and distribution of comments amongst them (plus an analysis of the sentiment of the comments and characteristics of the thread trees in each separate posting).

Just looking at this listing, without looking at the comments in each one, this seems to have a sustained resonance.

Maybe I’m biased–it certainly resonates with me!

Re: Why I Hate Frameworks (2005)

#89
post #77

Earlier quoted context omitted.

Extremely common, and was one I fell into as a junior dev myself (early 2010's). Some reasons (based on my experience): - University classes were either very low level, or using some new framework to increase your employment prospects - All the experienced devs would hop jobs every few years, leaving less opportunity for mentorship. - Lack of convenient resources for gaining base knowledge. Googling "how to make a to…

> a good engineer has know where to go for the right information That colleges aren't teaching this as a first-rate topic is a real failure. This is, in my opinion, the most important skill any engineer should have.

I would add that intuition and knowing how to question it is also vastly important.

My main driver is Ruby - I have a good feeling about code that can be refactored to use Enumerable more effectively; but I also know that Enumerable offers so much that I might be expecting too much of it. So 80% of the time I point to a method that solves the exact problem and the rest of the time I know how to write it differently.

"Why do you know about filter_map?"

"Because people were confused about reduce and each_with_object and map and maybe you just want to loop through non-nil objects in one pass"

Re: Why I Hate Frameworks (2005)

#90

Frameworks are bad because they don't compose. What does compose? Simple types and pure functions. If you want to create a community with high levels of code reuse, start there.

I was listening to a talk (strange loop conf, can’t search the talk itself) where the speaker claims C and languages derived from it feel clunky because they were invented, while Lisp, Haskell were discovered. The latter group is more cohesive and relies on simpler truths instead of the amalgam of idioms you can find in Java.

I concur with this because programming with Clojure feels wonderful. Your code is a straight line from input to solution. With imperative languages, you see yourself applying the duct tape.

Post reply on HN