Live data from Hacker News

We have used too many levels of abstractions

unixsheikh.com

471–480 of 564 posts

Re: We have used too many levels of abstractions

#471

One cause I've seen of this is the "college is not needed to be a coder" trend from the past few years (decade?). it is true that most of my skills were acquired after college, but there is some sort of global system understanding that you get from college (in my case computer+software+network engineering) where you can quickly narrow down potential sources of a problem, all the way down to say, the TCP/IP stack, CPU…

While I also attended college, I sometimes wonder if a college degree is really needed to learn these general stuffs. I learn a lot while doing projects completely unrelated to schoolwork, before registering for the course. I still have to register for the course because of graduation requirements, but I just skipped all the lectures and only took the exams. There are nice materials and textbooks available, and I thi…

I think it's dangerous to think in this way: I succeeded without college, so everyone can, so college should be abolished.

Not everyone has the discipline to self learn through a course. Not every one knows how to properly and effectively absorb and retain knowledge, and not everyone knows how to make that knowledge useful. What college does is provide structure and a favorable environment for learning where you're among peers, sharing the same experience and learning together "how to learn".

Some people are able to get fit by themselves, others need structure and guidance, so you have a whole industry of gyms and personal trainers and programs that require attendance.

My point is that this attitude towards college (or other forms of structured/formal learning) might be what is creating large numbers of full stack developers, devops who only know terraform, etc, who couldn't debug the first networking issue even if the error message was right in the browser. Moreover, the official point of college is that it provides some level of confidence to your peers, employers and customers that at the very least you know the fundamentas of your profession, because without them it is not enough that you're a react wizard, or a microsservices expert.

I think if there were a baseline of required knowledge, most products we build would perform better, consume less resources and fail less.

Re: We have used too many levels of abstractions

#472
see also: most Kubernetes tooling.

Kubernetes is great, but working with a tool that installs an in-cluster REST API that calls another in-cluster REST API that renders objects to be consumed by another in-cluster REST API that will also render objects to be consumed by multiple in-cluster REST APIs that will, eventually, produce containers that are externally accessible through a glorified NGINX config (with L4 filtering done by iptables, if you're lucky) can get extremely tiring.

(To be clear, this is still better than scripts that would call scripts that would write values to files/databases all over the place that are mutated by other scripts since Kubernetes does a really good job of enforcing interfaces between boundaries)

Re: We have used too many levels of abstractions

#473

Kids today don't get enough credit. A friend's son was so excited to show off the Roblox game him and his friends were making a couple of weeks ago. Was there for (Canadian) thanksgiving so there was some family friends and tons of people from his family there. He had already picked out something he thought each of us would be interested about it, and I was the "show him the Lua!" guy! People assume that because thei…

I think game-making is an underrated point of entry into programming and software development in general. It worked for me!

Ken just wanted to play his space game. He ended up writing Unix to do so.

Re: We have used too many levels of abstractions

#474
post #457
post #412

Earlier quoted context omitted.

Tell that to the passengers of those 737 MAX flights where the pilots did not know how to disable the failing AoA correction... I wouldn't bet that most pilots know more about how the planes they fly work than software devs know about their computers. For one, most planes today rely heavily on computers. Do they teach electronics in "aviation"?

As I understand it, the 737 MAX issue was not because the pilots didn't know how their plane worked, but because they were lied to about a feature that was installed to try to reduce costs. Had they been told it was there, no the outcomes could well have been different.

That is correct. They weren't trained appropriately on how to handle the incorrect AoA scalars they were receiving but reacted as if they were correct. https://en.wikipedia.org/wiki/Lion_Air_Flight_610#investigat...

Re: We have used too many levels of abstractions

#475

Kids today don't get enough credit. A friend's son was so excited to show off the Roblox game him and his friends were making a couple of weeks ago. Was there for (Canadian) thanksgiving so there was some family friends and tons of people from his family there. He had already picked out something he thought each of us would be interested about it, and I was the "show him the Lua!" guy! People assume that because thei…

Roblox is a company town, but a bad example nevertheless because it's open enough to be programmable and do HTTP requests.

Re: We have used too many levels of abstractions

#476
Have we?

Power steering, for example, simplifies steering thanks to a small mountain of abstractions built up over the years. Doubly so if you have adjustable power steering (i.e. you can select "sport" steering vs "comfort" steering). https://en.wikipedia.org/wiki/Power_steering

Abstraction layering is annoying, but I think abstracting hard things infinitum ad nauseam is, overall, a good thing!

Re: We have used too many levels of abstractions

#477
post #8

I support the notion of this post. In the last 6 years I’ve mostly been busy removing layers of abstraction in order to uncover the set of tools which is a good balance for me. In example, replaced clojurescript with Javascript and then eventually Typescript. Replaced Clojure with Java. Replaced docker with VMs. Avoided ansible in favor of simple bash scripts. Avoid all kinds of firewalls in favor of understanding an…

This comment makes no sense to me. How is Clojure a layer of abstraction that had to be removed and replaced with Java? What do you think that Clojure was abstracting exactly? Same question for Typescript. In fact, Typescript is a layer on top of Javascript so I could say that you actually added one more here.

Even worse, he ultimately replaced clojurescript with typescript. Both are just JS transpilers.

Re: We have used too many levels of abstractions

#478

There was a point in the history of aviation where anyone who could fly a plane was also capable of constructing and designing one. I wonder if there were similar concerns at that time about a future where someone could be in a cockpit of a plane without truly understanding how the machine works from first principles? Today that type of concern would seem absurd, and we've gotten used to the idea that flying a plane…

The problem is that it takes a really long time until technology is so good and so reliable that you really don't need to understand it to be able to operate it. Take, for instance, the "Yes, let's all go back to coding in assembly!" line -- The thing is: For a really really long time after high-level languages had become mainstream, you really did still have to know assembly to be a programmer, even if you did most…

If you do something even slightly unusual you can quickly get into a situation where you spend more time debugging your toolchain than writing code.

I really hate the state of modern software. We have so many layers of utterly unknowable abstractions that it isn't even possible to understand what your code actually ends up doing.

And that's how we ended up with Electron, which I think is the pinnacle of shitty software driven by the unsustainable paradigm of libraries on abstractions on libraries.

Re: We have used too many levels of abstractions

#479

There was a point in the history of aviation where anyone who could fly a plane was also capable of constructing and designing one. I wonder if there were similar concerns at that time about a future where someone could be in a cockpit of a plane without truly understanding how the machine works from first principles? Today that type of concern would seem absurd, and we've gotten used to the idea that flying a plane…

I think there are a couple of things wrong with this comment and analogy.

Its not clear the author is demanding 'from first principle'. Second, not everybody in university needs the knowledge of flight or the ability to do it themselves - and there are alternatives to flight.

Finally, there is a upfront and physical limits to what can be done to the process of flying. Computing and the framework to think about them are endlessly malleable (and applicable).

If I take some of the BS being sold today and transplant them back into the aviation metaphor i can only describe it as a donkey ride being sold as flight. So many customer don't have the knowledge to tell the difference.

What resonates with me here (and why i don't like this comparison) is what i believe are the ingredients critical to progress. That is: Only when we've figured out how to make something simple can we build on those foundations and take huge leaps forward. There is a limit to how far or high we go when things get too complex. Similar to the idea of technical debt but at the scale of humanity.

Tragically we're very bad at recognizing those eureka moments in history when things became an order more simple because naturally we look a back and assume they're obvious.

Re: We have used too many levels of abstractions

#480
post #328

Earlier quoted context omitted.

You can see this with a "new" ANY dev, because there are only 4 years of college and far more years are required to learn the increasingly complex technology environment. I graduated with a Computer Engineering degree, did assembly, C, microprocessor design, computer vision, and know a good bit about lower level stuff, how memory works, how networking works, etc. All the stuff people in this thread seem to be lamenti…

> "* I didn't know anything at all about modern software development because there was absolutely no time to learn that stuff as well.*" Yeah, but modern software development is trivial to learn, particularly in comparison to a computer engineering degree. You see "developers" here on HN gloating all the time about how they didn't need any post-secondary education at all to get their jobs; these frameworks are litera…

> modern software development is trivial to learn

LMAO c'mon. This basically undercuts anything else you say here. Go teach your grandma react and see how trivial it actually is.

Post reply on HN