Full Transcript

·YouTLDR

Platforms for Humans and Machines: Engineering for the Age of Agents — Juan Herreros Elorza

21:133,416 words · ~17 min readEnglishTranscribed Apr 19, 2026
AI Summary

The shift toward AI-agentic development exposes existing inefficiencies in internal platforms, requiring a transition to API-first, self-service, and local-first architectures to be effective. Best practices like documentation and observability are no longer just 'nice-to-haves' but strict requirements for machine-driven workflows.

As coding agents become standard, the 'human-in-the-loop' friction points (like manual tickets or chat-based support) become absolute blockers for automated productivity.

Section summaries

0:00-2:00

Introduction & Banking Circle Context

optional

Provides background on the speaker's company and the 'Atlas' platform scale.

2:00-7:00

The Developer's Story

watch

Crucial anecdotal evidence of why manual processes fail in an agentic world.

7:00-12:00

Core Technical Principles

watch

Deep dive into API-first, self-service, and local-first requirements.

12:00-17:00

Documentation & Contributions

watch

Explains 'agents.md', skills, and the cultural shift toward open platform contributions.

17:00-21:00

Measurement & Conclusion

optional

Discusses Dora/SPACE metrics and final encouragement; useful for leads/managers.

Key points

  • The 'Agent Wall' in Legacy Platforms — Manual processes that humans navigate through social engineering (e.g., 'ask Jim on the 2nd floor') are impossible for agents, making the 'broken' parts of a platform visible.
  • API-Based Self-Service as a Prerequisite — Agents excel at calling well-defined APIs with schema validation and discoverable endpoints rather than clicking through graphical UIs.
  • Local-First and Shift-Left for Agents — Agents should be able to validate changes locally using CLI tools or MCP (Model Context Protocol) servers before pushing to version control.
  • Machine-Readable Observability — Observability systems must provide logs, metrics, and traces via API so agents can verify if their tasks succeeded or failed.
If this situation was tricky for a developer, this situation is essentially impossible for a machine. Juan Herreros Elorza
Best practices are still best practices... they are just much more obvious and perhaps much more painful now that we have these coding agents working next to us. Juan Herreros Elorza

AI-generated from the transcript. May contain errors.

0:00

Hello everyone. Thank you very much for

0:02

watching and welcome to my talk

0:05

platforms for humans and machines.

0:08

My name is Juan and I work as the team

0:11

lead for the cloud native technology

0:13

team in a company called Banking Circle.

0:17

You probably don't know about us, so let

0:18

me tell you just a bit about what we do.

0:21

Mainly we are a global cross-border

0:23

payments provider

0:25

uh on top of accounts and liquidity

0:28

management.

0:29

We provide we process over 1 trillion

0:32

euro per year

0:34

and we provide banking services to over

0:36

700 regulated financial institutions.

0:40

We are very much a fintech and in fact a

0:42

lot of us are working within some

0:45

capacity of engineering.

0:48

Because of that some years ago we

0:50

decided to establish a platform

0:52

engineering team in Banking Circle,

0:54

which is where I'm working.

0:57

More than 250 people in Banking Circle

1:00

are building some type of technical

1:02

systems and this includes the APIs that

1:04

our clients are using. This includes the

1:06

core banking systems, some internal

1:08

tools. This includes data science and

1:11

data engineering and of course the

1:13

integration with the clearing schemes

1:15

where we settle the payments.

1:17

Because of that we have decided to

1:20

establish a platform that all of these

1:22

teams can use

1:23

so that we abstract away the complexity

1:27

in some of the underlying infrastructure

1:29

and cloud concerns

1:31

and so these people can focus on

1:33

building the systems that they are

1:35

supposed to build.

1:37

We call that platform Atlas.

1:39

And Atlas has a number of sub-platforms.

1:42

We have a platform for compute where

1:44

people run their applications based on

1:46

Kubernetes.

1:48

We have a platform for infrastructure

1:50

which people can use to provision blob

1:53

storage services. They can also use it

1:55

to provision databases. They can use it

1:58

to provision secret management systems.

2:00

We have a platforms for messaging for

2:02

the different applications and the

2:04

different systems to communicate with

2:06

each other and we have platforms for

2:08

observability so that we can know what

2:10

is happening with all of our

2:11

applications and all of the payments

2:14

that we are processing.

2:15

Now

2:16

we have come a long way in this platform

2:19

engineering journey.

2:20

But it wasn't always easy.

2:22

And I would like to start my talk with a

2:24

bit of a story using fictional names and

2:27

characters

2:28

but a story based on my experiences

2:30

while working here in Banking Circle.

2:33

I'm sure many of you

2:35

will relate to this story as well.

2:38

Let's say that we have a new developer,

2:39

right? And they have joined the company,

2:41

they have joined the team. They just

2:43

start working and they build their first

2:45

application.

2:46

Um this developer is great. They are

2:48

very good at coding the application

2:51

perhaps for some payment system.

2:54

Um but eventually they hit a wall. They

2:57

have the code

2:58

but they need to deploy that application

3:01

somewhere.

3:03

Then the developer will naturally ask

3:04

someone in the team, "Hey

3:07

what should I do with this application?

3:09

How do I deploy it?"

3:12

And then the person in the team might

3:13

say to the developer, "Well, you know

3:15

what?

3:16

Actually I did that, but it's already

3:18

set in this pipeline. Why don't you copy

3:20

it from there?"

3:22

The developer might go, copy the

3:24

pipeline, then maybe they have to adjust

3:26

something. It wasn't exactly the same in

3:28

this case because the application had

3:30

some specific requirements. Then they

3:32

will try to yes run this pipeline. Maybe

3:35

the pipeline will fail and ultimately

3:37

the developer doesn't know why it's

3:39

failing because the error has nothing to

3:41

do with the application that they coded.

3:43

Maybe they then go back to their

3:45

teammate and they are like, "Hey, what

3:47

can I do with this?"

3:49

And the teammate might say, "You know

3:50

what you should do?

3:51

You should talk to this person that is

3:53

working in the infrastructure team. They

3:55

will help you."

3:57

Now this developer will go. Maybe they

3:59

will talk with this person. Eventually

4:01

they will say, "Oh yeah, of course this

4:03

is an error that happens very often. I

4:05

can solve it just for you."

4:07

The error will be solved. Then the

4:09

developer will deploy the application

4:10

and then maybe that deployment will

4:12

succeed only to realize at the end of it

4:15

that actually on top of that application

4:18

the developer also needed a database or

4:20

maybe some blob storage.

4:22

>> [snorts]

4:23

>> Back to square one, the developer will

4:25

go to maybe this person in the

4:26

infrastructure team to ask "Hey, should

4:30

I use you to create this database or

4:33

this blob storage for me?" And maybe the

4:36

person, let's assume best intentions of

4:38

course, maybe they want to help but they

4:41

will say, "You know what? I actually

4:43

have a lot of other things that I'm

4:44

working on. I will help you, but that's

4:47

going to be next week."

4:50

Um so obviously the developer will get

4:53

frustrated because they kind of had done

4:56

their part but then they struggled a lot

4:59

in this process to then deploy the

5:01

application and to get it running with

5:04

all of the dependencies that it needs.

5:08

Um perhaps they were following some

5:10

pieces of documentation, something that

5:13

someone wrote along the way, but then

5:15

they were also relying on asking this

5:17

teammate and asking the person in the

5:19

other team.

5:20

Now this is a bad situation that again I

5:23

think all of us have been at some point.

5:26

It's a bad situation for a person.

5:30

But today all of us are using LLMs,

5:34

we're using AI agents to help us in our

5:37

daily job. And if this situation was

5:39

tricky for a developer

5:42

this situation is essentially impossible

5:44

for a machine. Cuz the machine is not

5:46

going to

5:48

you know, go and try the pipeline and

5:50

then go up to the second floor and talk

5:53

to the person in that other team. Now of

5:55

course an agent could use Teams or maybe

5:58

even use something from

6:00

some voice model and call over the

6:02

phone, but generally a coding agent is

6:04

not going to be able to do all of these

6:06

things.

6:07

So these pain points

6:09

that the developers were facing

6:11

suddenly become much more obvious when

6:14

an agent is facing them. And they are

6:17

limiting factor in how productive this

6:19

coding agent can be or how productive

6:22

the developer can be when using the

6:24

coding agent.

6:27

And what I'm about to tell you

6:29

um I'm going to address some of the

6:31

points in this story

6:33

but the gist of it is that best

6:34

practices are still best practices.

6:37

We have known for a while that some of

6:40

these things like relying on a teammate

6:42

to tell us how to deploy an application

6:44

or having to reach out to a person in a

6:46

different team

6:48

or having to wait for a pipeline only to

6:50

realize that it wasn't exactly what we

6:52

needed

6:53

they were never good.

6:54

They are just much more obvious and

6:57

perhaps much more painful now that we

6:59

have these coding agents working next to

7:02

us.

7:03

So what can we do

7:05

about it?

7:06

Well, the first thing to me it has to be

7:09

self-service.

7:11

If I need any resources from this

7:13

platform, if I need to be able to do

7:15

anything through this platforms, I

7:17

should be able to do it in my own.

7:19

Similarly, if my agent needs to be able

7:23

to do anything on the platform, it

7:25

should be able to do it on its own.

7:29

There should be no process that requires

7:31

talking to a specific person or waiting

7:34

for a specific person to do something.

7:38

The agent should be able to trigger

7:41

everything it needs and for that of

7:45

course it's also important that this

7:47

self-service flow or this self-service

7:50

process is intuitive.

7:53

Of course we need to document how these

7:55

things work and I will get to that in

7:57

just a moment.

7:58

But the easier that we make it, the more

8:01

self-service it actually is.

8:04

Because if if it is technically

8:06

self-service but it requires fetching

8:08

some building blocks from five different

8:10

places and putting them together and

8:12

then triggering a flow somewhere else

8:15

then it's not really self-service.

8:18

So make it automatic, remove [snorts]

8:20

people from the process

8:22

and make it easy to the greatest extent

8:24

possible.

8:29

The second point that I think it's

8:30

important is make it API based.

8:33

Self-service could look in many

8:35

different ways and it could also be

8:38

something based on sending some

8:41

text somewhere. It could be based on

8:43

clicking a button. It could be based on

8:46

many things, but agents are good at

8:48

calling well-defined APIs.

8:51

It could also be of course a CLI on top

8:54

of the API. It could be something like

8:55

an MCP server around the API that the

8:59

agent uses. All of those are also good

9:01

ideas, but generally under all of that

9:03

you should have a well-defined API.

9:06

This is discoverable. So as it interacts

9:09

with it, the agent is going to discover

9:12

what it can do and the options that are

9:14

there.

9:15

It has schema validation. So naturally

9:18

the agent will only send things that are

9:21

going to work.

9:23

Um it also has authenticate or it can

9:25

have, depending on what you're building,

9:27

authentication and authorization in

9:29

place. So because of that your agent

9:31

will be allowed to use your credentials

9:33

as a developer or maybe if the agent is

9:36

in a particular flow it will have its

9:37

own.

9:39

But it will be able to do all of these

9:40

things in a secure way and it will know

9:43

what it's doing.

9:44

And with this the agent can go back and

9:47

forth. It can try to do something. The

9:49

API will get it a response and the agent

9:51

can start working in this way where it

9:54

goes in a loop until it gets what it

9:57

needs or what it was asked to do.

10:01

Which brings me to my next point. An

10:04

agent is typically running in your

10:06

machine.

10:08

You could also have it on uh some server

10:10

somewhere and you might have open claw

10:12

or something and you're communicating

10:14

with an agent there. But typically an

10:16

agent is local to the machine.

10:19

Of course, the models are running

10:20

somewhere else. But the work the agent

10:23

is doing is local.

10:25

So, make it easy for the agent to do

10:28

that.

10:29

First of all, shift left. If something

10:31

is going to fail, it should fail as soon

10:33

as possible.

10:35

So, don't make the agent

10:37

push something to your version control

10:39

system only to then fail on some

10:42

workflow after a few minutes.

10:44

If you can validate things up front, if

10:47

you can run them just locally, again, by

10:49

calling those APIs or maybe using some

10:52

some type of wrapper about around them,

10:55

do that. Shift left as much as possible.

10:58

Then, like I said, the agents are going

11:00

to go on a loop.

11:01

So, if the agent is in your machine and

11:05

it can do everything it needs there,

11:07

and you clearly define

11:09

this is what I need,

11:11

the agent is going to iterate until it

11:13

gets there.

11:14

Now, it is important that you give it

11:16

precise instructions, that you describe

11:19

the task, that you tell the agent, this

11:21

is what I need you to do.

11:24

And it is also important that you tell

11:26

the agent, this is how you know

11:29

you have succeeded at the task.

11:32

This is a bit important when when

11:33

working with agents because as humans,

11:36

we could verify this in different ways.

11:38

And we have a lot of observability

11:39

systems where perhaps we would like to

11:42

check if the application has been uh

11:45

deployed and the metrics are looking

11:47

fine. Maybe we will be looking at some

11:49

dashboards.

11:50

The agents are not going to be looking

11:53

at those graphical interfaces.

11:55

So, you also need to think how does

11:57

observability look like

12:00

if the prime user is going to be

12:03

an AI agent. Make those logs, metrics,

12:06

traces, everything that can help

12:10

available via an API or via CLI or an

12:14

MCP server or something like that.

12:17

By doing that, you're letting the agent

12:19

close the loop.

12:20

You're telling it

12:21

how to do things

12:23

and how to verify that the things have

12:25

been done correctly.

12:29

And since I'm speaking about telling the

12:31

agent how to do things,

12:33

something that is crucially important is

12:35

documentation.

12:38

Of course, you already have

12:40

documentation. I think many of us have

12:42

written documentation, uh have put it

12:45

somewhere and then were unable to find

12:47

it.

12:48

Um when we need to expose this

12:52

documentation to agents,

12:54

but then again, this was already true

12:55

for humans, we need to be structured

12:57

around it. So, there are different

12:59

strategies that you might want to take.

13:02

One of them could be, especially if

13:03

you're working in a smaller

13:04

repositories, keep your documentation

13:07

next to the code it's documenting.

13:10

That way, if an agent is working in that

13:12

particular folder or repository, it has

13:15

everything it needs.

13:16

It has the code it needs to work on and

13:18

the documentation that describes it.

13:21

If you're working on something bigger or

13:22

perhaps as a platform team, if you need

13:24

to expose all of the

13:27

documentation about the platform that an

13:29

agent might need,

13:31

the better idea is to put it in a

13:33

centralized place so that the agent can

13:35

go there and start discovering which

13:37

documentation is available.

13:39

Now, once again,

13:41

think API first.

13:44

Because the agent is

13:45

going to be much better at consuming the

13:47

website doing that and specifically if

13:50

you can give it the specific bits of

13:51

documentation that it needs over API,

13:53

even better, rather than getting the

13:56

entire HTML HTML page in memory

14:00

and trying to figure out what is the

14:02

relevant uh bits there.

14:04

Of course, when we talk documentation,

14:06

we can also think about um

14:09

agent-specific documentation. I assume

14:11

that many of you are already familiar

14:13

with this, but

14:14

you can use the agent.md files or

14:18

cloud.md,

14:19

compiler_instructions.md, depending on

14:22

on your agent of choice.

14:24

And by doing that, you can also describe

14:25

the agent how it should work in a

14:27

particular repository.

14:29

>> [snorts]

14:29

>> You can tell it, well, you should always

14:30

build in this way, test in this way,

14:33

deploy in this way. You can verify in

14:35

this way. You can include all of that in

14:38

your agents.md.

14:40

You can also have one of these more

14:42

generally applying to different systems

14:44

and then add a a one uh an agents.md

14:48

more specific to um a particular project

14:51

or repository on top of that.

14:54

You can also use skills.

14:56

If you have some conventions that you're

14:57

following or some uh well-defined way of

15:01

uh interacting with some of your

15:02

platforms, you can codify those in a

15:04

skill, which is again just a markdown

15:07

document. And by doing that, you're

15:08

telling the agent, when you do this type

15:10

of task, you should do it like that.

15:17

Last but not least,

15:19

you should also encourage contributions

15:21

in your platforms. If you're building

15:24

internal developer platforms, those are

15:25

going to serve the developers in your

15:27

organization.

15:29

And you want them contributing because

15:30

that way they can also help you.

15:33

They can help you help them.

15:35

Um so, you should encourage them. You

15:38

should welcome contributions and because

15:40

they are using AI agents, the entry

15:43

barrier is going to be lower. And so, I

15:46

would expect, and that's what I have

15:47

seen, that people are more welcome to

15:49

contribute to the platforms.

15:52

Now, of course, this is a level a

15:53

double-edged sword because ultimately,

15:56

as the person or the team owning the

15:58

platform, you are responsible for its

16:00

maintenance.

16:02

So, you should think a lot about which

16:04

things should be taken into

16:07

consideration when contributing to the

16:09

platform.

16:10

You need to have some guardrails

16:11

thinking about security or compliance or

16:14

just following a well-defined set of

16:16

standards that then helps you maintain

16:19

the platform

16:20

um

16:21

by virtue of always following those

16:23

conventions.

16:25

You can do this um with some policies

16:28

perhaps in your systems, but you can

16:31

also, yes, rely on giving context to the

16:34

agent.

16:35

Once again, you could uh use agents.md.

16:38

You could use some skills so that when

16:41

people want to contribute on your

16:42

platform, they can also point their

16:44

agents to these markdown files and refer

16:46

to those as as documentation on how to

16:49

contribute.

16:51

Generally, I would encourage a

16:52

combination of the two. Have guardrails

16:54

in place for everything that you

16:55

absolutely don't want to happen.

16:57

Use some sort of policies for that.

17:00

But then on top of that, use uh these

17:02

markdown files to help the agents work

17:05

in the way that you want them to.

17:10

And then,

17:12

we get to a very important question,

17:14

uh which is, okay, we have done all of

17:16

these things, right? People are using AI

17:18

um in the organization. They are

17:21

following now these practices that we

17:23

have been recommending. We have built a

17:24

platform that can be used by AI.

17:27

But did it work?

17:31

And I think the way of knowing if it

17:32

works is by measuring whether it worked

17:35

or not. You can, of course, measure

17:36

these things before and after um

17:40

making some changes in your platform so

17:43

that you can see whether they had an

17:44

effect or not. And depending on what you

17:46

want to do, you might want to focus on

17:48

some type of metrics or on others.

17:51

Now, we know that there is metrics about

17:53

application delivery and we have the

17:55

whole uh Dora um metrics on that.

17:59

Uh change frequency, uh mean time till

18:02

recovery, um

18:04

lead time,

18:06

and

18:08

uh

18:09

and another one that I can't really

18:10

remember right now. But those metrics

18:12

are measuring how

18:14

often your developers are able to

18:16

release and how good those releases

18:19

typically go.

18:20

You can also measure reliability.

18:22

Perhaps that's um

18:23

the main concern. It certainly is in in

18:26

fintech institutions.

18:27

So, you can check, okay, are my

18:29

applications more reliable than they

18:30

were before? Am I having less errors

18:33

than I was having before? Is um

18:36

traffic performing in any different way?

18:39

Um

18:40

or you might want to look at more

18:43

platform-specific metrics, such as how

18:46

many support requests have I got?

18:48

If people and their agents can do

18:50

everything on their own because it's

18:52

self-service, am I then not needed to

18:54

support them?

18:56

Or am I now having more support requests

18:58

because the way in which I implemented

19:00

this is confusing?

19:02

Um you can also use some other

19:03

frameworks about developer satisfaction

19:06

and developer experience, such as the

19:07

space one.

19:09

But my general point is, think about

19:11

what you want to achieve

19:13

with this making it easier for AI agents

19:16

to contribute, and then measure whether

19:19

you actually succeeded at that or not.

19:25

And with that, I'll just summarize my

19:27

advice that once again comes from my

19:29

experience. There could be more points

19:31

in this list, but I think this is a good

19:33

point where to get it started.

19:35

If you want to make your platform ready

19:38

for AI agents so that you can get the

19:40

most out of them, make sure your

19:42

platform is self-service, API-based, and

19:45

local-first. Make sure you have good

19:48

documentation and observability in that

19:51

platform so that it's easy to tell the

19:52

agent what to do, how to do it, and how

19:56

to verify its own.

19:58

And encourage welcome contributions to

20:01

your platform cuz that way you can also

20:03

move faster and implement the features

20:05

that your users need.

20:07

Last but not least, measure that all of

20:09

these indeed work.

20:13

And maybe

20:14

one extra piece of advice, maybe your

20:17

organization has been resisting some of

20:19

these best practices. Maybe you have

20:21

been trying to push for these API first

20:24

platforms or to make them more local

20:26

friendly

20:28

or to have the time to write proper

20:30

documentation.

20:31

But then you have gotten some resistance

20:33

to that because people have were focused

20:35

on other priorities.

20:37

Take advantage. Everyone from the

20:39

executive level to the individual

20:41

contributors are looking at AI now. It

20:44

is a very hot topic. So, you can use AI

20:47

as the excuse to implement some best

20:49

practices that again were always best

20:52

practices if you didn't have the chance

20:54

to do it until now.

20:57

Thank you very much for listening.

21:00

My name is Juan Herrero Salorza. Here

21:02

you have links to my LinkedIn, my

21:03

personal website, and my GitHub. And if

21:05

you've liked it, please connect over

21:07

there.

21:08

Thank you and have a great AI Engineer

21:10

Europe event.

More transcripts

Explore other videos transcribed with YouTLDR.

Get the TLDR of any YouTube video

Transcribe, summarize, and repurpose videos in 125+ languages — free, no signup required.

Try YouTLDR Free