Ten years against division of labor in software
The fact that a library discourages you from learning it&#x27;s internals is how you know it&#x27;s well done.  If you needed to understand it, you could.  The reason you don&#x27;t is because you&#x27;ve never had a compelling reason to.<p>If only one person knows how a library works, that is a problem. If a 100 person team maintains it and you&#x27;re not on that team.... it&#x27;s probably because you have other stuff to do.<p>Software is an engineering discipline. Computer science is a science.  If you are in programming because you want to advance our understanding, great, go work in one of the many fields with large novel algorithms that need to be understood.<p>For a typical programmer...  Look around.  Modern software is one of the best things about the modern world.  It does SO much for us.  Do you really think we, with a real world distribution of programmer abilities, could do all this without massive division of labor? How much would be missing if we insisted on understanding everything before we use it?<p>I suspect very few alternative approaches to software would work as well to truly build the modern software defined world where everything from cars to taxes to photography is digital.<p>Because... whenever someone tries an alternative approach, there usually seems to be the hidden unspoken assumptions that they actually don&#x27;t want software to be as big as it is.<p>The end product of software itself these days is a service(in the sense of this article, not the SASS sense), wheras software built with an understanding-first mindset seems to usually wind up being closer to a digital version of a passive analog tool.