DevDays Europe 2025

Ricardo Sueiras: Zero to Shipped in 30 mins with AI Coding Assistants

44:57 · 20 May 2025 – 23 May 2025 · YouTube

About this talk

In this session, Ricardo Suarez, a principal developer advocate at AWS, demonstrates how to build a fact-checking application from scratch in just 30 minutes using AI coding assistants, primarily Amazon Q. He shares insights on using these tools effectively, emphasizing the importance of context and well-defined prompts when working with AI to generate code. The speaker discusses project scaffolding, managing data models, and common pitfalls when integrating AI code assistants into the development workflow. He illustrates the live-coding process, showcasing how to structure projects and leverage AI for generating executable code while addressing security considerations. By the end, attendees gain practical knowledge on improving their coding practices with AI technologies.

Full transcript

[Music] Hello and welcome everyone. Take a seat when you're not just sitting. My name is Frier and I'll be your host for this session by Ricardo Suarez. And Ricardo is a principal developer advocate at AWS. He has like 30 years of experience working in technology collaborating with developers on shaping the future of development. and that context today Ricardo is speaking about zero to shipped in 30 minutes

with AI coding assistance. So starting with a blank IDE and one sheet he was telling me Ricardo will build a working app from scratch before this session ends with his own favorite AI coding assist to help him. So he'll show us how to create deployable code in just like 30 minutes. So give a great hand to Ricardo Thank you. Thank you for the intro. Yes, of course,

I should add that this is live coding. So, uh I do need the help of the demo goddess and gods. Um because yeah, we can see that. Um that's the slide. That's the one slide you're going to get. Um so, let's minimize that. Make sure it's okay. So, we can see that I have nothing. And hopefully by the end of this, we'll have something. So, I'm going

to open up my ID of choice uh VS Code. Make sure um so at the back. Is that okay? Can you see it? Can you sh Yeah. Okay. Right. Good. Okay. So, um what am I going to cover in this talk? So, I've been using AI coding assistants in different shapes and forms for about 18 months now. And um I've made a couple of observations in that

time. First of all, they're getting better every week. Um secondly, um the more you use them, so I use them daily, the more you learn about how to use them effectively. Um when I talk to developers who are experimenting, exploring them, they give me different accounts. Some love it, some are really making, you know, good thing doing good things with them. Others get frustrated and they say

they've tried them, but they didn't really work for them. So, I'm kind of interested to hear. Put your hands up if you have tried AI coding assistants at all. That's good. It's a good portion of you. Okay. Um, now put your hand up if you've tried them, but you thought they were rubbish. Okay, there's a few. Okay. Right. And and I hear this a lot. Okay. So,

the goal of this talk is to share some of the things I found work for me. Um, and we're going to do that by building um, an application from scratch. Um, and then kind of doing all the bits and pieces we would need to effectively shift left and push it onto the CI/CD CD system for them to deploy it. Now, what kind of application are we going

to build? I can hear you all asking. Well, in the current climate um, with the new president uh, in one of the major countries, I felt the time was needed for a fact-checking application. So, I'm going to build a facteing application and I'm going to show you how I might build that using some of the techniques I've learned. Um, and I will be using one AI coding

assistant called Amazon Q. But this what I'm going to share with you will work with others as well. I use regularly zed. Anyone here using zed? No. Try it out. It is awesome. I think it's the future of IDE. Um so like many like many uh kind of these AI coding assistants when you install it via a plug-in it provides you with a kind of u UX

au a user interface which is a chat box um but I'm going to come to that in a bit. First of all I'm going to sort of tell you how I structure um these projects. Now the output you get from AI coding assistance is only as good as two things. the prompt you create, but probably more important than the prompt is the context you provide. Now, what

does context mean? Uh context is the files in your project. So, if you're working on an existing codebase, the stuff you've got there. But if you're working on a green field site, it is things like um project specification files, your own um sort of developer coding standards or uh likes, maybe your organization's coding standards or likes and things like the data model. So I like to begin

with the data model. So, I'm going to I've kind of already created this, but I could have used this tool to create a data model. But most organizations, you know, they they have a team that already does this and maybe you go to your kind of liquid system and download the data model you want. But I'm just going to create a directory called data model. And I'm

going to call this fact checker yaml. And I've got a markdown document here of one I done earlier. Okay. Okay. So imagine that I'm you know working in this big organization and they've got kind of a whole bunch of data models for different things different kind of uh uh use cases and in this instance I'm going to uh take um that now imagine you know I'm a

new developer in organization you know you you've got either code you might have snippets of code you might have projects you might even have a data model and you want to know a bit more about this um you know one of the things that these AI coding tools is really good at is helping you explain and understand stuff. So um here I can directly through the IDE

I can ask the AI coding assistant to explain this stuff right and uh obviously this is this is quite a simple data model imagine you got a really complicated one um it's now going to basically drill down and provide you much more information so you as a developer now understand more about okay the data um model of the thing that I'm going to build an application for

it works equally well for example if you're building an API and you've got a swagger document taking the swagger a document and then you know asking questions about that helps you understand the APIs you're working with. Okay, so we've got um a data model uh and data models are really good context because when you ask then these AI coding tools to build stuff they're going to look

at that data model and respect hopefully um what's in there and we'll see that when we come to build code. So that's the first bit of context we're going to give it but we're not done yet. Next bit is we're going to create uh a folder called spec. And within the spec, I'm going to create a markdown document called spec. It doesn't matter really what um you

call it. But what um effectively I'm going to put in here. Again, I'm copy and pasting because you don't really want to watch type. Let's get rid of this for the moment. Minimize this. So what is it? What is the spec? What am I what am I doing here? So what I'm doing is I'm what's called scaffolding the project and I'm defining here what I want the

output of this um of the coding AI coding assistant to to do to respect. Okay. And so this is where you're kind of like trying to narrow down the options because LLMs are very good at you know uh taking a prompt and then giving what it wants. But as a developer working on a project you don't really want uh it to give it what it wants. You

want to shape, you want to control the output. Uh, and this is how you do it. You create scaffolding documents. And these can be very detailed. I'm deliberately making this one simple because it's a simple piece of code. But I'm defining two things. I'm defining first of all things like libraries or programming languages that I want it to use. Okay. So rather than it creating something in

Java or Go, I want this in Python. I want I want I don't want fast API. I want flask because it's easy to show that kind of thing. Now to come up with these documents you you um you start off either with your own knowledge, your own standards or your own organization standards and you will craft these over time. You will shape them. You can actually even

use the LLM themselves to say this is my scaffold. I'm creating this kind of project. How could I improve the scaffold? and it will give you and you can then basically you know edit it and then come up over time with much more detailed um detail scaffold documents. Another thing that I use scaffold documents is to try and make sure I can control and shape the output.

So I specify a directory structure which is typically what you would do uh the layout for a flask application. So now we've got quite a good bit of context. we can now actually ask uh our LLM to actually do something. Um and now this particular um uh kind of AI code Amazon Q developer has a bunch of agents and what an agent will do is it will

take a prompt and this is a prompt. I'm going to put it in so I so I can then talk about it afterwards. Um uh effectively what it will do. What's going on here? Is it working? is working. Um, agents will take a prompt and they will break it down into a series of tasks. They will um attempt to uh sort of tackle each task in turn,

building and writing code, testing code, making sure it works before proceeding to the next task. Um, so what we'll see is we'll see it's actually starting to work. It's going to start generating code. I hope it's going to start Um, that kind of worries me a little bit. I'm not sure what that's for, but let's give it a let's give it a time. Um, so yeah, what

what we'll see is it's code. You see, this is why you don't work with AI tools, right? I'm sure this is going to work. Let me try. Should I Should I kill this or not? Question is, I could start I could try again. You know what? I don't like this. I'm going to kill it. Sorry. Sorry. This This is not right. Let's try that. Is Okay, now

let's try that. Okay, now let's try. Okay, that's not a good start, but hopefully that's the only only one, right? So, let's try again. Okay, so I generate code for that gathering context generating code. Okay, right. So, as I was saying, um we've we've crafted this prompt and um it's going to take this prompt, break it down into a series tasks, generate code, test it, and then

build upon that. And what we'll see hopefully um I'm going to leave it this time because it looks like it's done. Okay. Um and the Wi-Fi is connected. Okay. Um we'll start seeing it um giving us a real-time update of what it's doing. So, it's going to tell us that it's going to um review code um uh and what files it's going to review. And I expect

it to basically review the context files that I specified in the prompt. And then it as it starts creating and writing files, it's going to tell us which files it writes. So, okay. Now, let's look at the now. Gosh, you know, so I did I did I ran this twice this morning, right? And it worked fine. So, and the Wi-Fi is okay. Why is it not doing

anything? That is bizarre. Maybe I should quit VS Code and try again. I tell I'm going to do that. I'm going to Code and try again because that does not healthy. Okay. bootstrapping the plugin. So what so it's going to take about seven minutes to to do the um thing. So I'm not going to leave you dangling for seven minutes. I'm going to walk talk about what

what is good prompt. So let's try the third time uploading code. It's uploading code. It's gathering context. It's generating it. Right. Okay. So I'm going to leave this now and I'm not going to worry too much about if it's actually you know what I'm going to do. I'm going to kind of do something sneaky. All right. So I've showed you one AI coding assistant, okay, which is

the one that's been plugged in. I'm a command line person, right? And um there is uh another tool and I've actually already pre pre-added the um uh the data model and the specification file. So if I look at the data model, you can see that basically it's the same thing that I had there before. And this tool is called Q and it's a command line tool. Okay.

And um so if you prefer command line which is something I do um then this provides exactly the same capabilities as what you might have in BSGO. I actually use this when I'm in with within zed um and I can actually so I can take that prompt and I can basically using the editor now type in that prompt and it's going to start doing stuff now. the

difference between doing it in the IDE has actually started deciding to work now. Obviously, I thought I'd give it a competition and see and wake it up. So, we've actually now got two two running in parallel, which is exciting. We'll see who which one finishes first. Um, so the one in the command line um actually can read files without asking permission, but if it wants to write

files, it's going to ask you permission, which is always a good um thing to look out for any AR code coding tools. Most of them now will ask you in their agentic flows uh for you to basically confirm that you're you're okay writing with them. So we can see here that now um we've got um uh the beginning of the kind of the process of of of

writing code. So it's going to now give us an update and it's going to keep us updated in real time as it reviews files, as it creates files and as it actually changes and modifies them. Okay, so this is going to take seven minutes. So what are we going to do for the next seven minutes? What I thought I'd do is walk you through something that I

get asked a lot when I'm doing uh these, right? Which is how do you know how to create a a good prompt when using AI coding assistants? Okay. And there's kind of four what I've learned over the the last kind of like year and a bit is there are kind of four key things to writing good prompts. Um so the first one is specificity and clarity. Okay.

Um these AI coding tools are really good but they are not um you know that they can't read your mind. Um very similar to you know we've all known this as developers right you go into a meeting with customers and they just say oh we just want that widget just build it right and they just they just think we know exactly you know how to build this

so it meets every every bit of their needs right so as good developers we in those meetings we drive those requirements discussions non-functional functional and then at the end of the meeting we've got a better idea of actually what they really want and this is the same with prompts Right. Um you need to make sure you specify what you actually want and they don't work with um

necessarily with big problems. What you have to do is take a large problem and break it down into smaller tasks and then for each of those tasks be very specific as to what you want. Now what you can do is you can actually build a plan. So you can build uh say a mark so markdown is kind of the new kind of standard now for the way

these tools work. You create a markdown document. You might specify a problem at the top. You might break that down into five steps, five pieces. Each of those you then document how you would tackle and how you would how you want to tackle each of those tasks. And um that is a much better prompt. So when you when I look at um the example prompt that I

gave here for a si simple factchecking application I broke down just the basics of the initial kind of like core application. I didn't want any bells and whistles because what I would do is I would build ba based on what it actually creates the core. I might then have another prompt that says do things like maybe exporting data or maybe adding an ability to create reporting uh

etc. Right? So you know because this is a simple example I just wanted to build um and so yeah so the things you want to avoid is being too ambiguous and being too broad. So the second kind of tip is um kind of the more you provide information about what it is you're you you're doing um uh the better the output the relevancy to the output you

get. So here really it's more around describing describing maybe the context of your project um functional non-functional requirements that kind of thing. Um but it's easy to try and provide too much information. Um, these AI tools don't have infinite uh context. And if they do, um, or if you don't see it, you're probably paying for it somewhere. The third tip, which is probably the most important, and

you're going to hear me say this word a lot, is context. You've already seen two examples of this, the data model and the scaffolding, but the reality is that if the repo uh you're in is context. It's all the files you currently have. Um so this is kind of like probably the most important factor when LLMs decide what they are going to give you. They will define

they will decide based on the context you as a developer provide plus the prompt what it's going to give you. So remember as developers we are in control of the context. Um if we do nothing it's just the tool is going to choose its own context which is typically just maybe the open file you've got in your editor. Um, but nearly all AI coding tools now allow

you to specify directories, files, images. Some even do web addresses, right, as context. And what that what that will do is it will actually go to that directory, that web page, grab that stuff, convert it typically to a local markdown document, and use that together with your prompt to decide what it's going to generate. Now, this is really important because um LLMs have um kind of cut

off in their training data, which means if you're working on a really brand new library, there's a good chance it's not in the LLM's training data, which means it's not going to be able to help you. And if it does, it's probably hallucinating. Um so, what you can do is you can provide context of a directory, which might be the repo you've checked out. And I I've

done this uh last year with um a new Reddius actually it's not a reddis valky. So valky is the open source fork of reddis um and they have a new client glide client um but there's it's it's kind of brand brand new and so when I asked the LLM to create an example client library for me uh for my sorry to update my existing application which was

using the old way of connecting to valky using the reddis client. It didn't know how to do it. So I had to fork the um uh provide context to the directory of the new library and then it was able to build the code from that. So context is your friend but again too much is not always the best. The temptation as developers is to say take it

all right use it all. Uh and um the problem is that if you do that you won't necessarily separate what you want it to do from from everything else. Um and the final thing about providing um or helps uh define a good prompt is uh providing examples of both inputs and outputs. This is really important especially for doing APIs, right? Um specify what you want or expect

as inputs to the API and then what you're going to return and provide a good examples. If you're wanting to um ask it to write code, you can for example say for every function I want a dock string. I want variables defined in this font uh camel case or whatever your your standard is. Maybe even provide a sample function saying I want them to kind of look

like this. And then the LM should respect that and then start creating code that way. Um and again the thing you kind of want to avoid is um the inputs and outputs do have to be uh specific and detailed enough so that it can respect them. Now um actually I'm not sure that's clear actually. I'm sure it's a bit fuzzy. Uh see if I can Can I

make that bigger? Nope. I cannot make that bigger. Um uh so yeah. So some examples. Okay. So as a prompt, one prompt might be how do I deploy a container on AWS? That's a very poor um prompt. It's going to give you very uh I guess non-deterministic output. It's going to give you very variable. every time you run it, it's you're going to get a different answer.

Whereas the second one, you're providing a lot more information. Uh, and that's going to give you a much more narrow, focused, more specific response. Um, one of the a good example of of what a a kind of a detailed context um, you might want to put together is something like this. Put business context. Um, so this is the awareness piece, the technical requirements, which is your scaffolding.

um any specific request you want to do in this particular prompt and then it and then details of your inputs and outputs with examples and you could you know use that as a template for all the prompts you're doing and what I have found is if you do this you tend to get pretty consistently good output and whilst the code isn't always the same um it typically

achieves you know everything you want so there is uniformity in kind of the functions it creates the data modules data classes it creates the APIs it generates um and um uh you know it's it's tends to kind of work really well. So let's go back to the IDE. Where we? So you can see it's kind of still Oh, it's actually finished. So first thing, first rule of

using AI coding tools is do not accept the code it gives you. Okay. Um, so I want another kind of straw poll here. Um, the um, you know, you've paid good money for these AI coding tools, right? So, this one I'm using is free, but uh, there's a $19 subscription, which um, if I was paying um, it generates some code for me. Put your hand up if

you think the code it generates is beautifully secure uh, nonbugged code. W two hands. So, you know, I I am actually with you on this. If I'm paying for something, surely surely it's going to give give me good code, right? But sadly, the tears will flow. Um, these do not create good code, right? They have all the flaws of code we create. Um, which means that you

have to implement a trust but verify approach. Now it's very hard because you know here it's generated some code. How can I possibly because it's not actually created the code in my repo yet. This is still somewhere in the uh AI coding tool. So you have to kind of develop a kind of a mental model for how to quickly review code. And so the approach I do

is did it follow what I want uh uh did it follow what I asked it to do in the prompt? Does it does a logic look sound? Is it following some good practices that I'm familiar with? And I kind of try and you go through that process because it's kind of like light enough that I can do it quickly. Um, and I will go through this based

on my knowledge of the programming language and say, you know what, this looks that looks okay. That okay. That looks all right. So, I'm going to say, you know what, I'm going to give it feedback. That looks okay. And I'm I'm going to accept the changes. So now I've got code in my repo that's been created by the AI tool. Now interesting to see if this one

is finished. Oh no, it's not finished because it was asking me to do something, right? I'll leave that running. Okay, so we now have code. But does it actually run? Which is the question. So let's actually open a terminal window. Create And this is where I might need the collective knowledge and wisdom of everyone here to help me debug this application if it doesn't work. Now, you

might have noticed actually when I'm typing away, you can see this the kind of I'm using that Q in the command line, it actually is working on the command tools as well. So, you'll see the box that pops up, but it's also doing autocomplete. So, it knows what I want to do before I actually know it. It's quite quite a nice little tool to help you do

type in less. Now, um it hasn't doesn't hasn't created a requirements file for me. So, um I'm going to have to uh that looks probably about right for this project. Now, sometimes when you run this, it will generate a requirements uh text file. um I tend to um uh delete it, right? And the reason for that um is that quite often these LLMs create libraries based on

what they want and what they know, but they're old versions of libraries. And so you get into a situation where you have this kind of echo chamber when you're using AI coding tools in that they will like to use and stay with the things they really like. So imagine you're, you know, maybe as developers, we have our own versions of frameworks we like, right? And LM's the

same. But with Flask, it always uses like a 2x version, not a 3x version. I don't like that. So now we could try running the application. And wow, it works potentially first time. That's a first. I shouldn't sound so surprised. Let's see if it actually works. Look at that. It didn't work. But that's okay because I've got a feeling that the reason why it didn't work is

because the database hasn't been initialized. Oh, no, it has been initialized. Okay, not a problem. So, this is where um I really like having the um kind of CLI tool. So, I could use the um uh kind of the chat to introspect on the project. So, actually we can do that, right? Um and I can show you the context. So if I use the at sign and

again all all the different AI coding tools use different. I can specify either the entire code that's in this project uh or I can specify a directory. I can say um when I open up the homepage generates an error. Okay. So now I need to get the error. Oop. Come on. Ah, actually maybe easier to do it on if I do it on Okay. And we'll see

what it gives gives me. But I'm not I probably won't even um uh follow the follow this. I'll probably use the command line to fix it. Okay. So you can see what it's doing is this is that this is now a different flow. We've gone from the agent way of doing it to the agentic which is basically now kind of thinking out loud. Um and I walk

me through what it's basically thinking. It's found the issue um because you initialize flash login with that uh but haven't defined the loader function which is actually a common this is a common what you find again when you're using these tools with your favorite libraries they often make repeatable uh mistakes. So the user login for flask is one common one. database uh not initializing is another um

import uh sort of circular imports is another one so we can see basically the code it's changed how it's changed that um now um I want to talk about vibe coding very briefly okay versus chop so vibe coding everyone's probably heard of vibe coding right so vibe coding is not what I've showed you today vibe coding is literally you have no context no scaffolding no structure you

give it prompt. It just does stuff stuff from you. Chop, which is chat orientated programming, is where you define context, you define constraints, you narrow down what you want it to create. So what this is more more like chop programming rather than vibe programming just in case you haven't heard of the chop one. So if we try running it again, see if that actually works this time.

And now we can log in. But we need to register first Rick. And we now have our fact checker. Let's add uh a category. Let's create a new fact. Dev Days is awesome. Create fact. Let's view details. Vote as fact because I think we can all agree. Round of applause for the for for dev day. I think got to say I go to a lot of conferences,

right? But I can't think of many conferences where you have comfortable seats, amazing big screens. Uh so thumbs up from from from me. So you can see this this basic application works, right? So it looks it looks good, right? And um in I don't know how long we've taken so far, but in not that much time, you've got some working code. But we're not done yet. Okay?

Because as I mentioned before, um the code that these things create isn't secure. So whenever you're using um these tools, you need to make sure that you do some you use your own um security tools to scan that. So um this AI tool has got such a tool called review. But before actually before I do that, before we use that um what I need do is first

of all touch dot ignore get and what I need to do is I need to add uh get ignore so that to ignore for the review file to ignore things like the virtual python directory otherwise I'm going to get millions of false positives um so add python stuff to this ignore file so what I'm using there is I'm using the in context um uh for in sorry

in uh inline online editing capability of this AI coding assistant. So what you'll find is that um the the tools the AI tools they work in files you're editing within the chat interface or within gender. So basically they're kind of embedded in across all the the way that the ID works. So now I can just do / review uh and I can say review the workspace uh

and what it's now going to do is it's going to take the stuff except that what I've defined in the git ignore um and it's going to run a bunch of five um security um uh stroke quality tests. So, SAT. Uh, so I can't remember what that stands for, but it's looking for things like, you know, um, memory leaks, uh, SQL injections, cross- sight scripting. Um, it's

going to look for secrets vulnerability. Have you defined or hard-coded secrets? It's going to look for best practices. Are you implementing coding best practices? Um, and it's also going to look for supply chain issues. So, are you using known versions of vulnerable libraries? Okay. Um now obviously you know if you if you're in your own organization you would use your own tool uh to do this but

the important thing is that what we want to do nope is we want to make sure that we are um before we commit this code and shift left we want to make sure that we've reduced as many issues as possible. Now we can see that um it's come up with a number of issues. Okay, which makes me sad, but then I'm happy because I've now got them

listed. So, I'll deal with a critical one. Okay, if I click on it, it takes me to the code. Um, and for any of the issues I've got, I can zoom into it. Actually, let's change that. Um, I can zoom into the issue. And what it's going to do, it's going to generate a fix automatically for me. Um, and it's going to work away create some code.

Um, and um, whilst it's doing that, I could ask it to explain what this is CW is if I want more issues. Um, now I knew this was going to happen because it's not it's not the the smartest uh uh sort of tool. Um, so it's basically saying that in order to get rid of this problem, we need to get rid of app.run. But if we get

rid of app.run, the application won't run. So, I'm actually going to not accept this, right? It's not actually um uh but this actually is what it wants to do. So, let's see if it Let's see if it um cuz it I'm hope Yeah. See what it's not what it's not doing. This is This seems to be a bug, I think, with this version. It does it doesn't

it this bit here is right, but but it's not If I open the diff, what it's doing is actually delete. Actually, it's actually deleting the whole thing. Okay, so I'll accept fix. Oh, no, it didn't actually. That's not right. Okay, so let's try if I can paste it. Okay, that's better. Now, so you do have to be wary of the kind of the kind of the guidance

it gives in same with all LLM tools, right? Um, but you can see now that I've the issues gone here and I can go I'm not going to go through all of them, but I want to give you kind of like a sense of, you know, you would use a tool, whichever tool you have to work through the coding issues like you normally would. Um, okay. Right.

So, how much time I've got? I've got not much time left. So, um, now we're not we're not completely done yet. Right. So, where let's have a look. Just minimize the what I did before here. So I um when I ran this before I generated a new prompt actually where I should show prompt. No, it's not that one. It's here. Okay. Right. Okay. So, um the next

step, okay, would now that I've got some working code, the working code is fine for dev, but it's not suitable for um shipping, right? If I if I run a containerized system, I want to basically do stuff like build, you know, package it up to run a different runtime like Unicorn, um make sure it builds a Docker file, expose the the database connection, um because at the

moment it's using SQLite locally. Um, so I would use a prompt like this. Now, this takes a bit longer. So, I ran it I ran it um earlier on today and and I run it through the command line. And we can see here basically it's got to a situation where if I actually go to the project uh where is the code? Let's open a new window. Uh

dev day Uh fact checker fact checker Okay. And so this is this is kind of like the version I did before, but this has actually got the shipping code, right? So it created a Docker file for me and this is all created by the um the CLI AI coding assistant. It's created a script so I can run it locally. It's run uh it's it's created a a

prod one and I can actually run this. So let's do run unicorn. It should work. Oh uh why is it not working? Can't connect. That's interesting. Oh, I know why. It's because I've already got it Um, I ran it before. So, if I run the browser on uh 1278,000, it should be up and running. Yeah. So, let's log in and I did a slightly different one basically.

So, this is the same. So this is again different code base because I run it earlier but now this is running on a container uh via gonicorn running on I've got a local uh postgress uh container running here uh and I can package that up now. I could deploy it onto my favorite e um uh container service uh and just make sure it's got connectivity to the

database and I'm good to go. So um that's pretty much it. Um I think I've got five minutes left. Um is there anything else I need to cover before? Um, no. I think that's pretty much it. Actually, there. Let me share. Actually, there's one more thing do. So, no, that's not the one. Okay. So, I do have some stuff to you. Okay. Right. So, I do have

more than one slide actually. So, um, the stuff I've showed you, everything from the point of view of best practices, context, file, scaffolding, um, I put together in two workshops. Okay, they're on GitHub. Um, you can either use the um Amazon Q um tool to use to use this completely free um using something called a build ID or you can use your own. I've tried it with

cursor. I've tried it with Klein. It works with both of them. Um uh so you can you can um uh try those. Um I've also got basically summary of the good prompt design here uh which I talked about um which you can get access if you uh access that QR link link. It's going to give you um a link to those resources. Um it's I think a

short survey of five questions uh where I ask you for some feedback uh and then you'll get the those resources. Uh so I think with that thank you very much for your time. I hope um this talk has been informative. I hope that um you've learned something about how you can use AI coding tools um to do whatever development kind you do that you've taken a better

understanding of how context make matters and how you can use it to shape the output you've got. Um and uh with that I've got um time for hopefully some questions. Well, thank you. So that was really helpful. Any questions from the audience? We've got like five minutes for Okay, there's this one on the screen. So, is it necessary to describe new features of the project in Markdown

to give even more context? So, um when you say new features, I'm assuming you've got an existing codebase and you want to add new features. Is that right? Whoever wrote that. Yes. I can't hear. Yeah. Okay. So, the strategy for when you're working with existing codebase is to what what I found has worked is to try and and define within that context the the key things it

needs to know about the codebase. So which um which directories contain for example uh the right libraries or imports you want it to use. So you have to kind of like guide it it to look in certain spaces. So that's what I found worked. um if you just don't do that. Okay. Um it does normally do a good job at working it out but it's variable. So

the more you can help it from the point of you understand what the integration points with that existing code base are the better you are going to have. So yeah you you'd put that into the the markdown document. So what will happen to junior developers if senior developers with AI agents can do more faster and for an additional amount of money let's say $50 per month. So

um I I don't I can't see the future. Okay. Um but what I can what I can see is junior developers who are using these tools. Um and I think well I mean I it's not only a sample, right? But I see junior developers enthusiastically using these tools um maybe more aggressively than maybe senior devs do. So that first of all um gives them an advantage. They're

more familiar with and and they're getting to learn how to use these tools effectively. Um now junior devs are also using it to help them go get past problems that ordinarily they would work through with a senior dev, right? But now they actually use the tools to ask questions to troubleshoot. And they're pretty good at doing that. Okay. In fact, actually for learning, imagine you've got you're

learning, you've got like a lab you're doing and you get stuck. Normally, you have to go to the teacher and say, "Look, I'm stuck. I don't know how to do this." Maybe the the the the crib sheets you've got don't quite work. And provide you with um the enough information to solve it. Well, LM's now can help you as a student um get past those. You can

actually accelerate your learning through using those. And that's what I find a lot of junior devs are now beginning to do. And so their their learning is being accelerated because they no longer need those senior devs as much other than for contextual awareness. Why did we build this this way? Well, you know, gray beards come out. Oh, we did it this way because of that, right? Um,

so you so and that can be easily documented, right, in a context file. So I don't know what the what the future is, but I do believe that junior devs have some advantages here. It's not all doom and gloom for junior devs. So how would it I assume that relates to agents deal with the requirement changes and how flexible or dynamic the code currently is. Yeah. So

that's that's interesting. So good example which I've I I'm I'm going to be doing in November at the the data Europe. Imagine you got that code base and suddenly the data model changes, right? Common common requirement. Okay. So it's very simple. you change the data model um you can ask the agents then change and re refactor the code and it does it really really well um and

vice versa you can actually ask it to add new features in the application and update the data model um so I found it works reasonably well as long as the requirement and change is small enough um to be focused um I have done things like I've taken uh old six-year PHP project that had been abandoned a Reddit clone and I um QCLI in this instance to refactor

it to to Python. 45 minutes later I had a fully functioning application that was migrated from my SQL to Postgress. So it can do really kind of like quite um sort of sort of uh wider things as well. So I find it normally works pretty well. Okay. Well, that's about it for the time that we currently have. So So that one use is Sonic 37 is what

it uses. Another great hand for Ricardo. Thank

From event

DevDays Europe 2025

20 May 2025 – 23 May 2025

All event videos
Back to Watch