Sí, debe codificar contra interfaces en lugar de implementaciones conocidas, y sí, debe construir interfaces primero en lugar de hacer que emerjan de su propio código.
Las razones de ambas recomendaciones son en gran medida las mismas: la programación de computadoras se trata principalmente de factores humanos. Muchos encuentran esto sorprendente, pero consideren: hay un número casi infinito de formas diferentes de resolver el mismo problema informático que funcionan igualmente bien. Casi todos son completamente imposibles de entender para cualquiera que no los haya escrito (o de hecho para el autor poco tiempo después).
De ello se deduce que una buena ingeniería de software se trata en gran medida de cómo lograr el efecto deseado (cálculo correcto con eficiencia razonable) de una manera que permita trabajar con el código fuente más adelante. Las interfaces y las API son una parte crucial de esa disciplina: le permiten pensar en un problema en un nivel de descripción a la vez. Esto es mucho más fácil que pensar en reglas de coherencia empresarial y en implementaciones de listas vinculadas al mismo tiempo, y por lo tanto, imponer tal separación de preocupaciones a la fuerza es mejor que permitir que el programador del cliente use su código de la manera que desee.
Esto es difícil de creer para muchos programadores de vaqueros, que están convencidos de que entienden todo lo que escriben, son mucho mejores que los pensadores promedio y pueden manejar toda la complejidad que les da problemas a los programadores "menores". No ser consciente de los propios límites cognitivos es un fenómeno extremadamente común; esta es la razón por la cual las mejores prácticas en la organización de códigos son tan importantes (y tan a menudo ignoradas).
Para repetir, las interfaces y las barreras API son en gran medida buenas , incluso cuando solo cooperas contigo mismo. En cuanto a las bibliotecas externas, si traen consigo una API bien pensada, no veo ningún problema en usarla, siempre y cuando no anticipe tener que cambiar esa biblioteca por otra. De lo contrario, una capa de envoltura o anticorrupción puede ser una muy buena idea.