Generative AI for productive software engineers
Since Large Language Models emerged in 2023 people tried to apply them to different use cases. For me one of the most important abilities that I started to explore with them was how they can increase my productivity. After a year of regularly using Github Copilot and OpenAI ChatGPT I settled for where I see the most value they can provide for me.
For the rest of the post whenever I mentioned “generative AI” I mean chat functionality provided either by Copilot or ChatGPT. I will not be mentioning Copilot as an auto-completing tool as the value coming from it is obvious and use case space is very narrow. Even though all the screenshots come from OpenAI ChatGPT one could easily use Copilot Chat the same way.
Explain
Generative AI is great when it comes to code explanation. Simply copy and paste unfamiliar code and request an explanation. This use case is one of the best examples of how Large Language Models are different from traditional search engines.
Translation from what I know to what I do not know
The most important improvement in my daily work is the ability to translate what I know into something I want but do not know exactly how to do. Like translation between syntax of SQL dialects. Or translating my requirements into a programming language in which I’m not proficient enough to write a specific functionality from top of my head. Here is an example:
The code produced is not always exactly what I need but it is close enough for me to figure out how I can adjust it to achieve the result I’m interested in.
Decipher error messages
Generative AI is a great tool for translating error messages into action items one can take to solve the problem. It works so well that often you don’t even need to specify the technology you use. Here is an example of an error message I encountered when trying to upgrade dependencies in one of the projects I worked on.
Terminal commands
Terminal commands are a powerful tool. You can combine them in a way that the output of one command can be used as an input for the next command and so on. This way people who know terminal commands and know how to use them efficiently can do real magic. I was never good at memorizing terminal commands and their syntax. Now with generative AI I no longer need to feel bad about it. I can just describe what I want and AI will produce the one-liner that does exactly what I need.
Recently someone pointed me to an interesting tool called Shell GPT. Didn’t try it yet but it seems it solves the same use case but without ever leaving your terminal.
Human readable formats
In our industry the convention is to represent objects in a human-readable format. Those formats rarely follow any standard therefore there are no tools that could parse them. Following such a practice works as long as you do not deal with big objects. When you have deeply nested objects with multiple fields, navigating them can be hard. Generative AI is surprisingly good at reading unstructured data and making sense out of it.
The same approach can be used for formatting human readable format to something like JSON or YAML that will give you possibility to better understand the complicated structure.