Mohsen Mirhoseini

Senior Android Developer & Team/Tech Lead

Why KotlinConf 2026 Had Mixed Feelings About AI: A Community Pulse Check

If you look at the marketing materials coming out of major tech companies right now, the message around Generative AI is loud and clear: automated tools and autonomous agents are the absolute future of development.

But if you talk to the engineers actually writing and maintaining software every day, the reality is far more nuanced.

At KotlinConf 2026 in Munich, I decided to step away from the keynotes and presentation stages to run a lightning round survey with attendees. I wanted to gather unfiltered experiences from real-world developers, mobile architects, and industry pioneers regarding how tools like Claude Code and GitHub Copilot are genuinely impacting their workflows, testing strategies, and career outlooks.

The insights were incredibly grounded, highlighting a fascinating divide in our community. Here is a breakdown of what developers on the floor are actually seeing.

1. The Ethical and Structural Stance

We started the conversations by sitting down with Jake Wharton, who offered an uncompromising perspective that focused on the wider implications of relying on these models.

Rather than focusing purely on code generation speed, Jake raised vital concerns regarding copyright and licensing:

“All of these world models that people are using are basically built on the largest copyright infringement in the history of the world. They ingest permissibly licensed software and copyleft code, essentially laundering it through the LLM to remove the license terms.”

He also shared a pragmatic warning regarding structural dependency. With platforms experimenting with usage-based billing, sometimes resulting in individual development bills jumping exponentially, engineers risk becoming overly dependent on a toolchain heavily subsidized by temporary venture capital funding. If those subsidies disappear, developers who rely too heavily on them could be left struggling.

2. Daily Workflow Realities

On the other side of the spectrum, many developers on the floor confirmed they are leveraging these tools extensively in their production environments.

For these teams, tools like Claude Code have rapidly become a standard part of the toolkit. Interestingly, some organizations are even experimenting with expanding access to product managers and UI designers to let them contribute minor adjustments within controlled environments.

When asked what they actually value about the tools, the answers focused heavily on bypassing the “blank page problem”:

  • Boilerplate Reduction: Automating predictable structural code setup.
  • Refactoring Aid: Giving broad commands to adjust existing structures into a specific pattern.
  • Initial Research: Speeding up the time it takes to explore foreign codebases or find specific references in vast projects like AOSP.

However, almost every developer using AI daily noted a severe trade-off: maintainability. The generated code quality is frequently messy. When requirements change, developers often find it faster to re-prompt the model entirely rather than trying to manually read, debug, and maintain the code it previously generated.

3. Verification: How Do We Know It’s Right?

This brought us to a critical technical debate: how do you verify automated code? The community at KotlinConf seemed split into distinct camps:

  • Strict TDD: Some senior developers are leaning heavily into Test-Driven Development (TDD). They use the AI primarily to help brainstorm edge cases and generate test suites, then manually curate those tests before letting the AI write the actual implementation.
  • The Pitfalls of Spec-Driven Development (SDD): Another approach discussed on the floor was writing all architectural specifications completely upfront to let the AI build the entire feature from a master blueprint. However, engineers noted that this often mirrors old waterfall project failures. Assuming you can cleanly map out every single edge case in your head beforehand rarely works in practice, and you end up inheriting the same structural mistakes downstream.
  • The “YOLO” Approach: Other engineers candidly admitted to simply deploying the code to see if it runs, relying entirely on rigorous team peer-review and testing pipelines to catch errors downstream.

A key challenge raised with both structured workflows, TDD and SDD, in an AI environment is network latency. Waiting on an LLM to generate or parse massive responses breaks a developer’s rapid, local feedback loop, which is essential to staying in a proper flow state.

4. The Risk to the Team Ecosystem

The most impactful part of the survey didn’t center on lines of code, but on the human health of development teams. Multiple senior engineers noted a dangerous trend in modern hiring:

Many organizations have slowed or stopped hiring junior developers, under the assumption that AI tools can bridge the productivity gap.

This creates a serious bottleneck. Without entry-level roles, companies aren’t training the next generation of engineers who will eventually need the deep domain context to audit these automated systems. Concurrently, senior engineers are facing burnout as their roles transition away from creative problem-solving into a mechanical cycle of continuous prompt auditing and cleanup. As one attendee noted, it can strip the genuine joy and “aha!” moments out of software craftsmanship.

Final Thoughts

Is software engineering a dying profession? The overwhelming consensus from the floor was a clear no.

Just like previous major technological shifts, such as the emergence of the web in the ‘90s, the core skillset isn’t disappearing; it’s evolving. The value of an engineer is shifting farther away from pure syntax writing and moving heavily toward architecture, system verification, and domain expertise.


To hear the full, unedited responses and see the exact conversations from Munich, you can watch the complete video pulse check on YouTube:


How is your team balancing these tools right now? Are you leaning into strict TDD guardrails, or do you share the ethical and long-term concerns raised by Jake? Let’s discuss in the comments.

Why Developers Should Own Their Tests — A Conversation with Vitaly Sharovatov from Qase

Why & How Developers Should Test Applications

Testing is often seen as a secondary concern — something to be handled by QA after the “real work” of development is done. But what if we turned that mindset around? What if developers themselves owned the testing process from the start?

In a recent interview, I had the pleasure of sitting down with Vitaly Sharovatov, Engineering Manager at Qase, to talk about why developers should take testing more seriously — and how tools like Qase (a modern Test Management System) can help streamline that process.

(more…)

The must-have Android Studio plugins

It is crucial to keep in mind that sharing information about the tools we use to simplify our daily lives as a developer is a valuable way to contribute to the Android community. We should aim to make the development process easier for ourselves and others.

(more…)

DevFest is in the air! (DevFest Berlin 2023)

DevFest is a global event organized by Google Developer Groups (GDGs) in various regions and countries worldwide. As per the Google for Developers website, over 500 GDGs will host DevFest events in 2023, covering a range of topics including AI, Android, Cloud, Data, DevOps, Flutter, Go, Kotlin, Firebase, and more. To find a DevFest event near you, simply visit the DevFest website and search by location or date.

(more…)

Maestro, Android Modern UI Testing

Maestro is the simplest and most effective mobile UI testing framework. Maestro is built on learnings from its predecessors (Appium, Espresso, UIAutomator, XCTest) and allows you to easily define and test your Flows.

  • Built-in tolerance to flakiness. UI elements will not always be where you expect them, screen tap will not always go through, etc. Maestro embraces the instability of mobile applications and devices and tries to counter it.
  • Built-in tolerance to delays. No need to pepper your tests with sleep() calls. Maestro knows that it might take time to load the content (i.e. over the network) and automatically waits for it (but no longer than required).
  • Blazingly fast iteration. Tests are interpreted, no need to compile anything. Maestro is able to continuously monitor your test files and rerun them as they change.
  • Declarative yet powerful syntax. Define your tests in a yaml file.
  • Simple setup. Maestro is a single binary that works anywhere.

 In this video, I’ve asked Zhanibek Marshal to join me and share his experience using this framework.



Hope you enjoy and do not forget to follow me on Medium and YouTube to get notified when there is a new topic.

How to make and use BOM (Bill of Materials) dependencies in Android projects

You’ve probably come across the BOM term if you’ve worked with big libraries like Jetpack Compose or Firebase. But what exactly is a BOM dependency? Why is it important? And how can we create our own BOM for our SDKs and their dependencies? Let’s find out.

As an example, we can take a look into the Jetpack Compose BOM dependency’s package contents. For this purpose, we can open Google’s Maven repository and search for it. Inside you can see only a POM file. Let’s see what’s inside.

(more…)