On the other hand, as Lazarus Long (no relation) said, specialization is for insects.
Which lead me to an interesting article about how to fix the software complexity problem. His claim is that every part of a system should be able to charge for its use. That is one way of solving the problem. The other is libraries, of course, which developers do exchange, sometimes for money, sometimes to encourage use of the system, and sometimes for free because it also doesn't cost us anything to share something after we've built it.