AI Can be Helpful
It was in my most recent project, Foodie Roller, I started using the Gemini Android Studio API to help with my development. With all of my recent roles being in Android I had fallen on the wayside with my iOS development. Trying to launch Foodie Roller as a Kotlin Multiplatform app became difficult when it came to the SwiftUI part with myself being so out of practice with it. Pointing Gemini at building the SwiftUI part actually did a great job of mirroring the painstaking layouts I'd made for Android, and making those layouts feel like they belonged iOS. It cut down my workload quite a bit in doing so, and freed me up to only have to tweak the layouts slightly where they needed to be more iOS than Android.
AI Can Also Be Horrible
After my praises for Gemini handling the SwiftUI part of Foodie Roller, you are probably expecting me to continue lauding it for the other aspects of Foodie Roller. I will not be doing that. For just as great as Gemini was mirroring the UIs to each other, Gemini was just as terrible in other aspects of development. Some of these are my fault for not being as clear as I should have been in prompts, and others are just that AI in general does and cannot think like a human.
I would say the most painful case of me not being clear with Gemini came in the form of building the local storage for users' allergens and dietary restrictions. On Android I had already developed this using the Room library. When I pointed Gemini to do the same on iOS I assumed, wrongly, that it would see the Room implementation and proceed doing Core Data on iOS. Instead, Gemini went ahead and started implementing a SQL Kotlin Multiplatform library to handle both platforms completely ignoring the already implemented Room storage. By the time I caught the issue it was a mess of frankensteined pieces pulled from the Room implementation on the KMP implementation that didn't work on either platform. I ended up having to rollback all changes made and direct it to specifically use Core Data on iOS and leave Android alone.
That time that I was most flabbergasted and frustrated by Gemini just being plain stupid came when I was turning Foodie Roller into a Kotlin Multiplatform project from an originally Android project. I tried to leverage Gemini to do the migration for me. Should seem simple enough to only be moving files around, and adding the shared requirements. By the time it had finished the migration all my Android Composables had vanished, and were replaced by just enough generic Composables to get the app running. Again, I had to roll back the Android specific files to retrieve everything that had been lost as Gemini was not able to restore them after asking it to.
AI is Only a Tool
These experiences are not unique to Gemini. I have had these instances with Cursor and Claude.
Once Cursor decided that an Android feature should be removed just to get rid of an embedded icon. A feature that had to be turned on and implemented before it was usable, and therefore a clearly wanted feature.
Claude once decided to go gallivanting around a project changing things when I had given it a specific file to work in.
AI is only as smart as the person controlling it. Just as a hammer is only as forceful as the person swinging it. We need to be mindful in our usages of AI, and be smart knowing when and where to use it.