Intro0:00
Good afternoon. My name is Eyal Blum. I am a software engineer at Figma, and in my talk today we're going to talk about how we've adopted, or are adopting,
agents into our workflow at Figma while maintaining high quality for our codebase. So, as you may know, Figma is the browser-based editor where design and engineering, and now AI agent, collaborate together to shape code. This Figma has pivoted very strongly from being a traditional tool to an AI-first tool.
But in this talk, I'm not going to talk about our product. I'm going to talk more about our internal organization and how our engineering org has been adopting AI agents.
Three acts1:05
What we've found internally is both organizations, companies, and individuals, there's kind of a three-act process of AI adoption. You start with picking up something, whether it was a lot of the people in this room who have been using our very AI build and have been using AI for a while, and they picked up something and got some simple things to work very well, 10x faster.
Then you start applying those same practices to bigger problems, and AI fails pretty badly at that, gives you bad stuff, lots of bugs, and the trust that you built breaks down. And then from that point, you start building the real skill, which is learning how to use AI correctly and put theright guardrails and theright prompting and theright context and all the stuff that we've been talking all day about here in all the talks in order to actually build the real skill.
Uneven adoption2:04
And one thing that is happening internally is we adopted, whether teams or individuals, the adoption is uneven. We have teams that are very AI-forward and have already transformed their entire workflows, and then we have teams that are still experimenting in the earlier acts and/or have lost confidence, and they all need to work together in order to shape our product.
So they need to coexist in the organization, and we need to find a way to support them while bringing on everybody along for the journey and getting everybody to the third act of the story.
Aside from that main friction point, we have also noticed other friction points that happen as we adopt AI.
One thing that we've heard a lot from developers and managers have been noticing is that reduced developer agency causes engineers to lose some of their job satisfaction. So a lot of people used to take a lot of pride and enjoyment in writing code and going into the flow, and a lot of people feel like that's been lost, or they're losing a lot of that element and getting into more of a prompt cycle where they just wait on output from AI and then speak to the AI, and it's not as much fun as they used to have, and then we get burnout.
Best engineers3:26
We've noticed another interesting thing is actually our best engineer, the one that holds all their context in their brain, they end up getting out of the burden. And what ends up happening is they know where all the pitfalls are.
They are holding together with their mental duct tape all the places that agents are not working well, and they're preventing all the really bad stuff from coming in, or they have all the institutional contact that hasn't ever been written down in their head, and they get so much burden and become bottlenecks and get really frustrated.
So they actually end up being the slowest to adopt because they see all the problems firsthand. That's another big issue that we've seen. And this one I'm sure everybody can resonate sorry. I'm sure everybody here will resonate that all of a sudden all the design docs and all the Slack messages and all the emails have gotten three or four times as long, and we've gotten two or three times as many emails, and they say basically as much as they did before.
So the communication has gotten quite inefficient, and some of the markers of what is high quality and important things versus not so much high quality has become challenging to navigate.
So I'm going to spend the next few minutes talking about some of the lessons that we've learned and how we've been trying to apply this. This is a journey we have not come out to the other end, but we've seen some really interesting progress along a lot of these lines.
Verification first5:01
I think a lot of the speakers here have touched upon this, but investing in verification is probably the highest value thing we can do in our codebase. Anytime we can left shift anything in our workflow from a human needing to do it to an agent being able to verify it.
So for example, when Playwright MCP came out, instead of having humans navigate the code, now the agent can explore the code. That was a big win unlock for productivity in a lot of our team. That's always a big win for us.
The other thing is
it's even better if when you find something that the agent has found to be useful, take the time to take that and encode it into a deterministic flow. Deterministic flow that can be easily repeated. It's saved on token, it's saved on time, and then you also know that you're using the LLM when it needs to reason.
But when you have something that is already known and basically can be encoded into a test, spending that time always pays dividends. And another tip, if you tell your skills or your agent to write the code that you're writing like
red to green at the TDD style, it almost always gives you better results because you set a goal, then you tell the agent to strive toward that goal. It will almost always give you better results than writing the code and then writing the test afterward because then it will fit the test of the code rather than fit the code to pass the verification criteria.
This is the testing pyramid, the classic testing pyramid from the previous just when you think about the testing themselves, which you had the end-to-end test and the integration test and the unit test. This is a very similar move, as much as you can down to the deterministic analysis where it's linting, the compiler, the unit test themselves, whatever that can't be covered easily, you can have agent to reviews on it based on criteria.
Testing pyramid6:43
So
architectural standards that have been easily encoded into the codebase, you can move into the agent. And then only at the very top, you need to have some sort of human review, which is usually around the functionality and this is theright thing to build that only leaves the human to do what the humans need to actually be involved in.
Planning over prompting7:36
Another really important thing is the planning versus prompting. This is really tied into the giving agency back to developers and finding a replacement to the craft of writing code.
Spending a lot of time writing the plan and then sending it off to the agent basically as an implementation that can be done automatically is something that we find to really kind of reintroduce the joy of building back into the process.
So it's not uncommon to spend a week writing a very detailed plan, making all the decisions, flashing it out, iterating, sending it out to teammates to review. And then only when it's read and you've flashed out all the decision, you can send it to the agent.
The agent will send it back to you when it's implemented.
That has been really successful, also in accelerating and also really restoring some of the joy into the development process.
Good plans8:39
So what makes a good plan? Really important to start with the why at the top. It really helps preventing agent drift if you have a bold, big section of kind of like when you write a design doc, you want to have the executive summary.
Put that in there for the agent. Otherwise, they'll start drifting over time and make sure that the agent don't go back and change that because they feel like it. So always start with the why. Make sure that your plan can be broken down into small parts that can each be verified independently.
And my personal way of knowing what is a good size is would I want to review the PR that will correspond to that part? If it's going to be too big for me to want to review in one sitting, if kind of like the test is I'm going to need to get a cup of coffee before I read this, that means it's too big.
And I'm going to want to have it broken down into pieces. And then I make sure that each part can be validated independently because what I don't want to have is have five stages and then the first one is written but not validated, and then everything else is built on top of all the assumptions.
So having kind of a validation gate or an exception criteria for each phase really helps make the plan resilient to drift. And there's all kinds of techniques of how to manage the context and doing a software factory on top of that.
But once you have the plan, you can use whatever loop you want or whatever workflow you want in order to implement it.
This is a screenshot that I randomly picked of a plan, but this is what I usually look for. The executive summary at the top, the phases break it down, and then each one of them I will go into lots of details so that I can just fit it into a sub-agent, and the sub-agent can independently work on that and not have to worry about it.
There are other workflows that would work or other structures to the plan. I find that part of the things that are great about AI workflows is that everybody can set up the thing that works best for them.
No.
No, thank you. Everybody can very easily set up the workflow that works exactly for them. So the dimension return is trying to centralize everybody on one thing, but as long as it works for their flow and other people can iterate with them, I find that it generally works very well.
And this is just an example, kind of a brag of this could be a result from a plan. There are probably 20 PRs here. Some of them would be maybe 10 lines and some of them would be 100 lines, but probably nothing bigger than that.
And that allows us to this is in the pre-AI world. This plan probably worked in it for a week. I aligned with three other teams for another week on that, and then I just sent it to an agent to implement overnight, and it came back.
This is probably from two plans, not one, but it's basically six weeks of coding work just
spent that only took one week. So that's where I get a 5x speed up. If I include the review cycle at the end, if you always have to remember.
Moving on from planning back to the issue that we had with the skeptics and the people who are burdened with the most work, make sure that you bring them in and take their feelings really seriously. They're spec-heptic because they're seeing where you are lacking validation, where your tools fail.
Skeptics roadmap11:47
So their feedback is basically the roadmap of how to improve your agent interacting with the codebase. So just make sure to bring them in rather than trying to figure out how to make them use AI. Just have them be in charge of the roadmap to make AI safe in your organization, and they will come along once they see that the improvement that they're making are actually making their life better.
Attention-aware comms12:34
And as you can see, they'll not be shy about telling you what you need to fix. This is less than an hour sitting with a bunch of people, and this is the result of brainstorms.
Another thing that's been really helpful with my team specifically, and we're working to adopt it in the broader organization as well, is to make sure that you have an attention-aware communication. In the age of AI, human attention is a scarce resource.
I think I've heard it for multiple talks, and a lot of people have come to the same conclusion. You can get more human attention. So where you spend your time and what you're reading becomes really important. So since it's such a scarce resource, marking what was generated by AI versus what was written by a human is really helpful to know how much time you need to spend reading this and how much slop can you expect in this part of the communication.
And that's kind of building a new culture around that style of communication. It really helps. So for example, the team that I work with, we've decided that every PR description will start with something like that, something that I wrote by hand.
It could be very short. I describe what this is and what this is doing, and then the AI description is going to come after that, which is I will probably read it. I will probably edit it to remove some wrong things, but I didn't write every line here.
So they should be more suspicious, and they should pay more attention to what I wrote in the top, and they should override it. Things like that in Slack, in email, just like leaning into the fact that everybody knows that you're using AI to craft your communication, but just don't be shy about telling them what you should read and what they should pay less attention to.
And I remember early on, maybe earlier in this year, I
had some senior engineers in our org that kind of were very much AI skeptics, and I tried to reach out to them to see what was the problem, what was going on. And I said, I tried to run an analysis on some of the PR comments that you've run, and obviously, I used AI to do that.
And then I didn't distinguish very clearly what I wrote versus what AI generated, and they got very upset. They're like, why are you sending I did not expect somebody that I respect this much to send me something that's clearly this sloppy.
And then
I apologized. I realized I should have marked it clearly and marked my intention. This is what I wrote. This is what the AI wrote, and I need your feedback on that because I don't have the context to know if it's sloppy or not, and that's what I'm asking you for.
So lessons like that and changing the culture is just as important as some of the engineering challenges that we've been facing.
Meeting people15:29
Another thing that's really helpful around the adoption is, as you progress through adoption, there's a lot of very fancy tools and a lot of very fancy workflows that we've been implementing. But one of the really effective things is just letting people use AI where they're at.
So it really helps normalize the use of AI for everyday tasks, and it helps reduce the friction. And really, one of the most powerful things is being able to tag an agent in the Slack message with somebody and say, can you just do this for me and have the agents close the loop in the thread?
That kind of thing is really powerful. And then you can go on top of that and have all this thing automated and build kind of fancy things. But if you have a conversation with somebody who's not fully bought in, and then you can tag it in a non-passive-aggressive way, you can tag it and say, let's try it.
Let's see if the agent can get it this time. And they close the loop. And if it's a good experience, that really helps people try it out on their own in other cases.
And our journey continues. We're still learning. Even though we're shipping AI externally, our AI adoption, we're experimenting with so many things all the time. Our automation story is not fully there yet. We're still trying to figure out when we should use how we can use cloud agent effectively given all the dependencies that we have for some of our build systems.
So we are continuing to learn. It's a culture shift. It's an engineering shift. And I don't know about you, but I've been working in the Valley for the last 15 years, and this is the biggest change by orders of magnitude of everything that I've seen in terms of culture and technology.
So we're all here together, and we're all figuring it out. And that's what I wanted to talk to you today. Thank you.





