• PhilipTheBucketOPA
    link
    fedilink
    arrow-up
    5
    ·
    4 days ago

    So… I just today had this realization, that a lot of the software engineering that I grew up with is not something that a lot of people now know how to do.

    When I was growing up, you had to make your own data structures. This was during the time when almost the whole of this chart was C. You had to do linked lists, sometimes you had to do hash tables. If you knew B-trees and graph algorithms, you were a super-fancy person and probably could make the big bucks if you wanted to.

    I don’t think that is what we need to go back to. I like being able to do big things with code super-quickly (including with LLM help) and not have to worry about trivial details or craft my own hash tables for every project. But also, I worry a little bit that a lot of the scope of what software is able to accomplish, outside of special environments or projects, is starting to be limited to “what can I accomplish by pasting together some preexisting libraries in a pretty straightforward way”. And, because so much of what’s out there is assembled with that approach, we get these teetering mountains of dependencies underneath every single project. I have a strong feeling that there is some kind of mathematics which implies that the number of dependencies attached to the average project is growing exponentially year by year, up to the limit of what people have the patience to put up with in their build process, which keeps increasing as computers get faster.

    I’m not even trying to say it as good or bad, although there are worrying aspects to me. I’m just saying it didn’t occur to me (again, literally until earlier today when I had this random realization) how much “being a software engineer” has changed. This idea, that most of what someone does can be duplicated by the fairly stupid capabilities of the currently available LLMs, is a big confirmation for that.