Live data from Hacker News

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

mogosselin.com

81–90 of 94 posts

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

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

I've done a lot of web work on top of frameworks and have done work on the Linux kernel including a lot of time figuring out the nitty gritty of how the socket calls are implemented. I have a pretty good grip on everything in between because I enjoy knowing as much of the full picture as I can.

I am weak on the hardware level. I know more than most programmers I've worked with, but embarrassingly little when talking with actual hardware people. I've done a little work to rectify this, but have miles more to go and I'm not sure if I'll bother.

I don't consider myself extraordinary in this regard, so people who know the stack at some level of depth is not all that surprising. I take it as a given that there are many people who know what I know plus hardware. Completionists aren't unicorns (at least not for any sane definition of it. No one knows a modern operating system 100%, for instance).

That said, knowing what the kernel does with sockets is not very helpful for writing a web page. In my experience the vast majority of benefit one gets from being 'full-stack' is knowing one level deeper than whatever they are working on.

If you are writing a performant web server it absolutely helps to know what the kernel does and if you are writing a web language framework you probably ought to understand how the web servers you rely upon generally work (for instance, threading models, etc). You usually don't need to know two levels deep very well and almost never three levels deep. Usually the intervening abstractions are complete enough that those details eventually get papered over into something else.

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

#82

Earlier quoted context omitted.

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

> For example how many doctors know how a CAT scan works? I don't know. Do you? Or are you just assuming that most of them don't?

My brother just went to study medicine; they didn't get to CAT scans yet, but from what I saw he's learning about ECG, he is expected to understand the physics and math behind it on a basic level.

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

#83

Earlier quoted context omitted.

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

Wasn't there an argument that Bernoulli principle is a wrong model to talk about how aircraft flies, and that the Newtonian dynamics is a better one? What's the state of the art?

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

#84
post #45

Earlier quoted context omitted.

> refuse to drive your car If I were engineering a car or a service tightly integrated with one, I would be pretty interested in knowing how cars works. > If you are your boss whose money is being wasted because someone refuses to use a time saving abstraction That's a bit out of context, don't you think? The article was making a claim regarding how beginners should learn web development - not how businesses should b…

>If I were engineering a car or a service tightly integrated with one, I would be pretty interested in knowing how cars works. But if you aren't, you don't. If you're building a web application, you're the delivery driver, not the mechanic. You just need to know how to use the car.

> If you're building a web application, you're the delivery driver, not the mechanic.

That's a flawed analogy. Delivery drivers aren't responsible for configuring or providing maintenance on the packages they deliver.

However, this is drifting pretty far out of scope of the original discussion, which concerned learning strategies for aspiring developers.

While I think it's a good idea to have an understanding of the systems we build on top of, that's just my opinion. We'll have to agree to disagree.

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

#85

Earlier quoted context omitted.

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

Wasn't there an argument that Bernoulli principle is a wrong model to talk about how aircraft flies, and that the Newtonian dynamics is a better one? What's the state of the art?

As taught about 12 years ago, the Bernoulli model was accurate; it just requires you to identify that the other half of the traditional diagram (a narrowed venturi) is the atmosphere above the wing.

After reading about the application of the Newtonian dynamics on life via wikipedia, honestly, the best description is probably a mix of both; Newtonian dynamics explain the action on the bottom of the wing, while the Bernoulli principal (directly related to the Euler derivation of Newton's second law) explains the acceleration of the airflow over the top of the wing and the negative pressure generated there.

Its worth noting that the negative pressure generated by the Bernoulli effect is greater than the positive deflection pressure, else planes would have a hard time stalling since the greater the angle of attack. Stalling is caused by the separation of the airflow over the top of the wing from the wing itself, resulting in a loss of lift, at extreme angles of attack (which would thus present greater angle and surface area for deflection).

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

#86
post #68
post #51

Earlier quoted context omitted.

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…

> yes you should have some basic understanding of how syscalls works, what a kernel is and what it's job is etc.

If we're talking about experienced developers then sure, at some point people should learn that stuff. But as a beginner it's impossible to understand everything at once; start at the highest level, the level you're actually going to be working at most of the time. There'll be time to peek behind the curtain and learn the details of what's going on at lower levels later - and good programmers absolutely should do this. But I don't think people should start off without frameworks any more than they should start off in assembly.

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

If that's what counts then my first job title was Java Developer :P

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

#87
So the other issue with not using a framework is security.

Modern frameworks have a level of built-in mitigation for the common stuff like XSS, SQLi and CSRF and so on.

The problem is that most developers don't even understand all the things their framework is doing for them.

Non-trivial PHP code written without the aid of a framework is a great morale booster for penetration testers.

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

#88
post #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. Be…

How do you know if it is a time saving abstraction or a time wasting abstraction without knowing how it works?

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

#89

Earlier quoted context omitted.

> For example how many doctors know how a CAT scan works? I don't know. Do you? Or are you just assuming that most of them don't?

My brother just went to study medicine; they didn't get to CAT scans yet, but from what I saw he's learning about ECG, he is expected to understand the physics and math behind it on a basic level.

Doctors definitely understand how CAT scans work conceptually, to the extent needed to interpret the results, including whether or not the results are valid. They don't know, and aren't expected to know, how to build one, or open one up and fix it.

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

#90
post #18

We should be careful not to confuse "frameworks" with "libraries". Two very different things. The former, yeah I agree that newbies should steer clear of until they understand what's really going on, and have the knowledge to dig deep and take advantage of the power those frameworks give you, rather than using them as a folder setup and "automagic". I'm currently working on a series of articles (maybe a small ebook,…

Not quite. Frameworks and libraries are two different points along a continuous line (not even endpoints). Not black and white, just different shades of gray. I haven't looked at Zend in a long time, but the difference between Zend 1.x and a pile of libraries was marginal, yet Zend was labelled an "enterprise grade" framework. (Not dissing Zend, this was a deliberate design approach.)

Symfony, Laravel, they all are done the same way. But in practice, people create libraries specific to these frameworks, and that's where the issue lies. Less code reuse, more reinventing the wheel, more security issues as there are fewer canonical implementations and more scattered libs that may be ported to your framework of choice, but probably won't be...

We can fix this, though. The best part is, the skills learnt and code written while doing so are completely transferable and directly usable by the big frameworks too! So, it's a win-win :)

For what it's worth though, yeah I totally agree with you. It's not an either-or situation.

Post reply on HN