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

Table

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.
Last modified 2yr ago