I looked at the tasks of previous 3 months, and most of them can be divided into 3 catalogs:
1. Scoping tickets — gathering requirements. We don’t have any AI chatbots so I don’t know how AI fairs. However, this is also the least interesting and most frustrating part of the work, so ironically I’d rather AI takes over.
2. Small new features or incremental improvements on old features — arguably AI can perform pretty much all of the tasks in this catalog. Some of my colleagues are literally checking in vibe coded PR without any review, and so far we have been fine. I still code by hand sometimes just because I like it. But half of my code is done by AI nowadays.
3. Debugging issues. There are two types of issues, business logic issues or system issues. The first type is boring and frustrating because it usually ends up with clarifying requirements with humans. AI is surprisingly good at pointing out where the issues could be. The second type is more interesting, e.g. Spark issues. AI is way better than anyone in the team for this type of issues, probably because there are so much similar problems in the training material. I’d read through pages after pages of system logs, just for fun, but sometimes I still needed AI for a quick diagnose.
I don’t see AI replacing myself ATM, but I do think it is very likely that companies will no longer need this many programmers in the near future. I also see that smaller companies, like ours, will no longer hire junior programmers (we haven’t for two years, and we have 250+ people so not that small).
The reason IMO is that true software engineering hasn’t been about producing code. It’s about solving problems by building maintainable systems. The best software engineers don’t only build for the feature, they build for the extensibility, maintainability, and scalability of the feature. That is the art of engineering software that I think we can still take pride in even during this AI era.