tactics and strategies of a software engineer

Abstract

Software engineering is the application tof an empirical, scientific approach to finding efficient, economical solutions to practical problems in software.

Architecture, the laws:

  • everything in software architecture is a trade-off
  • why is more important than how
  • why > how > what
    • why: DDD

Tactical tornado: code fast and not understandable (at least one in a team).

Documentation:

  • knight capital saga: how to go out of business in 45 minutes because there’s no documentation
  • tactics: the reader is the user
    • code
    • changelog
      • changelogs are for humans, not machines
      • types of changes
      • the latest version comes first
    • readme
      • short description
      • goal
      • how to start
      • api overview
    • api
    • commit: step and track an activity
      • <type>[optional scope]: <description>
      • [optional body]
      • [optional footer(s)]
    • architectural perspective
      • c4-model: architecture’s map
        • c1: context
        • c2: container
        • c3: component
        • c4: code
        • c4-model builder
        • structurizr
      • tech-radar: technologies’s view
      • ADR: don’t repeat the error
        • log4brains
      • communication: a clear direction

Tests

  • test coverage
  • mutation testing (pitest.org)
  • unit test
    • assertj nice API

Cloud

  • 35% wasted in general
  • use managed service
  • health application: the twelve factor app
  • focus vs control