To use or not to use AI
I’ve been using AI or, in more specific terms, LLMs for a while now. I think it’s time to write a post about it like everyone else has.
LLMs are good for what they are. It’s never a question about their use but how to use them responsibly.
That’s the crux of the opinion I have formed over time. Any tool use, be it physical or not, is an application of what you know. If you use any tool without the foundational knowledge of how to use it — or of the thing you are applying it to — you’ll get less desirable outcomes.
Any developer that uses LLMs will only apply what they know. Of course, they will know what their target objectives are and ask; however, the “knowhow” will greatly influence the output. I’ve seen LLMs output walls of code without organization or naive tests that don’t make sense. It will achieve the target objective but it’s not going to be robust enough.
Like any form of intelligence, it’s not perfect. It can have biases but at least you can argue with it (though it can be infuriating sometimes). It can help you learn if only you don’t get lazy. We are humans that learn by doing. There’s a reason we call something muscle memory and why we call some people armchair theorists. They don’t have the muscle to exercise their knowledge.
LLMs and AI are great enablers as long as you use them properly. I was skeptical of their past capabilities but not anymore given their great progress. I can spin up investigations of the codebase in parallel with my directions and review them afterwards. I can also ask them to review my work for things I missed or for deterministic checks. They are far better at analyzing text than at generating it.
Overall, using them is a very positive experience for me. I feel I can do anything with them but at the same time feel frustrated in using them. It’s just a matter of perspective and personality I think. As long as we use them not to shortcut knowledge but enable it, people will greatly benefit from them.