I’ve written a lot of software. Mostly small cli tools and I tried vibecoding on and off. It’s bad.
maintaining a fully vibe-coded project is painful and I have yet to have a project I haven’t trashed.
For some reason AI loves to write verbose redundant code with syntactic sugar that’s hard to parse and harder to optimise. I personally write very terse code. As an example.
A traditional bash shell if statement:
if [ "$x" -eq 1 ]; then
echo "one"
else
echo "invalid"
fi
Because the logic is simple I would write this as:
[ "$x" -eq 1 ] && echo "one"
[ "$x" -ne 1 ] && echo "invalid"
If I ask AI to write me any sort of looping logic or state-based logic, it will create a whole mess using tons of syntax shortcuts, complex redirect logic, subshells etc.
AI doesn’t know when a tool is appropriate or not and will intentionally create hard to follow logic.
Just as a test I prompted an AI:
write a bash snippet that takes an argument and runs that argument on the server, a requirement is that the command must not be quoted because I need to be able to use quotes in the command. for ex.
./script echo “an unquoted command that need to pass quotes”
This is the script it wrote:
#!/bin/bash
# Check if at least two arguments are provided: server and command
if [ $# -lt 2 ]; then
echo "Usage: $0 <server-address> <command-to-run>"
exit 1
fi
server="$1"
shift # Remove the first argument (server) so $@ contains the command and its args
# Run the entire remaining command on the remote server
ssh "$server" "$@"
It did an ok job, since it’s a simple request but this could have been leaner, used a more portable shebang and followed my instructions:
ssh "user@server" "$@"
I would have accepted their snippet for a small tool but I asked for a snippet. This could be part of a larger project and I didn’t ask for argument handling, help dialog or exit behavior.