El arte de desarrollar: ¿En qué pensamos cuando pensamos en software?

Adrià Fontcuberta Software Engineer at Stripe

What if everything in software development was about creating feedback loops?

Unit test: “Does this small unit of code do what I think it does?” Code review: “Are we writing readable, maintainable code?” Daily standup: “Are we set and able to work on the right thing for the next few hours?”

Retrospective: “Did we work well, at a sustainable pace, for the last days?” Monitoring/Analytics: “Did the new feature get the expected usage and performance?” User research: “Do we understand the problem we’re trying to solve?”

Am I doing the right thing? Am I doing the thing right? Unit tests Retrospective User research Code review Monitoring/Analytics ¿Daily standup?

It’s a loop. You need to act on the result of your actions.

Doing something and not re ecting back is not a feedback loop. fl It is running in circles.

Feedback loops are not free.

Why do we use feedback loops, then?

It’s not like we have a choice. It’s the nature of software, the nature of digital products.

The nature of complex spaces.

Clear Playing Tetris Complicated Fixing a car Complex Winning a race Chaotic Playing with kids

Have you ever tried estimating a task?

This is not about moving fast. This is about learning where not to go, the sooner the better.

Creating software is a game of assumptions.

What is the level of con dence we are comfortable with? fi What is the fastest way to get there?

Agility vs. Predictability

Software is a set of complex problems (mostly).

The best way to move forward is by experimenting, iterating, and deferring decisions. We do so by leveraging feedback loops.

fl

  1. Analyze the current situation. 2. Take a step, the smallest, safest possible that gives helpful info. 3. Re ect on what you just learned. 4. Go back to step 1.

Thank you, folks! From @afontq with 💙 to Bilbostackers