420 karma · joined April 27, 2014
If the code I was writing was, say, small websites all the time for different clients, I can see it being a big improvement. But iterating on a complex existing platform, I’m not so sure that AI will keep the system designed in a maintainable and good way.
But if your experience is with the same sort of code as me, then I may have to re evaluate my judgments.
I've said the same thing as you, that there is a LOT left to be done with current AI capabilities, and we've barely scratched the surface.
- Type of dev work (infra, frontend, backend, etc)
- Programming language
- Level of experience
- Quality expectations of project/work environment
I am playing with Zed now though, and it has a "subtle" mode for suggestions which is great. When I explicitly want to see them, I press option key. Otherwise, I don't see them.
And that's not just because its output is often not the best, but also because by doing it myself it causes me to think deeply about the problem, come up with a better solution that considers edge cases. Furthermore, it gives me knowledge in my head about that project that helps me for the next change.
I see comments here where people seem to have eliminated almost all of their dev work, and it makes me wonder what I'm doing wrong.
Although tbh, even in the worse case I think I am still faster at reviewing than writing. The only difference is though, those reviews will never have had the same depth of thought and consideration as when I write the code myself. So reviews are quicker, but also less thorough/robust than writing for me.
For harder problems, my experience is that it falls over, although I haven't been refining my LLM skills as much as some do. It seems that the bigger the project, the more it integrates with other things, the worse AI is. And moreover, for those tasks it's important for me or a human to do it because (a) we think about edge cases while we work through the problem intellectually, and (b) it gives us a deep understanding of the system.
Only one of these things interests me. The hype of AI is threatening to kill something I actually enjoy doing. If the hype actualises, I'll likely find myself having to do something I don't enjoy. That being said, if programming can be automated, then probably every white collar job is under serious threat.
I don't know if I do the same thing with programming.
The difference here though is that the normal path only provides information about the requester, and not the actual business logic for whether they're authorised. That goes in the database in the form of RLS or other permission checks in stored procedures.
It uses a pattern similar to PostgREST, where there is a local value set with the user ID (e.g., 'set local "request.web.sub" = '{}''). Though there is some trickiness with connection sharing, to ensure that these settings get reset properly.
And to use an example from another commenter here, this means that if there's only 3 rows that should be returned, the database returns just 3 rows, rather than 10,000 that need to be discarded down to 3.
I haven't come up with a good answer regarding protecting which fields can be seen yet.
(this is a question disguised as a statement, since I'm interested in your opinion)
But in defence of those spending hours on forums, sometimes a project is not well documented, and the code isn't easy to read. In those situations though, I'll be browsing their Github issues or contacting them directly.
Often though I find it highly valuable to go read the docs, even if an LLM has given me a working example. Sometimes, I find better ways, warnings, or even information on unrelated things I want to do.