back to index

Vibe Coding at Scale: Customizing AI Assistants for Enterprise Environments - Harald Kirshner,


Whisper Transcript | Transcript Only Page

00:00:00.000 | I'm going to dive right in. No introductions. If you want to follow along, get out your VS Code,
00:00:20.080 | some of the things I'm showing are VS Code insiders. Who's an insiders user? Anybody?
00:00:25.200 | I'm going to explain it. Insiders is our pre-release that's built basically by whatever the team
00:00:31.780 | landed the day before. It's going to release actually twice a day. And it has all the latest
00:00:38.200 | things working on. VS Code otherwise releases on a monthly basis. The next release is coming
00:00:42.340 | up next week on the 11th. Who has done Vibe coding? Anybody? Some. Some. Who has negative
00:00:54.800 | feelings about Vibe coding? Okay. So, yeah. We want to fully give in to the
00:01:01.480 | Vibes in this presentation. It's going to be a lot of screenshotable slides to bring home
00:01:06.100 | to your team. So get your phones out now. We're going to embrace the exponentials and forget
00:01:10.920 | that Code even insists how Andre Kaparthi created that Vibe coding idea. So, Vibe coding in itself
00:01:18.140 | And why it has these negative connotations. It starts in this fun chaos mode. I think it's
00:01:23.780 | part of the journey of what I'm presenting, looking at the clock in 13 minutes and 40 seconds,
00:01:28.820 | is how we get to this other side of professional Zen vibes. And to break it down a bit, this initial
00:01:36.140 | Vibe coding, what you see most people do on YouTube when they work on websites and ship them to production,
00:01:43.140 | and then wonder why everything is slowly falling apart and their bills go up. That's the Yolo
00:01:49.620 | Vibe coding and not meant to ship to production. It's about speed, instant gratification, there's
00:01:55.260 | creativity in there. And it's really about this fast learning. Hopefully I can highlight that.
00:01:59.860 | Then next -- and these are all made up terms. This is an ever evolving space. You can find -- if you have better
00:02:06.900 | words, please bring them to me. But structured vibes brings guardrails to how these things actually act.
00:02:13.380 | And if you have an LM in this first space, it will just do creative things. Guardrails added to -- enter the state of maintainability and balance it to bring you some more sustainable code in the end.
00:02:25.380 | Yolo vibes are not meant to be used in the long term. Structured vibes are where you bring
00:02:31.860 | actually that enterprise state in the end that somebody you feel comfortable handing it over.
00:02:36.660 | And lastly, we have the spectrum and vibes where I think most of you probably want to end up with. And that's where
00:02:43.860 | vibes -- the idea of Vibe coding scales up to large code bases with scale and reliability and really
00:02:51.460 | that velocity of everybody feeling the vibes and generating code, but in a generating code in a way that fits into the code base.
00:02:58.340 | So quick Yolo outliner. As Kaparthi termed it, it's all about the outcomes. You don't look at code. You
00:03:08.340 | iterate using language. Best even talk to the AI. Then auto accepting is really part of it. You talk to the AI,
00:03:16.820 | you look at what it creates, and all the rest just lands. If it ever goes wrong, you just reset everything
00:03:22.740 | completely. You throw out the code or you undo and you keep going. And there is a place for Yolo vibe
00:03:29.060 | coding. It's not just weird weekend things. It's rapid prototyping and proof of concept. You just want to explore.
00:03:36.020 | It's where creativity really shines and you can focus on the outcome. And that's the thing where
00:03:41.220 | vibe coding really shines. And while you do it, you can learn. You can try something in a rust code base.
00:03:46.260 | Make a rust game. Make a rust frogger. Try a different stack. Make a neon flickering rust frogger.
00:03:54.500 | Just -- and then look at the code in the end. Like, how do games work actually in rust? Have AI explain the
00:04:00.340 | code back to you. And lastly, personal projects is where we see it most. Just over the weekend,
00:04:06.420 | my kids needed an app to do X. And we build it together. And now we have an app to do X. And I'm
00:04:11.300 | not shipping it to production. But it's my app. So we can do some demos. I think the easiest way to show it
00:04:18.500 | off. Just open a new VS code window. This is my insiders. If you haven't done it -- oh, I have an update
00:04:24.100 | pending. Oh, this is insider. So it's every day something new. I'm excited. But not updating now.
00:04:28.820 | Okay. In -- so make sure you're in agent mode, which right now isn't yet the default. We're working on that.
00:04:35.860 | Same problem, I guess. Auto sharing to -- don't monitor. Change.
00:04:49.300 | Entire screen. Ta-da! Okay. Thank you. Yeah. So let's start with the -- don't care about the code.
00:05:01.860 | And one way to do this is auto-approved. If you look at chat auto-approved, it's a -- with caveats,
00:05:09.620 | cool option. And you can enable it also for, for example, your workspace only. But auto-approved
00:05:16.020 | allows you to avoid all these confirmation buttons that the chat otherwise annoyingly throws at you
00:05:21.140 | while you're trying to vibe. So while we're here, let's start this -- you see this little microphone
00:05:27.940 | button down here. And that is built into this code. It's actually a local model. Nothing leaves your
00:05:33.620 | machine. And it's really -- it's a great way to just chat with the AI. I -- you can actually send it back
00:05:39.780 | that it responds everything back to you. Let's try -- let's make our first app and then go back to the
00:05:46.020 | slides because we want to just make copilot vibe what we ask for. So, actually, the shortcut is for me is
00:05:53.700 | command I. I like that one. Let's make an app for water hydration tracking in React and Byte. It should
00:06:01.860 | use Material UI and follow nice Apple-esque design principles. So, yeah. Thank you.
00:06:08.020 | Okay. And off it goes. So, what you see now first is actually we have a create new workspace tool which
00:06:16.820 | let's you vibe code a little bit easier. It's -- let's do my --
00:06:22.500 | Is this just copilot or is this something like that?
00:06:24.980 | Just copilot. Yeah. The copilot agent load. It comes with that tool. So, demo one, two, whatever.
00:06:32.100 | It's vibe coding. So, we don't care about the code. But it has to be somewhere.
00:06:37.940 | Okay. Now, because we have the repo, our workspace, it will just continue. And now it will actually
00:06:45.300 | just see how it starts it off. Created React, workspace, water hydration tracking app, material UI,
00:06:50.740 | Apple-esque design. It made a plan in the background. And now it shares the hybrid plan with us. And it
00:06:56.580 | goes off. So, we can go back to the slides and not care about the code.
00:07:02.660 | NPM install. NPM dev. So, I trust it. It will do stuff.
00:07:05.380 | And the model used is the one that was at the bottom?
00:07:08.980 | Yes. Yeah. So, this is using Cloudson 4, which I found really good at UI. I actually ran the same
00:07:14.580 | demo with different models. 4.1 makes it look very wireframe-y. 2.5 Pro has an interesting design sense
00:07:21.220 | where it always looks somewhat different. And Cloudsonnet makes it always look like a blockchain landing page,
00:07:27.060 | if you make it wrong. So, lots of gradients and dark and big letters. So, to kind of -- as we -- seven minutes.
00:07:36.180 | So, we have YOLO toolbox. There's a new workspace flow that's really interesting. So, if you haven't
00:07:41.940 | tried it out yet. It can also trip you off if you ask for something, a new app and an existing project.
00:07:47.460 | Make sure you -- if you hit that. Voice dictation built in. Visual context. I might get to showing
00:07:53.220 | around. So, once it actually starts finishing, it will open up the page in browser preview in VS Code.
00:07:58.420 | And I can actually select specific elements. And then the auto accept option. There's another auto
00:08:03.780 | accept after delay if you don't have that on in VS Code. There's an autosave that I really like to drive
00:08:08.660 | any live updates in the background that are running. And the undo and revert I quickly show up here.
00:08:15.220 | If anything goes wrong, there's always these buttons up here for undo and going back.
00:08:20.900 | So, see where it is. Still installing. Beautiful WiFi. Making demos easier.
00:08:27.620 | Yes. Actually, when it -- when this runs and it runs in the terminal commands and the terminal commands
00:08:38.340 | fail, it will actually look at the output. So, if there's any dependencies missing, it will go off and
00:08:43.220 | install them. It's still like chat.cn had some changes in how you install it, for example. It will figure out
00:08:48.740 | because the error messages. Use this package instead, and the next command will use the right.
00:08:52.820 | Yeah, but there are console errors that you don't draw.
00:08:54.420 | Sometimes it will run things in the background terminal, but there's ongoing
00:09:00.100 | fixes to make it basically always find it. Okay. Let's keep going. Next one. While it runs.
00:09:07.460 | It's -- use YOLO VibeCoding. So, really try it out. Go. Embrace the exponentials to build that AI
00:09:15.060 | intuition. Like, what is AI good at? What AI can't do yet? And find that for yourself. Just baseline what
00:09:22.180 | AI can do. And that's where YOLO VibeCoding with, like, a very open canvas and being able to steer AI
00:09:28.180 | is an extremely powerful skill to inform all of other AI usage. Then the second one is using
00:09:34.740 | frameworks. I pick React invite in my demo because it gives a nice grounding and it's something that
00:09:39.220 | hasn't changed in a while. So, that's a good way. If you use any new ones, you want to be more
00:09:44.580 | explicit about how to read the docs and where to find information. And lastly, it's all about iteration.
00:09:50.020 | So, it's a whiteboard. You want to wipe things off completely. You want to start from scratch. You want to
00:09:54.580 | work on specific items. But it's really about, like, having this iterative workflow outlined.
00:09:59.860 | Quick check-in. Still working on some files. Okay. We keep going. So, structured VibeCoding. And that's
00:10:07.700 | where we bring in a template. And that template comes with a consistent tech stack. And that could be
00:10:13.460 | your internal stack. It would be a container that you give to developers. So, if you want to work on UX,
00:10:18.500 | bring this template in and you can just start vibing. That could be even for non-technical people.
00:10:24.500 | Just check out this repo or work from this template on GitHub, open NBS code, engage agent mode in voice
00:10:32.100 | mode and start vibing. But because it's a template, it comes with this consistent tech stack. And it comes
00:10:38.180 | with instructions to guide the copilot flow onto specific conventions that you're running with.
00:10:45.460 | And then, lastly, we want custom tools using MCP and other things to make sure if it needs information or
00:10:51.860 | needs more context. And that's really more reliable and more consistent than YOLO mode. If you ask YOLO mode,
00:10:59.300 | and if it wouldn't have given it material UI, it might have picked any other design framework, it might
00:11:03.620 | have went with Tailwind. So, that allows you to, internally, we use Fluent UI. So, you're going to use
00:11:08.740 | Fluent UI. This is where you get the package and just it's outlined and it's clear. And so, it's really
00:11:14.340 | great for bootstrapping these screenfield projects because you end up with something people can hand over to
00:11:19.140 | engineering. And engineering doesn't say, like, this is totally not what we're doing.
00:11:21.700 | And this is also, it's better at the off mainstream. Like, anything that's not popular, like Spring Boot,
00:11:29.380 | whatever latest version you have that the AI struggles with, you can add more instructions on top that it
00:11:34.340 | gets it right more often. I'm going to show a quick how it looks like. It's still vibing. I think it's mostly
00:11:44.660 | the internet speed here, making it slow. So, let's figure out -- this is a nice repo. It's actually
00:11:49.220 | on the -- on the internet. If you go to GitHub.coms.digitarout. And then I put it up.
00:11:59.220 | I think it's still on there. Frontend Vibes template. So, let's see if I'm in. If you want to take a
00:12:05.220 | screenshot for later -- again? How's the screen sharing working? I don't know. I'm not technical.
00:12:15.780 | It's this entire screen, right? So, okay. Yeah, I think every time I switch back to PowerPoint,
00:12:22.500 | it tries to do the mode screen again. Okay. So, GitHub again. Sharing the vibes here. Two minutes.
00:12:35.460 | Okay. We got good. Yeah. So, that's a nice template. Just going to do a quick roundup. So, one, we have
00:12:40.180 | chat modes. That's what I'm highlighted here on the left. GitHub. folder chat modes. And you can define
00:12:47.060 | already tools. You find what tools are in the mode and what's the system prompt. And then they show up
00:12:53.380 | down here. Actually, you can switch out agent. It's a new agent that's now doing test-driven development
00:12:58.820 | for you. And that description here I wrote in another demo earlier about how to do test-driven development.
00:13:04.740 | I didn't know there's a red, green, and anything else. So, that's up to you how you define that mode.
00:13:10.260 | But this basically now guides it. You have to write tests first. And then you write code and that has to pass.
00:13:16.100 | And only ask only move to writing code after I confirm because I want to review the test. And that's
00:13:20.580 | much easier for review to me. You can also create prompts. And that's a way for your team to create
00:13:26.100 | these reusable tasks that are then used across different iterations. It could be a new landing page
00:13:30.900 | for your design team. Like, we need a new micro landing page. This is how you structure it.
00:13:35.220 | And then you can just create it. And lastly, instructions. Those are new. Those are .github/instructions.
00:13:42.020 | And those can outline what specific parts of the code base do.
00:13:45.140 | So, to go back to the slides. Yeah, the thing again. So, you want to bring in workspace instructions.
00:13:54.420 | There's a good document on VS code documentation on customization. If you want to go deeper, there's
00:13:59.220 | instructions files I showed and prompts. You want to make them dynamic for specific parts of the code base.
00:14:05.140 | And you want to start bringing in MCP. Couldn't show up MCP right now because we're running out of
00:14:08.500 | time. Check out my MCP talk from the MCP track if you want to see some of those demos.
00:14:13.620 | Also, VS code has access to problems and tasks. So, if you have your task runners set up in VS code and
00:14:21.220 | your linters properly, it will actually start fixing code as it makes mistakes, which is a really powerful
00:14:27.140 | context to have for the AI. And lastly, if you haven't found that little sparkle icon and then you commit,
00:14:33.060 | it's really important once you start working and having workable code to keep committing that workable code
00:14:38.580 | so you don't get into weird areas where it worked before and now my Vibe coding broke it. And that's always sad.
00:14:44.180 | So, review is important.
00:14:48.260 | Always says on these instructions are important. Start with errors. Committing is important. So,
00:14:53.140 | commit often. Pause the agent to inspect.
00:14:56.100 | Lastly, in 10 seconds, spec-driven really brings this often repeat idea, which you'll see here as well.
00:15:02.900 | You start with a spec, you make a plan, and then you implement the plan.
00:15:06.260 | And that really brings it up to the large scale. And the features we have here, I showed off.
00:15:11.860 | Prompts, more MCPs, and more task-specific tools that you can bring in.
00:15:17.540 | And we're up. Happy to chat more outside.