Slide 1

Slide 1 text

Trade-offs all the way down Building Software in the Finance Industry Aitor García Rey - @_aitor - aitor.is

Slide 2

Slide 2 text

Sponsors

Slide 3

Slide 3 text

Software is NOT a platonic/ideal object.

Slide 4

Slide 4 text

We are constantly making trade-offs, consciously or unconsciously.

Slide 5

Slide 5 text

Trade-off: Restaurants/Bars ┌────────────────┬────────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ Hospitality │ │ │ workers' life ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ │ │ │ │ │ │ │ │ │ ╭───╮ │ │ │ │ X │ │ │ ╰───╯ │ └────────────────┴────────────────┘ Fitting my life style

Slide 6

Slide 6 text

Trade-off: Mars Rovers ┌────────────────┬────────────────┐ │ ╭───╮ │ │ │ A │ │ │ │ ╰───╯ │ │ │ │ │ │ Terrain │ │ │ Adaptability ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ │ │ │ │ │ │ │ │ │ ╭───╮ │ │ │ │ D │ │ │ ╰───╯ │ └────────────────┴────────────────┘ Speed

Slide 7

Slide 7 text

Trade-off: 1.5°C Paris Agreement Goal ┌────────────────┬────────────────┐ │ │ │ │ │ │ │ │ │ │ │ │ Resources │ │ │ Frugality ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ │ │ │ │ │ │ │ │ │ ╭───╮ │ │ │ │ X │ │ │ ╰───╯ │ └────────────────┴────────────────┘ Convenience

Slide 8

Slide 8 text

Trade-offs expose how most desired features live on a spectrum.

Slide 9

Slide 9 text

Spectrum: Reliability Your Average Massive Space Blog Custom Soft. E-comm Utilities Mission │ │ │ │ │ □────┴────────┬──────┴────────┬─────────────┴───┬───────┴───────┬─┴───□ │ │ │ │ Average Average Bank Nuclear E-comm SaaS Plant

Slide 10

Slide 10 text

Spectrum: Resource Availability Your Average Scale-up Multinational Blog Startup Startup Corps. States │ │ │ │ │ □────┴────────┬──────┴────────┬──────────┴──────┬───────┴───────┬─┴───□ │ │ │ │ Starting Established Series Bank Trad Company Trad Company C/D

Slide 11

Slide 11 text

Spectrum: Performance Your Average Trad Ultra Average API Video Blog biz interaction specialized team Games │ │ │ │ │ □────┴────────┬──────┴────────┬──────────┴──────┬───────┴───────┬─┴───□ │ │ │ │ Bank Average Average Industrial franchise webapp Software interaction

Slide 12

Slide 12 text

BUT consciously making a trade-off implies saying NO to something

Slide 13

Slide 13 text

AND often we end up cargo-culting others' trade-offs.

Slide 14

Slide 14 text

Countermeasure: be aware and constantly reevaluate your context.

Slide 15

Slide 15 text

Our context - Devengo 1.0 • Started as a Salary Advance solution to fight payday-loans. • First commit on Jul 21, 2019. • Rails API + Native apps (iOS & Android) + Custom integrations with HR/Payroll software. • Got smacked in the face by COVID-19 but experienced constant growth from 2021 onwards. • Spent 2 ½ years building the product...just to discover that it took us in the wrong direction.

Slide 16

Slide 16 text

Our context - Devengo 2.0 • We reflected on how we were doing all the heavy lifting of moving money • ...and deploying it (too early) in a very narrow niche. • Pivoted to Payments Provider on 2022 Q2. • Special focus on EU and Instant/Real-time A2A payments.

Slide 17

Slide 17 text

╭─────────────╮ ╭─────────────╮ │ Originator │ │ Beneficiary │ ╰──────□──────╯ ╰──────△──────╯ │ │ │ │ ╭ ─ ─ ─▽─ ─ ─ ╮ ╭ ─ ─ ─ ─ ─ ─ ─ ╭ ─ ─ ─ ─ ─ ─ ╮ ╭ ─ ─ ─□─ ─ ─ ╮ 1. SCT Inst 2. SCT Inst │ 3. Relay 5. Funds │ Instruction │ │ Transaction │ Transaction │ │ available │ ─ ─ ─ □ ─ ─ ─ ─ ─△─ ─ ─ □ ─ ╯ ─ ─△─ ─ ─ ─□─ ─ ─ ─ △ ─ ─ ─ │ │ │ │ └───┐ │ │ │ │ │ │ │ ╭──────▽──────────╮ │ ╭──▽──────────□───╮ ╭──▽───────□──────╮ │ │ │ │ │ │ │ │ Originator PSP □──┘ │ CSM │ │ Beneficiary PSP ◁─┐ │ │ │ │ │ │ │ ╰───────△─────────╯ ╰────□───□───△────╯ ╰─────────□───────╯ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╭ ─ ─ ─ ─ ─ ─ ─ ─▽─ ─ ─ ─ │ │ │ │ └──□ 4a. Communicates OK/KO │ │ │ │ │ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ ─ ─ ─ ─□─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │ │ 6. Relay Result ◁───────────┘ └──────▷ 4b. ACK Communication □─┘ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯

Slide 18

Slide 18 text

Our context - Devengo 2.0 • Still an early-stage startup, just 7 developers (including me) running everything. • But already moving a volume of hundreds of thousands of transfers per month for a value of dozens of million euros (even from old competitors). • We'll (finally!) get a PSP license by the Central Bank of Spain this summer.

Slide 19

Slide 19 text

Given that context, how do we choose the right trade-off?

Slide 20

Slide 20 text

Devengo Engineering Principles We make trade-offs by applying our principles to our current context. • Finesse • Managers Of One • Zen Pragmatism • Taking Care Of Business • Do The Right Thing • Trust, But Verify

Slide 21

Slide 21 text

Devengo Engineering Principles • We materialized them in supporting practices. • We paranoidly monitor associated red flags. • We provide self-evaluation topics.

Slide 22

Slide 22 text

Finesse Trading speed for refinement of execution.

Slide 23

Slide 23 text

Finesse / Supporting practices • Continuous refinement of the Developer Experience. • Failing gracefully on unexpected scenarios. • Continuous improvement of features. • Continuous learning. • Expansive testing.

Slide 24

Slide 24 text

Finesse / Red flags • Quality defects reaching production. • Small known bugs are present for too long. • Unexpected collaterals

Slide 25

Slide 25 text

Finesse / Self-evaluation • Does this piece of work represent my best shot at the problem? • Have I thought deeply about the consequences of this implementation? • How can I make this more robust without making it more complex?

Slide 26

Slide 26 text

Zen Pragmatism Trading idealistic approaches for hardened working solutions.

Slide 27

Slide 27 text

Zen Pragmatism / Supporting practices • Iterative implementation • Scope reduction • Consensus built on definition stages • Proof of Concepts • Minimum Valuable Product • ADRs (Architectural Decision Records)

Slide 28

Slide 28 text

Zen Pragmatism / Red flags • Projects agonizing for months • Under-used, overly complex implementations • Premature optimization (of the business problem not performance) • Bike Shedding & Yak-shaving

Slide 29

Slide 29 text

Zen Pragmatism / Self-evaluation • Is this the most cost-effective way to solve our problems? • Am I building the solution of the core part of the problem first? • Is the chosen approach reversible and flexible?

Slide 30

Slide 30 text

Do The Right Thing Trading short-term optimization for long-term relationships.

Slide 31

Slide 31 text

Do The Right Thing / Supporting practices • Thinking like a customer • Cross-org transparency • Frequent interactions with support

Slide 32

Slide 32 text

Do The Right Thing / Red flags • “Not my problem” mentality • Customers feeling unheard. • Slow reaction times.

Slide 33

Slide 33 text

Do The Right Thing / Self-evaluation • Are we doing this just because it is easy? • Are we doing this just because “everybody does it”? • Is this the best thing for our customers?

Slide 34

Slide 34 text

Managers Of One Trading (micro)control for trust.

Slide 35

Slide 35 text

Managers Of One / Supporting practices • Proof of Concept • Designs open to feedback • Developer-led initiatives • Praising dev success stories and heroes.

Slide 36

Slide 36 text

Managers Of One / Red flags • Decision bottlenecks • Impostor syndrome • Analysis paralysis

Slide 37

Slide 37 text

Managers Of One / Self-evaluation • Do I have all the information to act on this? • If not, do I know how to get it? • Do I feel confident to commit to this solution?

Slide 38

Slide 38 text

Taking Care Of Business Trading individual goals for group success.

Slide 39

Slide 39 text

Taking Care Of Business / Supporting practices • Shared, cross-org language • Direct, frequent communication with OPS and customers • Everybody rotates to on-call • Prioritize boring technology • Provide tooling to other orgs inside Devengo • Buy vs Build evaluations

Slide 40

Slide 40 text

Taking Care Of Business / Red flags • “Not invented here” syndrome • Recurring bugs • Feeling stuck in a specific approach

Slide 41

Slide 41 text

Taking Care Of Business / Self-evaluation • Is there a no-coding solution to this problem? • Do I understand the point of view of the other parties? • Can I serve the mission in other ways?

Slide 42

Slide 42 text

Trust, But Verify Trading simplicity for reliability.

Slide 43

Slide 43 text

Trust, But Verify / Supporting practices • Exhaustive monitoring • Automatic & manual checks • Feature flags • Soft-launching features/products • Expansive testing • Incident management

Slide 44

Slide 44 text

Trust, But Verify / Red flags • “No deploys on Friday” attitude. • Manual processes. • Siloed knowledge.

Slide 45

Slide 45 text

Trust, But Verify / Self-evaluation • Do I feel confident about this proposal? • Do I understand the ramifications of my work? • If this implementation fails, what is the worst-case scenario?

Slide 46

Slide 46 text

Since death alone is certain, and the time of death uncertain, what should I do?

Slide 47

Slide 47 text

𝕏 @_aitor / aitor.is 𝕏 @devengoapi / devengo.com Thank you! Share your feedback, love & insults! l.aitor.is/scpna