Working Approach

aka Team Dynamics meets System Design meets Software Engineering

Team Dynamics & Communication

  • The most decisive factor of building a system are the relations of the people building it.
  • Make explicit how we relate to each other.
  • Build trust to share your areas where you are most vulnerable (and the most important problems lie).
  • Realise that most people are busy with solving visible but unimportant problems.

Requirements Engineering

Engineer requirements visually and type driven to

  • map the domain and
  • ensure conclusiveness from the start.

wait, as we discover and reshape how the entities of the system relate, we discover and reshape how we relate to each other, since we interact with the entities… oh wait, the entities are just a means of how we interact…

System Design

Design solutions to be flow-centered (Theory of Constraints).

Software Engineering

Identify the critical path, shrink the problem, isolate, solve and reintegrate its components into a solution.

Function Architecture:

  • Understand a function to determine a different result when subject and/or context (system state) change.
  • Realise that as an event triggers a function call, the function call creates just another event.
  • Make the events explicit in your data structures (event-based architecture).

Implement Function: aka successful software solutions by not implementing the solution first ;-)

  • Define function head (cf. visual type-driven requirements engineering).
  • Describe what the function does.
  • Answer which distinguishables the function needs.
  • Model the distinguishables in data structures.
  • Write function body mapping distinguishables to actions.

Which tools & materials to use:

  • Implement with high expressiveness, high composability and build trust in your code (matching the trust within the team).
  • Make refactoring fun by using Haskell, Rust (or similar).
  • Repeat on front-end with Elm.
  • Boost front-end development productivity by abstracting separation of CSS & HTML away using elm-ui.

Run it:

  • Deploy using descriptive, reproducible builds.