Live data from Hacker News

“Don’t Reinvent the Wheel, Use a Framework” They All Say

mogosselin.com

31–40 of 94 posts

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#31

Who cares which language, library, framework, tool etc. are you using? Just get the job done! There is no "ultimate" solution. Software developers tend to attach too much importance to tech stack - in most cases it just doesn't matter, as long as it works.

This reasoning only holds if all technologies are equally good and all lead to rapidly building stable, specification-correct and easily maintainable applications in all situations. Sadly this is not the case - poor development happens much more frequently than not and we should constantly be examining our tools to understand why and to improve our work.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#32

Who cares which language, library, framework, tool etc. are you using? Just get the job done! There is no "ultimate" solution. Software developers tend to attach too much importance to tech stack - in most cases it just doesn't matter, as long as it works.

This attitude leads to a world full of crap, where everything crashes all the time and is slow like hell, while still costing megadollars.

We don't ask doctors, plumbers or auto mechanics to "just get the job done". We ask them to do it right.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#33
post #7

Well, take what I say with a grain of salt since I cannot call myself a programmer, but you can’t mix it all. Take Flask, I mean, who the hell wants to do url routing? Flask does that for you. Take sqlalchemy, who the hell wants to create an orm? It’s nice to learn the basics, to understand python well and to understand web development foundamentals like “salted”/hashed passwords etc. But don’t tell me I should have…

Flask and SQLAlchemy were my first thought when reading this guy's take on "don't learn a framework". Very succinct, simple ways to take the drudgery out of building a backend. This guy's article reminds me of the guy who did that "Programming is Terrible" talk on Youtube, where he was describing an anecdote about the fellow who decided he'd build everything from scratch because he'd understand it better. That's kind…

Totally agreed.

I started out trying to learn and build using Django but it degenerated into exactly what the author claimed about automagic frameworks.

I switched to Flask/SqlAlchemy and was able to grasp MVC much quicker. It was more work to do some stuff, but getting a little lower than Django helped me learn what was happening in routing/views/controllers/etc. Using SqlAlchemy meant I could stick within my realm of knowledge with respect to Python without all the fancy stuff within Django.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#35
1. WordPress is an application with a plugin API. It is not a framework.

2. Writing a web application without a framework is a good learning experience. For anything but small-scale local learning experiences, the risks and costs of not working with a framework are significant. [It is probable that I, with my ego, would "do it wrong" and that a community of developers has arrived at a far superior solution.]

One of the best explanations for what advantages a framework offers over basically just writing your own framework I've found is in the Symfony2 Book: "Symfony2 versus Flat PHP". [1]

[1] http://symfony.com/doc/current/book/from_flat_php_to_symfony...

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#37

Who cares which language, library, framework, tool etc. are you using? Just get the job done! There is no "ultimate" solution. Software developers tend to attach too much importance to tech stack - in most cases it just doesn't matter, as long as it works.

This attitude leads to a world full of crap, where everything crashes all the time and is slow like hell, while still costing megadollars. We don't ask doctors, plumbers or auto mechanics to "just get the job done". We ask them to do it right.

Doctors and auto mechanics routinely use tools and abstractions that they don't fully understand. (Not sure about plumbers.)

For example how many doctors know how a CAT scan works? They trust that the machine is doing its job correctly, and focus their expertise on interpreting the results. And a lot of auto mechanic work today involves reading codes off the car's electronics and looking up the fix. Do you really think every auto mechanic understands the full hardware/software stack of all the cars they fix?

Abstraction is not a problem; it is a productivity multiplier. But only if it is done right.

The biggest problem with software abstractions these days is that their quality is so low that they can't be trusted. Imagine if CAT scan machines were built to the quality standards of Django or RoR. People wouldn't stand for it.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#38

If you write without a framework and you want to create robust programs, you're going to spend a lot of your time learning to deal with deficiencies of the web which you wouldn't have to worry about if you were learning native mobile or desktop development. Do we really want to force people into learning how to wrangle strings from an field into valid dates or how to manually CSRF proof their forms to do basic web-de…

Well I think that a beginner should try to do this by hand at first. Not necessarily in a production application, but to learn how it works.

The difference between Web development and desktop development is the HTTP protocol which is responsible for security issues and other behaviors (sessions, cookies) that you need to understand if you want to build solid applications.

Just the difference between client and server side validation is often not understood by beginners, which is a big problem.

If somebody rely on the framework to do all the job, he's going to have security issues in his applications and other weird behaviors (double submit when refreshing a page, etc.)

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#39
post #25

What I think is missing from most of these discussions is an acknowledgement that people, in general (including developers), learn differently . In this context : you're either comfortable not knowing, or you're not. What I mean by this : some of us are comfortable not knowing how X system works (temporarily, of course). Some of us can start building things with a web framework and gradually gain understanding from t…

>However, others (and I include myself in this camp), are completionists. Abstraction is an annoyance, and not knowing is like an itch that needs to be scratched.

I think this a common fallacy that many developers fall victim to. Our entire modern lives consist of using things we don't understand, by this logic you should also not fly in a modern aircraft because I am sure you don't fully understand how they work. Better yet, you should refuse to drive your car.

>Super duper high levels of abstraction is a real problem.

Not at all. If an abstraction saves you a ton of time, you should accept it by all means. If you are your boss whose money is being wasted because someone refuses to use a time saving abstraction, I am sure that person would not be your employee for long.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#40

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 le…

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.

Post reply on HN