Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> btw no framework does not mean you don't use any library

I hear that silly argument "no framework === rewrite everything from scratch" far too often.

There's a giant difference between libraries and frameworks! It's terminology: it's a framework if you build your app inside it. It's a library if you build it inside your app.

The later is fine. The former: I dislike it - even in JavaScript, Ruby, Rust or anything, I wrote a longer post on that[1], which got a lot of discussion on HN. Most of it too in the line of "lol, I use a framework because I don't want to write it all myself", completely missing the crucial first paragraph in which I carefully tried to explain the difference and explain that re-using code != using a framework.

[1] https://news.ycombinator.com/item?id=33185010



If you don't use a framework, the structure of your code will still grow to resemble one anyway. Something internal, nonstandard, more difficult to maintain, and probably less congruent with the problem space.


That's actually addressed in the article:

> You may feel that building your services without a framework will take ages. Especially if you are coming from other programming languages. I understand that. I had the same feeling a couple of years ago when I started writing in Go. It was an unjustified fear. Not using a framework doesn’t mean that you will need to build everything yourself. There are many proven libraries that provide the functionality you need.


> more difficult to maintain, probably less congruent with the problem space.

This is not true as blanket statement. It may. But with "a framework" you are bound by the architecture, upgrades, use-cases and so on that this framework covers. And limited by the ones it doesn't.

In practice, choosing a framework on day one of the project, means you cement yourself in architectural choices when you still lack all information about what architectures will be needed. You don't know your problem space.

All you know, for certain, is that his problem space will turn out different than what you thought it would be today. Flexibility to move along as this evolges is critical to "maintainability".

In practice, therefore, you'll quite likely end up with a framework that is severely harming your ability to write maintainable and congruent code over time.


That's highly dependent on use case and baseline skill set of a given team.

Often times you can get away with a subset of functionality which makes for a simple implementation.


But for those who do use a framework the problem space and failure modes are quite similar: some succeed at fitting in the unavoidable domain code into the blanks left by the framework, others build a "framework within the framework". And occasionally that might even be the right call, because the framework+blanks fits some of the requirements so well, while others exist that are served well by the "framework within the framework". Does not contradict "most framework within the framework are horrible mistakes" at all.


That’s because your premise is weak. You argue that Django is the wrong choice for lots of projects but the counter factual is that our job is to figure that out. We have to choose the lesser evil.

It’s not convincing to just call everyone stupid. Everything is a trade off. You have no idea what those could be in any particular situation so that’s why your whole argument falls apart

Then you focus on construction and coding and ignore everything else a framework offers, which has downstream effects on coding and construction. It’s not all about the code. The coding is actually the easy part

The only projects ppl pay us is for the ones that are so large and complicated that if you don’t use frameworks, you’re going to either die or go crazy


This reminds me of an debate I was having with another dev who said python was "pointless" and that there was a better, more elegant way to do things.

I asked him what is a better way to quickly/easily stand up microservices/apps for clients (90% of my job), if not Django (or Flask/FastAPI, etc).

His response was "django is great, but it could have been written better and in another language" ... well, sure, great... but that doesn't solve my problem, lol.

We use Django for tons of client projects and rarely ever hit the "limitations" wall. It is mostly CRUD apps, so that helps but I would argue the time saved using frameworks in our shop is much more than the time lost spent on working around limitations. I do think the author has good ideas tho, good principals... but if you know your craft well, you know what will/won't work in a framework and how to solve that.


Yeah, it’s a smart guy with a bad idea. Story of all of us in HN!

There’s always a better way to do things but we live in a fallen world. Some bullshit will always arise to make your life more complicated.

It’s like you said, when you hit whatever limitation, you’ll have to figure out a way around it.


Yep! I just thought it was mostly funny how a "better solution" is claimed and then after looking at the problem that solution only exists in theory, lol.


> It’s not convincing to just call everyone stupid. Everything is a trade off.

I wish it were less acceptable to play the "balanced" person in the middle.

If and when there is a balance point, someplace where the actual truth tends to be, imho, it's almost never in the middle.

There are reasons those frameworks (and Golang, too) tend to do things in an opinionated way.

I wish there were more strong opinions lightly/loosely/weakly/gently/another-word-ly held[1]. I think opinions too strongly held is a surer path to there than starting from a place of trying to "meet in the middle."

[1] DDG-ing the term showed a bunch of adverbs of holding! Here are a some:

    why it works: https://www.nwea.org/blog/2022/strong-opinions-loosely-held-demystifying-social-emotional-learning/

    someone also said something on medium: https://medium.com/@ameet/strong-opinions-weakly-held-a-framework-for-thinking-6530d417e364

    contrarians take a stand, too: https://commoncog.com/strong-opinions-weakly-held-is-bad/


Yeah, there’s a reason for everything. But apparently not to use a framework. Thats “always” a bad idea, apparently.

I’m not trying to meet anyone in the middle. I’m saying use a framework all the time, every time.


You miss a crucial nuance that I did make:

> there will be a lot of projects where Django is a very poor choice.

often and lot is crucial - it's opposed to all. Because it implies exactly what you then continue to state: that its our job to figure out if this project is one of those "lot [..] with a poor fit" or one of the ones where it actually, and will remain, a good fit.


Yeah, look, you waffled this one but I still liked it. I can tell that you know what you’re doing and that you have something to say. I may not agree with it but I didn’t dismiss it.

But when I say premise is weak, it’s a technical term. Doesn’t mean it’s wrong.

I mean, in this case I do think that, but that’s why you’re getting so much pushback. Even if the premise was right, you’d still be getting pushback.

On the next post, remember to spend extra time there. It always comes back to haunt you.

Remember that the reader is smart but in a rush. The less words the better. Keep it country simple.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: