4 min read

Developers and AI sidekicks

Developers and AI sidekicks
Photo by Eric Krull / Unsplash

Recently, many news sources have been discussing the impact of AI on various industries, with some claiming it signals the end of humanity. This topic has also come up in the field of software development, with tools like GitHub Copilot, Tabnine, and ChatGPT becoming more prevalent.

I have personally tried some of these tools and have found them to be useful in complementing my skills and saving me time. However, these tools can only be effective if used correctly. While there may be some jobs that AI can replace, I don't believe it will completely overtake the software industry. With improvements being made to these tools, I am optimistic that they will become more user-friendly in the future.

💡
The AI tools will reduce the size of the teams by allowing team members to deliver the same or more with fewer people. 

I can see a number of developer tasks could be automated away by some of these tools. On the other hand, it requires an understanding of what you want to build to get the desired outcome. And I know people struggle with drag-and-drop tools to build a simple website. Plus most of those tools are trained on data that is publicly available. Arguably there is much more "bad" than "good" in that data. It will get "smarter" that is for certain. The model will improve and grove. Will it get to the point where it can implement entire features without any bugs? I wonder.

That is why I am referring to these tools as sidekicks. I do believe they speed up a number of our daily tasks. Are they perfect? Not in all scenarios. They're far away from perfect. For now. They can be a great help when having a mental block. Just to use it for rubber ducking. In combination with the knowledge bases we used until now, it is really hard not to come up with a solution. But I also advise caution. They're not perfect. Some answers require a review. You wouldn't just copy the code from StackOverflow and expect it to run? Would you?  

I am still early in evaluating some of them together. I am currently experimenting with Copilot and ChatGPT. I am paying for them. As with any investment, it is all about trading time for money. If you can get more out of it than it costs, simple math. Where I saw their benefit is getting a really basic set of tests out really fast. For edge cases. It requires some "clean code" practices and naming. Then you get a really nice benefit, really fast.

The argument against the code below used in the example can be made. It is one of the dozens of examples made in an effort to explain complexity. But the topic for a future post. It is impressive how it learned from the example and produced a pretty solid result.

short video of github copilot in action

These tools will get better. We can't even fathom to what point now. As what we see now was not fathomable when Copilot first came out. We had source code generators, yes. That was a game-changer. Was it perfect? No. But as with any tool out there, it kept getting better. And will continue to do so. I do believe better and better integrations will follow.

An example of ChatGPT with the same request. There are differences. But still, the result is expected ballpark.

short video of chatgpt in action

I am still learning the best way to query for the best results with AI tools, but I anticipate that future versions will bring significant improvements. To get the most out of these tools, it is important to understand your own needs and what you are asking of the tool. This will help to avoid getting irrelevant or nonsensical results. Do we need to trust it blindly? No. These tools can also be used to improve our understanding of code and how we communicate about it. I look forward to seeing further integrations with other software development tools, particularly for developers who use YAML.

By automating repetitive tasks such as documentation and unit testing, these tools can help developers to focus on the more interesting and complex aspects of software development. Or they can become your pair-programming partner. However, it is important to remember that the models powering these tools are not perfect and will require review, tuning, or even rewriting. As these tools continue to improve, they have the potential to reshape software development teams and make existing developers even more versatile. More t-shaped. Additionally, they could become a part of the "tech stack" in many companies.

On the other hand, with the use of these tools, the demand for highly optimized code will increase, so developers will need to brush up on languages like C, C++, and Rust. Overall, these tools will have a significant impact on the way software is developed and it is important for developers to stay informed about their capabilities and limitations. In summary, AI tools can automate away some of the tedious tasks, but it is important to not trust them blindly and always review the suggestions and outputs.

Till next time, don't get automated away by an AI.