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