Many of us have learned programming autodidactically. But little have we learned about how to write code that is easy to read and change, even for other developers, and how to design complex software that is "soft" (i.e., changeable and maintainable with as little effort as possible) and remains so throughout its lifetime of possibly years to decades.
This is where Software Craftsmanship comes in. The goal of Software Craftsmanship is to increase the quality of software through education and ongoing training of developers. The range of topics includes:
What is hexagonal architecture (or "Ports & Adapters", as this architecture is officially called)? What are its advantages over other architecture patterns? How to implement software with hexagonal architecture?