Not all software development is like this. In some sectors it's treated as a proper engineering discipline. Circles where javascript, node and logging into Twitter are a thing are where you find this casual indifference to documentation, garbage interfaces, dozens of competing APIs and so forth. The reason is straightforward: in these areas the problems are neither interesting nor that hard, and so developers get bored and invent complexity where it need not exist.