Live data from Hacker News

Why I Hate Frameworks (2005)

factoryfactoryfactory.net

251–260 of 407 posts

Re: Why I Hate Frameworks (2005)

#251
post #246
post #233

Earlier quoted context omitted.

You could argue that it's specifically true for projects, but the definition of average absolutely doesn't require that. If for example you had 100 projects were 50 of them were built by expert teams who poured love into their work, and 50 were made by 12 year olds who spent one day on their projects before giving up, the "average" quality of the 100 would be a long way from either the great or the shit products. Lik…

I have a fairly high confidence it’s normally distributed. Of course me having confidence doesn’t really mean anything, but I’ll work off that assumption anyway.

I think you're probably right, was just pointing out that the definition doesn't mean that has to be the case :)

Re: Why I Hate Frameworks (2005)

#252
post #94

Earlier quoted context omitted.

Everyone needs to learn to do calculus by hand before advancing to the calculator. People picking up frameworks without fundamental understanding is a shockingly common fallacy.

That's the reason why CS classes and degrees exist. Or at least it should be. No company will pay you for several years just to learn complexity theory, write sorting algorithms, study schedulers, rewrite UNIX tools, understand hardware architectures, etc... They want you to be productive right away, and the shortest path is just to follow recipes with the latest framework. That's the point of education, universities…

I agree but it's not that you won't need these things but that you don't know when or if you'll need them.

For a professional MBA that's taken over a department, it's not so much that they won't pay you to learn what's not definitely part of the job but that they can get away without doing so. It appear superficially to be the low risk option.

It's the same reason that manufacturing gets outsourced instead of invested in as a core competency that sets you apart from the competition.

To a lot of people anything that makes the numbers go in the right direction is what's important. They'll even pretend that the sole fiduciary duty is to raise short-term profits at the expense of long term value.

When so many of the world's largest corps are now hollowed out marketing operations reselling generic products, it's hard to argue against using the latest trending framework.

Re: Why I Hate Frameworks (2005)

#253
I disagree with the problem statement; that the framework is trying to solve a meta-problem.

The problem with frameworks is instead that they assume that they're in control. They're the program, you're just writing a plugin.

This makes it unnecessarily hard to use them in all but the most straight-forward use cases. And they're usually also trying to do too much; config for starting, special way of testing, incompatible with other frameworks and libs etc.

Contrary to that, a library does one thing and one thing well. Like a Unix tool. Much easier to use, better coverage, and usually easy to combine. And you can plug them in anywhere.

Frameworks are overreaching, but not in the way that the article paints it.

Re: Why I Hate Frameworks (2005)

#254

Earlier quoted context omitted.

The carpenter doesn't need a degree. The architect and structural engineer do. If you plan to be a programmer all your life, and a journey-man one at that, then feel free to learn-programming-in-21-days. If you're planning a career in software, then I think understanding fundamentals (database normalisation, the Order of a solution, the ideas of Coupling and Uncoupling, memory usage versus performance, the impact of…

You have such an idyllic view of the college environment. My experience was struggling to motivate my teammates to do anything beyond the minimum, and an endless barrage of "will this be on the exam?" questions during class. Looking back it's no wonder I am a self-learner now.

Not all colleges are the same. I had a fantastic time at my college.

For example, in our algorithms course, we needed to implement a lot of small algorithms for various things in Java. (Eg A-star, quicksort, etc). For each algorithm, we were provided a standard API to implement against so they could use automated marking. Well, me and some friends made our own benchmarking harness and web frontend around that api. Before the assignment was due, we would all upload our .class files (and upload test cases), and compete to see who wrote the fastest code.

I think I learned at least as much from doing that as I did from the algorithms course itself.

We didn’t have that much fun in all of our classes. But I cherish a lot of memories from that time in my life. I’m really glad I went to college and wouldn’t trade it for anything.

Re: Why I Hate Frameworks (2005)

#255
post #94

Earlier quoted context omitted.

That's the reason why CS classes and degrees exist. Or at least it should be. No company will pay you for several years just to learn complexity theory, write sorting algorithms, study schedulers, rewrite UNIX tools, understand hardware architectures, etc... They want you to be productive right away, and the shortest path is just to follow recipes with the latest framework. That's the point of education, universities…

This misses the mark. CS classes and degrees are akin to reading books about swinging hammers rather than just swinging the hammer.

This sort of fits with your analogy. When I did my Manufacturing Engineering degree all I was interested in was CNC, CAD/CAM and rapid prototyping tools that existed before modern 3D printing.

After a career completely unrelated to manufacturing I've come back to basic metalwork as a hobby. What interests me is working with non-computer driven tools like lathes and mills.

What really surprises me is how much can be achieved just with hand tools like saws, files and chisels. I have books on filing as a way to shape metal by hand.

This is worth knowing because sometimes it's sometimes the quickest way get something done. Especially, when the first part of an alternative process would be "order tool X from the internet".

So it goes with solving problems with software. It's sometimes quicker to implement something I learnt on my second degree in CS than to spend time searching to see if a well supported library covers exactly what's needed for a very specific, temporary use-case.

Re: Why I Hate Frameworks (2005)

#256

Earlier quoted context omitted.

The way I like to explain the difference between the two approaches — and therefore the two educational requirements — you are outlining here is the difference between being a software developer and a software architect. A software developer is focused on developing a certain feature or fixing a certain bug within the context of an architecture that's already determined, rarely making decisions about how to structure…

does what you’re making matter to people or not? It’s like that no matter what you’re doing. Y’all can sit around here and discuss, “what is a software architect” all you want.

> Y’all can sit around here and discuss, “what is a software architect” all you want.

I think you're on to something. We ought to hire an architect architect to architect the role of the architect. Maybe we can build an architect factory to abstract that away and have architects set up on demand...

Re: Why I Hate Frameworks (2005)

#257
post #224

Earlier quoted context omitted.

I see a lot of people online advising against taking CS degrees (in europe, where it's not economically impossible to study). They argue that bootcamps and quick courses are enough, or that chatgpt exists now so programming is a dead profession. I disagree, I think I've had a lot of use from having had education… but I might be biased. But I've had to explain things occasionally.

The problem is that bootcamps were incentivised to churn out graduates within 3 months to get ISAs. This contributed to a junior coder market where people are not ready. I only found a handful of resources out there which are really preparing everyone for a long journey. Long gone are the promises of a $500k job after 3 months of studying...

Churning out scripters and giving them script frameworks and building whole products and businesses on top of those products has got to be the worst approach to labor shortages ever in the history of work. Oh the single process isn't a good load bearing structure to rest your entire network workload on? Let's create asynchronous abstractions and pack everything in portable process isolation environments and oh now we need a whole distributed OS to orcherstrate these processes etc...

Re: Why I Hate Frameworks (2005)

#258

I disagree with the problem statement; that the framework is trying to solve a meta-problem. The problem with frameworks is instead that they assume that they're in control. They're the program, you're just writing a plugin. This makes it unnecessarily hard to use them in all but the most straight-forward use cases. And they're usually also trying to do too much; config for starting, special way of testing, incompati…

Yes this is possibly why the author renamed the post. There certainly has been a problem of over-abstraction in the industry, with some of the most guilty parties being the frameworks (e.g. the infamous AbstractSingletonProxyFactoryBean from the Spring framework).

Re: Why I Hate Frameworks (2005)

#260

Earlier quoted context omitted.

Which is precisely why a framework is necessary, but knowing how to write what you want without the framework is even more necessary. If you only know how to code within the constraints of the framework, you're gonna fail for anything non-trivial. If you try to ditch frameworks entirely, same deal.

There is an art to translating whatever idea you have into large building blocks rather that coding it from small primitives. Actually knowing how to code is important, but so is knowing how to take a problem and implement it without ever doing anything the framework authors didn't think of. You might need a nasty hack like exporting a bitmap to a ramdisk and then importing it again to read a pixel value, to avoid me…

> It's almost like the idea that language shapes how you think. Frameworks are kind of like subsets or dialects of programming languages. If you actually know the framework well, you can often do stuff that seems like it would need low level control, in an idiomatic way that doesn't fight the framework.

I think the analogy does not quite fit. A framework is certainly not a dialect. For me a dialect is a variant of the language in which you can accomplish almost the same.

A framework provides you with a couple of blocks for building something specific.

In terms of language, I'd say a framework is like technical jargon. Additional abstract terms that describe concepts useful in that domain. So domain experts don’t need to always explain everything from the beginning.

Post reply on HN