Hexagonal Architecture
What is hexagonal architecture? In short an simple, it is a way of coding your application without being dependent on any external libraries or frameworks. All application specific logic should be contained and not be tightly coupled. The shape of a hexagon has six sides, but the number of sides (interfaces/ports) is actually arbitrary.
By defining interfaces at the boundaries of your application, you will allow external libraries to implement functionality hidden within your actual application.
Maintainability
Maintainability is the absence (reduction) of technical debt. A maintainable application is one that increases technical debt at the slowest rate we can feasibly achieve.
It's a long-term concept. Applications in their early form are easy to work with - they haven't yet been formed and molded by the early decisions of the developers working on them. New features and libraries are added quickly an easily.
However, as time goes by, applications can get harder to work on. Adding new features might conflict with current functionality. Bugs might hint at systemic issues, which may require large changes in code to fix (and to help clarify overly complex code).
A good architecture early on in a project can help prevent such issues.