We’re striving to use clear language, but there are a few words where it’s helpful to expound upon how we interpret them.
Craft Responsibility Definitions
The responsibilities defined below make up the foundation of the Software Engineer craft:
- Code fluency: The ability to read and write code fluently and well.
- Software design: The ability to design software components with reasonable APIs and interaction patterns (writing good classes, modules, etc - building out a box in your architecture diagram)
- Architecture design: The ability to design systems of interacting components - e.g. a collection of interacting features or the architecture of a product, binary or significant service (what are the boxes in your architecture diagram, how do they interact)
- Technical strategy: Ensuring the right long-term technical decisions are being made by the organization - knowing what systems to build; making technical choices when there are not clear solutions. What standards apply to all the boxes in the organizations architecture diagrams?