This may not be a popular opinion but I’ll say it anyways. I’ve done a lot of this and am sharing anecdotal information.
The claims that AI writes inefficient code may often be right. If and when it’s an observed problem, you can use AI to improve performance.
The claim that AI writes insecure code is probably also correct. You’ll want better safeguards here based on your product. The infrastructure you choose to deploy on can help as well - the LLM can help you design for this.
The claims that AI will delete your database are unlikely and an indication that permissions were too loose. You can also sandbox the code which runs. Again, AI can help you design this.
This is not an endorsement to blindly deploy code you haven’t verified.
My feedback is to be as optimistic as possible. Learn where the edges are. Find ways to patch them systematically. And let your confidence grow or shrink from your own experience.
Congrats and welcome to the wonderful world of ports.
I would say yes, verifying that the code not only does what you expect but also doesn't do anything of the things you do not expect, is the main bottleneck.
That is: do-all-the-things, please, and don't-do-all-the-non-things, as well.
Ideally, one can reason through their application at a high-level and have a "spec" or specification that the LLM can build from and check against.
You can also have the LLM go back through and tell you about any vulnerabilities you need to address before shipping.
I don't know exactly what you are shipping, but in general: never give the LLM root access or command-line access in a deployed app. Give it the minimal permissions necessary to accomplish its work/role. Pin versions [if you're working with version 5, explicitly say that, rather than just using the "latest" one since that's a moving target].
Some things are not obvious until deployed to a live environment, so do thorough testing. You can have an LLM generate test cases and run a "test suite" to check your code does all-the-things and none-of-the-non-things [undesirable outcomes] this way.
But again, when you have many moving gears finally coming together in a product, in a real, online environment, your best bet is doing lots of testing first to give yourself confidence you've caught most of the edge-cases, and that there are no "catastrophic" edge-cases lurking, unaccounted for.
If you still have any specific questions or want to zoom in on any aspect of software creation, please ask us
This may not be a popular opinion but I’ll say it anyways. I’ve done a lot of this and am sharing anecdotal information.
The claims that AI writes inefficient code may often be right. If and when it’s an observed problem, you can use AI to improve performance.
The claim that AI writes insecure code is probably also correct. You’ll want better safeguards here based on your product. The infrastructure you choose to deploy on can help as well - the LLM can help you design for this.
The claims that AI will delete your database are unlikely and an indication that permissions were too loose. You can also sandbox the code which runs. Again, AI can help you design this.
This is not an endorsement to blindly deploy code you haven’t verified.
My feedback is to be as optimistic as possible. Learn where the edges are. Find ways to patch them systematically. And let your confidence grow or shrink from your own experience.
Congrats and welcome to the wonderful world of ports.
I would say yes, verifying that the code not only does what you expect but also doesn't do anything of the things you do not expect, is the main bottleneck.
That is: do-all-the-things, please, and don't-do-all-the-non-things, as well.
Ideally, one can reason through their application at a high-level and have a "spec" or specification that the LLM can build from and check against.
You can also have the LLM go back through and tell you about any vulnerabilities you need to address before shipping.
I don't know exactly what you are shipping, but in general: never give the LLM root access or command-line access in a deployed app. Give it the minimal permissions necessary to accomplish its work/role. Pin versions [if you're working with version 5, explicitly say that, rather than just using the "latest" one since that's a moving target].
Some things are not obvious until deployed to a live environment, so do thorough testing. You can have an LLM generate test cases and run a "test suite" to check your code does all-the-things and none-of-the-non-things [undesirable outcomes] this way.
But again, when you have many moving gears finally coming together in a product, in a real, online environment, your best bet is doing lots of testing first to give yourself confidence you've caught most of the edge-cases, and that there are no "catastrophic" edge-cases lurking, unaccounted for.
If you still have any specific questions or want to zoom in on any aspect of software creation, please ask us