Hacker News new | ask | show | jobs
by danpalmer 4523 days ago
I disagree with this article, almost entirely for the list of reasons given right at the end of it.

Good development practices and project structure, generally good code examples, fewer bugs and tested code and re-using code are all very important things in any development, and frameworks all help with that.

If you are starting some of your very first web development, I'd encourage you to play around with some low level Node.js HTTP stuff, or even write a web server in another language, to get a feel for how the request/response model, HTTP header/body sections, etc, all work.

But after that basic introduction, dive into a framework and learn it well. The projects I know that were developed 'without a framework' are more often than not poorly structured, poorly documented, and difficult for new developers to learn their way around, precisely for the reasons given at the end of the article.

If you evaluate frameworks for your use-case, and realise there isn't one that suits you well, then by all means, go and make your own, but don't just make your application - make a framework for your application, and then use the framework, it will result it much better structure and better software engineering practice.

2 comments

"The projects I know that were developed 'without a framework' are more often than not poorly structured, poorly documented, and difficult for new developers to learn their way around"

You are right! I didn't mean that I would like beginners to code 'Production Code' without any frameworks and do all their stuff themselves.

Especially if it's a big application, this would mostly result in 'unmaintainable spaghetti code'.

What I meant by beginners: "People learning to code", not "Beginners doing a production code without any help from more experienced programmers" ;)

Industry loves frameworks, because it speeds the commoditization of developers.

> The projects I know that were developed 'without a framework' are more often than not poorly structured...

So why not teach developers how to structure code properly? Teach them about coupling, cohesion, benefits of immutability and layering. Make them feel when modules should be broken up, and how they should do it. Expose them to different architecture patterns used in larger applications. This allows developers to make better decisions about code, both as they write and refactor it.

It seems that so much of modern day pop-programmer culture is what framework they should know, rather than how to build/choose the correct framework for their needs. Perhaps this is yet another triumph of shiny over time-tested wisdom.

People have been thinking for a long time about how to build large applications that aren't horrible to maintain. Don't ignore it because kids on the Internet are excited about ultracool.js.

I would like to think that I structure code reasonably well. I also appreciate that the Django guys have had years more experience than me in web programming and probabably know things better. They have probably encountered a few gotchas that I haven't yet.

And is it really nessecary to write all the update / insert queries for my dayabase?

It's not about what libraries you use or don't use. (I write Rails from time to time, one of the most framework-y things in existence.)

It's about an industry that insists on re-learning ancient lessons over and over again. It believes things like "we don't need design patterns, we have Ruby!" and "we don't need to choose architecture, we have Rails!" It constitutes a sort of intellectual deference to That Which Has Been Made And Agreed Upon to Be Good Enough. Meanwhile, the foundational knowledge becomes something that is ignored or looked down upon, because it's not shiny.

I want developers who are not afraid to rip up parts of the stack and make them better if they come up deficient. This requires deep knowledge and ignoring the rabble of people who insist that you "just use X." How do you think LLVM started?