Software Craftsmanship

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:

  • Clean architecture
  • Clean code
  • Coding dojos and katas
  • Design patterns
  • Design principles (SOLID)
  • Domain-driven design
  • Object-orientied programming
  • Object-oriented design
  • Pair programming
  • Recognizing and eliminating code smells
  • Refactoring
  • Static code analysis and code quality metrics
  • Technical debts
  • Test-driven development

Tutorial Series on Hexagonal Architecture

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?

Tools

Every good programmer should master their tools, i.e. their IDE and developer tools, such as Git.