# AI Development with Kiro

Anyone who has been writing any kind of code in the last number of years has undoubtedly interacted with AI coding assistants to some extent or another. These coding assistants have been around for a while, I remember using the GitHub assistant early on. Back in 2022, we started playing around internally at AWS with the product that became Code Whisperer, then rebranded to Q Developer ad now known as Amazon Kiro.

Code Whisperer started life as the typical coding agent. I type a comment into my code editor like:

```csharp
// create a function to calculate the area of a circle
```

I then hit the enter button (hopefully) or a hotkey sequence, and the AI Coding agent will go off and figure out hot to complete the task. This was a tremendous help as you didn't have to go look up specific libraries and semantics to write the function. You focused on the important aspects of what you were accomplishing and the AI Coding Assitant did the repetitive research for you.

These auto assistants were like nuclear-powered auto-complete.

## Developer Impact

As these assistants gained more and more usage, the question was asked... what does this mean for developers? Does this mean that developers are obsolete? The answer was "Of course not. " these were tools that helped developers to increase productivity and accuracy much like code completion did before.

A bad developer who relied on AI coding tools, will still be a bad developer who does bad development work faster. (Not a good thing.) Average developers can get code created for them; they then easily change that code to make sure it is fit for purpose. Superstar developers are still the ones that solve the really challenging issues that other developers, with or without AI coding assistants can not solve.

## How is Kiro different?

Kiro is VERY different from these AI coding assistants because Kiro isn't just about helping you to create code snippets. Kiro sits outside of your development project and, in theory, writes entire applications for you, by you describing what you want to accomplish.

Skeptical? Yeh so was I... so I put Kiro to the test.

## The test: Have Kiro build an app.

I decided to give Kiro a test. However I was a bit of a jerk...

To start with I am running Kiro on a Mac. So I told Kiro I wanted it to create a .NET Framework 4.8 application. Now, If you are a .NET developer you know that .NET Framework 4.8 is old... it was released in 2019. While technically it is still supported and will be "indefinitely" there really isn't much, or shouldn't be, any active development using .NET Framework 4.8. Microsoft isn't developing it any further. On top of that .NET Framework is Windows Only and can't be installed on a Mac at all.

Yes, I told Kiro to create an app that could not be built on my laptop... told you I was a jerk... :-)

I told Kiro I wanted an ASP .NET Framework 4.8 application, using the MVC Template. I told it I wanted to create an eCommerce website selling mystical creatures such as Dragons, Giants and Pixies. I wanted it to use a local database that gets rebuilt every time the application is loaded. (Because it's for testing only) I did add a few more comments, But I can't recall. And then I sent Kiro off on it's way fully expecting Kiro to utterly fail.

Kiro built the app...

Now the problem with building a .NET Framework application on your Mac, is that you have no way to run it.

So I copied all the source code into a new CodeCommit repository in my AWS account. Then I told Kiro:

```plaintext
Create a CDK Project that will allow me to deploy a full CI/CD pipeline for my project. This will retrieve the source code from my CodeCommit repository "MythicForge" in my account, build the project in CodeBuild and then publish the project to AWS Beanstalk. Keep in mind that this application uses ASP .NET and .NET Framework so it requires windows underlying instances. For the CDK project use C# as the language.
```

Kiro then went off, and validated that I had the required tools installed on my machine such as the CDK CLI, and the DotNet (Non framework) installation. It then built a new CDK Project and added all of the elements necessary to deploy my project. Finally Kiro created a ReadMe file with the instructions for deploying the solution.

## This is where things went wrong...

Ok, so far I was really impressed by Kiro. So I decided to just deploy what it had created and see how things worked out... it didn't go well. The CDK deploy failed initially because I hadn't performed the CDK Bootstrap command. (My fault) Then when I did, the CDK deploy failed as the Cloud Formation ran.

Curiouse I said to Kiro

```plaintext
The deployment failed with the error "xxxxx" 
```

Kiro gave me suggestions on how to fix the issue, which I told Kiro to apply to the solution.

Being a jerk again I basically told Kiro to go fix it...

```plaintext
Rebuild, Synth and then deploy the solution. Validate that the deployment works correctly and that the application is functional.
```

What followed was a process where Kiro would do a deployment of the solution through the CI/CD pipeline. Then wait for the deployment to complete and then check the web page to make sure it came up correctly. As each deployment met with issues, Kiro would check the deployment, read the errors, and then make further changes. At one point when the application was having error messages, it pushed a change turning off custom errors, to review the stack dump, then used that to find what needed to be fixed and then moved on.

I'm not going to say that this was a quick process, especially since I was running it on the background while working on real work. However what Kiro ended up with was really surprising to me:

![](https://cdn.hashnode.com/uploads/covers/63780b551c7f8b86d18f6c0c/a7188117-406c-4def-8288-5385abd5d523.png align="center")

This site was created without a single line of manually written code, on a laptop that could not build the application. It was then deployed, hands free into AWS. Not only did I not write a single line of code, but I also did not do any configuration of my AWS Account.

## Impressed? I am...

My verdict, I am impressed. No I don't think Kiro is going to eliminate programmers, but I do think Kiro can help get more productive work out of programmers who have less of the plumbing to worry about.

Programmers are still required. Kiro will get you to a starting point; Kiro can help iterate your design. You still need a programmer to review things. You still want a developer working on the nuances of the development. You still want someone testing your application and documenting the results.

## So why did I do this?

So why on earth did I have Kiro write an obsolete application on .NET Framework? Well I did it to give me a basis for looking at another AWS AI-based tool, Amazon Transform, and help to modernize that application. But that's a story for another blog.
