Live data from Hacker News

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

mogosselin.com

61–70 of 94 posts

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

#61

I look at this in 2 ways. One is "Learning how something really works and understanding the core" and the other is "Creating production ready applications with a tested abstract magical tool". Frameworks are great to create production ready apps in no time even for a novice. But on the other hand, they have too much magic at times. Take for example, this code in Python/Django: user = User.objects.create_user('name',…

> If you don't understand the core, you will never be able to become a great developer.

The presumption here is that everyone wants to be a great developer; this mostly isn't true, most developers simply want to complete a task and care only about how quickly they can do it.

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

#62
post #39

Earlier quoted context omitted.

>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. Be…

If I was flying in an aircraft I would expect the pilot to have at least some understanding of how/why it stays in the air!

Good luck with that. As a pilot school alumni, I can safely say that the Bernoulli principle, and more importantly how it applies to an open system like an aircraft wing, is pretty fuzzy for most of my former classmates (I know because I was tutoring them on flight physics).

Understanding the cause and effect between your interactions with the flight stick and throttle is one thing, understanding the physics behind it is another entirely.

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

#63
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…

Super duper high levels of abstraction are okay for beginners only because they don't know any better, and they are comfortable not knowing because they are beginners. It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat. Have you honestly finished auditing the linux kernel yet? w3schools punts nowadays and suggests using youtube for cross browser video support. High le…

> they are comfortable not knowing because they are beginners

I disliked web frameworks when I was a "beginner".

> It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat.

That's a bit nonsensical. Plenty of engineers feel strongly about having a solid understanding of the systems they work with.

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

#64

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.

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

We're building software here, not saving lives or building something physical. Software is virtual, it can be refactored and fixed numerous times until the desired performance and bugs are all worked out.

Doctors and anyone building something physical don't have this luxury. You can't tell a doctor to "refactored" a heart transplant so they have to get it right the first time.

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

#65
post #39

Earlier quoted context omitted.

>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. Be…

I understand the basic laws of physics, and I understand the premise of internal combustion. Sure, there are a lot of details that I'm missing, but I get the basic idea. Similarly, I may not be able to design a modern processor from scratch, and I don't have the time to build my own robust Web framework, but I know at least the basic idea of every layer. That's enough to make me comfortable using a framework. I don't…

Your knowledge of basic physics is a function of your education and merely coincidental that it could be of help in understanding internal combustion engines...unless you purposefully took physics classes for this reason.

Abstractions are a basic requirement for any sort of advancement, there is no inherent virtue in knowing what's under the hood unless you have a good reason to dig deeper.

When you get sick you take drugs that may actually kill you, you don't say I am not going to take this pill because I don't know how it works. Heck, I have no idea how the lowly Tylenol works and I take it all the time:)

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

#66
post #64

Earlier quoted context omitted.

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.

"We don't ask doctors, plumbers or auto mechanics to "just get the job done". We ask them to do it right." We're building software here, not saving lives or building something physical. Software is virtual, it can be refactored and fixed numerous times until the desired performance and bugs are all worked out. Doctors and anyone building something physical don't have this luxury. You can't tell a doctor to "refactore…

Tell that to the healthcare.gov people.

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

#67
post #63

Earlier quoted context omitted.

Super duper high levels of abstraction are okay for beginners only because they don't know any better, and they are comfortable not knowing because they are beginners. It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat. Have you honestly finished auditing the linux kernel yet? w3schools punts nowadays and suggests using youtube for cross browser video support. High le…

> they are comfortable not knowing because they are beginners I disliked web frameworks when I was a "beginner". > It's fun to think that completionists exist, fun like believing in the tooth fairy or the little rat. That's a bit nonsensical. Plenty of engineers feel strongly about having a solid understanding of the systems they work with.

> Plenty of engineers feel strongly about having a firm understanding of the systems they work with.

It's not a bad feeling, but feeling that way doesn't magically enable you hold all the nuances of the output of billions of lines of code in your head.

I've noticed that most engineers would rather rewrite than firmly understand.

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

#68
post #51
post #42

Earlier quoted context omitted.

I do. I worked on a few large scale java web apps and regularily had to find and fix performance issues. I'm not sure if it would have been possible for me to easily dig into GC internals or find bottlenecks in Spring itself, without some lowlevel understanding. So first of all you need some kind of lowlevel understanding to understand a GC. Hell I've talked to Java guys that couldn't explain the difference between s…

The reason I don't buy this kind of logic is there's always going to be a layer you don't understand. I've had programs I've written break because of JVM bugs, are you going to say no-one should be writing Java if they can't write their own JVM? I've hit bugs in OS-level libraries, are you going to say that no-one should be writing programs if they can't write their own OS? (I mean, ultimately hardware bugs do happen…

Well actually that kinda is what I'm saying. You don't need to be able to hack out a complete OS from the top of your head. But yes you should have some basic understanding of how syscalls works, what a kernel is and what it's job is etc. And with some docs implement your own. I actually think that's reasonable. No one expects you to hack out a kernel that has feature pairity with the Linux Kernel. And a basic VM isn't really that hard, it takes bytecode and executes the corresponding operations.

Again, I'm not talking about a full blown JVM with feature parity and all the JIT optimizations. But actually given docs and some time even implementing a JVM should be doable, sure it will be slow but interpreting bytecode is really not that hard.

You just can't do this if you don't have a basic understanding of C or other lower level languages.

Also your CV probably sais Software Engineer and not Hardware designer. So I'd say hadware bugs are out of scope.

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

#69
post #33

Earlier quoted context omitted.

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…

Yes! I started tinkering around with learning web development about a year and a half ago, and started working through the Django tutorial. I had a hard time seeing where everything fit, and then I saw a post on /r/Python about Flask, did the tutorial in half an hour, and never looked back.

>getting a little lower than Django helped me learn what was happening in routing/views/controllers/etc.

Definitely. Armin nailed the degree of abstraction necessary to make MVC pretty easy while giving you some indirect insight about what's really going on.

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

#70
post #2

There seems to be this puritanical view that beginners should always learn a low-level language because it's good for the soul or something. Which is bollocks. To take the Java example because I'm more familiar with it, if I want to develop a simple Web application with a single form in Java, yes I absolutely do want to install Spring, Spring MVC and Hibernate. If I'm doing this to learn Java with a view towards usin…

One of my first full PHP projects was a WordPress site. I was very inexperienced at the time, but I remember being frustrated at the concept of the Loop, sub-queries, template overrides, and the like. IMO beginners should work without frameworks so that they know what's part of the language and what's part of the framework, especially when the framework has its own idioms and opinions about proper development.

Just to a offer an alternate experience, many of my first programming projects were implemented in wordPress.

These projects allowed me the opportunity to work on smaller subsets of problems than implementing a full-on CMS would have exposed me to as well as exposing me to many, many patterns I never would have encountered if I had to invent my own.

It was much more instructive to me to have to fix a small bug or implement a small feature that it would have been if I had to implement everything from the bottom up. I was also frustrated by many things in WP, but I believe that I could have been just as frustrated at any number of things in any system: that's just part of learning.

That said, I have always really enjoyed programming, and so the bad patterns and poor design choices that I see in wordPress weren't a big limitation on my learning, and I have since worked on a lot of of different systems, many of which have added new idioms to how I express myself in code.

I can see how people I know and work with don't progress very far in their programming skills because they can rely on frameworks or other code that they don't understand. But I have learned a whole lot by copying other folks' idioms.

Post reply on HN