As a Developer and as a human being, it feels important to have a stance, or at least the start of one, regarding AI and myself. (I start with myself as I believe you should have your own affairs in order before you "criticise the world".)
There is an aspect of programming, perhaps to be defined more solidly one day, which should be hard. The impediment to action advances action. This is how we learn.
- AI := Artificial Intelligence
- LLM := Large Language Model
- Vibe Code := To engineer/generate, via an LLM prompt, a coding solution
- I will treat AI as a mostly silent companion Junior Level Developer.
- I will purposefully limit AI tooling within my tools - sometimes even turning it off.
- When coding, I will favor local only, single line completion over live over-the-wire LLM suggestions (which I have disabled).
- I will continue to read the documentation, examples, best practices myself, but augment with AI to help find resources such as API documentation and examples.
- I will ask for syntax in the language I'm using when I'm stumped. (e.g., "What is the SQL command to do such-and-such?")
- I will not assume the answers I recieve are correct or appropriate for the solution I'm working upon, but can help guide me to what I'm trying trying to do.
- I will use it to help generate test cases and test data
- I will use it to help with code reviews, but understand its limits. (It is not able to understand context and the wholeness of the solution across the system, but it can find subtle coding errors.)
- I will avoid having it generate tests (but see the related "I will" above).
- I chose not to "vibe code".
- Clarification: I will on occasion ask for small, 10s of lines or less, solutions to otherwise menial tasks. (e.g., "I want bash commands which do such-and-such within my script") Even so, I tend to re-write them in my own voice.
- I chose to not have it generate large swaths of code. (This probably falls somewhat under "vibe coding" too.)