Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

Engineering Code

Engineers make complex systems simple

  • Reduce complexity
  • Becareful about increasing/introducing complexity

Identify the funnel

Identify each step in the funnel

Within each step, identify the inputs, processes, and outputs

See if the process can be broken down

See if the process can be done in parallel

Build tools to measure the funnel

If you can't measure it. You can't improve it.

Build it into a chart.

See Pipelines

Funnel Data Structure


Source Destination Time
1 2 2015-11-05 12:33:41
1a 2
1b 2
2 3
2 4

Having such a table means you can generate a graph.

Search online: Representing a graph in a database

Steps can change, moved, and removed

Steps can be parallized

Tests, Monitoring, Alerts

Build these in.

Make it easy to do so.

Reduce Technical Debt

Cons of Technical Debt

  • Slows you down
  • Slows down the team
  • Harder to clean up the longer it exists
  • Frustrating
    • Burns out people

Introduced as:

  • Complexities
  • Inconsistencies
  • Non standardization
  • Gotchas
  • Surprises
  • Patches
  • Death by a thousand commits
  • Poor foresight
  • Poor encapsulation

The road to hell is paved with good intentions

Maintaining/Managing States is a PITA

Maintaining/managing states is a PITA. When there are more states to maintain, it increases the complexity of the project.

What slows down momentum

  • Processes
    • We should engineer the processes out. Automate them. That is what engineering does best.
  • Communication Overhead
    • We should engineer reducing communication overhead.
  • Non Reproducible Steps
    • We should engineer reproducible steps.
  • Synchronous Knowledge Sharing
    • We should engineer asynchronous knowledge sharing.