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:25
uh on top of accounts and liquidity
0:29
We provide we process over 1 trillion
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:23
so that we abstract away the complexity
1:27
in some of the underlying infrastructure
1:31
and so these people can focus on
1:33
building the systems that they are
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: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:16
we have come a long way in this platform
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:28
but a story based on my experiences
2:30
while working here in Banking Circle.
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: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:58
but they need to deploy that application
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:12
And then the person in the team might
3:13
say to the developer, "Well, you know
3:16
Actually I did that, but it's already
3:18
set in this pipeline. Why don't you copy
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:49
And the teammate might say, "You know
3:51
You should talk to this person that is
3:53
working in the infrastructure team. They
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: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: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: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: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:27
And what I'm about to tell you
6:29
um I'm going to address some of the
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:48
or having to wait for a pipeline only to
6:50
realize that it wasn't exactly what we
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:06
Well, the first thing to me it has to be
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: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: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:15
It has schema validation. So naturally
9:18
the agent will only send things that are
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:39
But it will be able to do all of these
9:40
things in a secure way and it will know
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: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:25
So, make it easy for the agent to do
10:29
First of all, shift left. If something
10:31
is going to fail, it should fail as soon
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: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: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: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: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: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: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: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: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:14
you can use the agent.md files or
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
>> 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: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: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: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:02
So, you should think a lot about which
16:04
things should be taken into
16:07
consideration when contributing to the
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:21
by virtue of always following those
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: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: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: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: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:09
and another one that I can't really
18:10
remember right now. But those metrics
18:14
often your developers are able to
18:16
release and how good those releases
18:20
You can also measure reliability.
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: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:56
Or am I now having more support requests
18:58
because the way in which I implemented
19:02
Um you can also use some other
19:03
frameworks about developer satisfaction
19:06
and developer experience, such as the
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: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: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:28
or to have the time to write proper
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: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:08
Thank you and have a great AI Engineer