Comment by charcircuit
15 hours ago
>at least in the sense that your abstractions are novel and the shape of the abstraction set is different from the standard things that exist
People shouldn't be doing this in the first place. Existing abstractions are sufficient for building any software you want.
Software development is a bit like chess. 1. e4 is an abstraction available to all projects, 3. Nc3 is available to 20% of projects, while 15. Nxg5 is unique to your own project.
Or, abstractions in your project form a dependency tree, and the nodes near the root are universal, e.g. C, Postgres, json, while the leaf nodes are abstractions peculiar to just your own project.
> Existing abstractions are sufficient for building any software you want.
Software that doesn't need new abstractions is also already existing. Everything you would need already exists and can be bought much more cheaply than you could do it yourself. Accounting software exists, unreal engine exists and many games use it, why would you ever write something new?
>Software that doesn't need new abstractions is also already existing
This isn't true due to the exponential growth of how many ways you can compose existing abstractions. The chance that a specific permutation will have existing software is small.
I'm supposing that nobody who has a job is producing abstractions that are always novel, but there may be people who find abstractions that are novel for their particular field because it is something most people in that field are not familiar with, or that come up with novel abstractions (infrequently) that improve on existing ones.
The new abstraction is “this corporation owns this IP and has engineers who can fix and extend it at will”. You can’t git clone that.
But if there is something off the shelf that you can use for the task at hand? Great! The stakeholders want it to do these other 3000 things before next summer.