I honestly don't use it much, but so far, the most productive uses are:
- generate some common structure/algorithm - web app, CLI program, recursive function, etc
- search documentation - I may not know what the function/type is, but I can describe it
- generate documentation - list arguments, return types, etc
But honestly, the time I save there honestly isn't worth fighting with the AI most of the time, so I'll only do it if I'm starting up a big greenfield project and need something up and going quickly. That said, there are some things I refuse to use AI for:
- testing - AI may be able to get high coverage, but I don't think it can produce high quality tests
- business logic - the devil is in the details, and I don't trust AI with details
- producing documentation - developers hate writing documentation, which is precisely why devs should be the ones to do it; if AI could do it, other devs could just use AI to generate it, but good docs will do far more than what AI can intuit