I have recently been coding using Claude Code* in my Java development tasks for few months. I have some general thoughts to share.
Uneven distribution
For sure, we are facing kind of revolution right now. It has been there for few years I guess but it is slowly spreading to all organisations worldwide. As there are ones which are most innovative and the ones which on the opposite side of the spectrum the AI utilization is not even. I can make educated guess, very many of the companies, especially in Europe are still only scratching the surface of AI revolution. In my view the basic is using AI chat abilities only. Writing or pasting questions and getting answers. Most innovative seem to be including AI in the whole process of bringing value to customer: making product plans, suggestions in the field of customer satisfaction, implementation, infrastructure supervision, defect root cause analysis, etc.
Revolution not evolution
It is a revolution as it happens fast and so it brings much uncertainity. There is a big question there all the time which everybody has in his mind, no matter the role, which is still unanswered: how to use this new approach in my job?
From my point of view which is the developer one, the revolution is about completely shifting from implementation to supervision. I am now more like a development manager who says what to do from technical side of things. I am reading the output, giving commands and in general managing the work of my virtual AI employee.
This must be shocking thing for many of senior developers out there. Suddenly, majority of your development skills become irrelevant. That is why I am sure we are going to recognize current time as a new AI era.
How to use AI with production code
While we are adopting to the new development approach, many doubts show up. For me the main one is: to what extent should I be using AI help? There are many options, starting from very specific tasks up to very general:
- write this method for me
- write the class which does this and cooperates with that
- create specific abstraction as a part of the new feature
- create a new feature B similar to feature A
- create new feature C
- create architecture which will solve problem A etc.
For those of you who do not know, Claude Code* is the tool which integrates with your IDE (it also has a basic chat but this is irrelevant) and can read and modify the files on your computer. It can also communicate with MCP servers to extend its functionality, so for example it there is Jira MCP you can instruct it to read and write Jira tickets and if there is Chat MCP you can summarize or read your conversations etc. It is possible to produce the prompt like: "Create the feature basing on the ticket 12345. Divide the work into smaller chunks and write them as subtasks in Jira. Create tests when required. Commit and push when done." This is example of very general task and after waiting for a long time the results are not satisfactory.
(* the tool is just example in the article, there are other ones on the market which have similar functionality and I bet are equally productive, for sure the interesting one is OpenCode which helps to avoid vendor model lock-in)
How should we approach implementation of production code with AI then?
From my observations AI precision is proportional to the simplicity of the task and to the amount of context it has. The more complex the task is the more context it requires and the more time AI will need to complete it. Most importantly, the complexity lowers the factor of human understanding. The more complex the task, the less clear the output is for a developer.
| factor | Simple task | Medium complex task | Complex task |
|---|---|---|---|
| little context | OK | not OK | not OK |
| much context | OK | OK | not OK |
| factor | Simple task | Medium complex task | Complex task |
|---|---|---|---|
| human supervision | easy to review | possible to review | impossible to review |
| time needed | very little | reasonable amount | very much |
What is the context exactly?
This is information about our project: what are the coding standards, what are the coding guidelines, testing guidelines. What is the architecture of the application. How it is built and deployed, etc. Context is the information which every developer should know.
Taking above into consideration, in my opinion one can only do simple tasks with AI if we want to keep human supervision (do we?). I think we as humans should still be able to make a manual PR review for AI work. It keeps us up-to-date with the code and allows the mental model of application no to vanish from our minds. This is important. You could ask "how can we program complex feature then?". The answer is just like it was in manual development era: you need to divide complex task into smaller chunks which are simple tasks. Actually, we can also use AI to create such a plan where work is divided into simple small tasks.
How to use AI for other purposes
I am sure this is not final idea of developing the production code with AI which I stated above but it is getting some shape at least. Using AI for other purposes is a different story to me.
I utilize it to various tasks but I am sure there are many areas I am not aware of.
As of today, besides implementation, the tasks are:
- application log analysis
- generating tests
- generating mermaid diagrams of various entities
- planning tasks
- converting data from one format to another
- analyzing existing code
AI threats
I think we all know AI advantages so I would like to name few threats as well.
- hallucinations - AI can confidently give the false information which is easy to take as the true
- wrong assumptions - AI loves to make assumptions we are not aware of so the remedy is again to provide as much context as possible even when asking simple question and also configure AI not to make them
- feeding laziness - AI can help you everywhere so why not to rely on it all the time ?
- cost skyrocket - I am sure we are still at the stage where vendors are attracting customers to AI by providing free or discounted plans. I am even more sure that this will change in the future. The only remedy is large competition on the market, otherwise we are going to pay more and more every year which will deteriorate the economy worldwide.
- indirect negative impact on the average standard of living - AI is consuming extremly large amount of resources, which rises the cost of water, electricity and computer components worldwide
- AI addiction - we may find ourselves at some point in the future completely addicted to AI services
- vendor lock-in - there will be attempts to prevent customers from changing the AI provider either by using technical means or financial tricks on one hand and squizing the customer financially as much as possible on the other to make a large income - this is the game played by big tech with all the products so AI cannot be the exception
The unknown future
While the revolution means fast pace, until it slows down we are not going to feel comfortable. Nobody actually knows where are we heading to. All the scenarios are on the table right now. As for now it seems we need to adapt quickly and use the new programming paradigm in a sensible way.
Top comments (0)