Copilot-logo

Copilot Logo.

Introduction

I have been using Copilot now about a year. I first had some free version of Copilot, and later on I switched to the paid version my corporation provided for me. In this blog post, I write about my experiences with Copilot.

How Do I Use Copilot?

I use Copilot a bit like the name suggests - as a copilot. I.e., I’m still piloting the process of writing code, but I ask Copilot to give me suggestions, when I need them. Copilot has made programming more fun. Now that I analyze my programming with Copilot, I see that I have been using Copilot in the following ways:

  1. Generate bulk code sections. Example. I have a list of environment variables. I need to create one row for each environment variable in a Python class initializer and another a bit different row in the class string representation method. I usually copy paste the list of environment variables as a comment block into the source file, and then manually write the first row. Copilot can understand the context, and that I need to create the same kind of rows for the rest of the environment variables in the comment section - it suggests new lines row by row, and I just need to accept the suggestion using the tab key.

  2. Generate something new as a skeleton solution. I just implemented a small application using Python FastAPI for a backend, and Typescript/React for frontend. I am not that fluent with Typescript/React, so I asked Copilot to generate a skeleton solution for me: “Show me a simple React application which has a navigation panel on the left side of the screen. The navigation panel has hyperlinks for pages Page1, Page2, and Page3. Create also subpages using React Router for those subpages.” Copilot generated a skeleton solution for me. I had already created a frontend develoment environment using Vite, and I just needed to copy the generated files to the correct places in my project, and then I could start to implement the actual pages.

  3. Ask help for a specific problem. During a programming session, it is very common to have various errors. If you are not familiar with a new error type, instead of googling the error, you can just ask Copilot: “In file Page1.tsx, I have an error ‘SomeError…’. What seems to be the problem?” I would say that Copilot is able to solve the problem in some 80% of the cases. Even 80% is really helpful, since googling the issue in various programming sites takes usually a lot more time.

  4. Learning. When you are not sure how to implement something, you can ask Copilot to show you an example. Copilot and other large language models have been trained with a lot of code. I mean a lot of code, billions of lines of code. Generative AI tools can summarize the best software solutions for a specific problem. And this is a great chance to learn new things. When I create some new solution with Copilot, I don’t just blindly accept the solution and go on. I read the solution carefully, and I try to understand why Copilot suggested this specific solution. This makes learning new programming languages, ideas and paradigms a lot faster.

  5. Code review. Sometimes I’m not satisfied with some solution I just wrote. The solution works, but I’m using a programming language that I’m not that fluent with, and I’m not that sure if I have used the language in an idiomatic way. Instead consulting your more competent colleague, you can consult Copilot to take a look of the code and suggest how to make it better.

  6. Implement tests. Tests are often a bit tedious and dull to write. But not anymore. You can use Copilot to write the skeleton test cases and implement the details yourself.

Some More Ideas for Using Copilot

Now that I am writing this blog post, I just realized that I could try Copilot to generate documentation regarding the solution. These are generative AI tools, and precisely meant to create e.g. summaries.

I guess there are a lot of other ways to use Copilot. Now that I think about that, I really need to consult Copilot: What are the main ways I can utilize Copilot in programming? I just asked, and the answer was:

You can utilize GitHub Copilot in programming in several ways:

  • Code Completion: Get suggestions for completing your code as you type.
  • Code Generation: Generate entire functions or classes based on comments or function signatures.
  • Code Transformation: Refactor or transform existing code to improve readability or performance.
  • Documentation: Generate comments and documentation for your code.
  • Unit Tests: Generate unit tests for your functions or classes.
  • Bug Fixes: Propose fixes for bugs in your code.
  • Learning: Understand how to use new libraries or frameworks by seeing example code.

These features can help you write code faster, learn new technologies, and improve code quality.

Some Tips for Using Copilot

I use VSCode as my main editor nowadays (though, I use also Emacs quite a lot). There is good integration between VSCode editor and Copilot (using a dedicated VSCode extension). I have three external monitors in my desk. So, I have the main editor in the middle monitor, and I have the Copilot in my right side monitor in another VSCode window. How to open Copilot in another VSCode window? Just ask Copilot! This way I can maximize the editor in the middle monitor, and Copilot window does not consume any space in my main monitor. When I need help, I just ask for help in the Copilot window in the right monitor.

Another Copilot tip is to have the Copilot status icon at the bottom of the VSCode editor. This way you can see if Copilot is active or not. Sometimes you know exactly what to do and you just find Copilot suggestions distracting, as writing this blog post. You can disable Copilot by clicking the Copilot status icon. This opens the VSCode command palette, and you can choose the “Disable Completions for ‘markdown’“ command from those commands that are shown.

How Is Copilot Going to Change Software Industry?

My prediction is that Copilot will change the software industry a lot. There will be at least these changes:

  1. Senior developers will have new exciting challenges. As long as we don’t have an artificial general intelligence (AGI) to implement the whole software solution (e.g. backend, frontend and the cloud infrastructure to run the system, test everything and deploy everything to production, all fully automatically), we are going to need developers to create software solutions, with or without AI assisting tools. But the need for junior developers or offsite developers will decrease. Competent senior developers are going to be able to create everything themselves quite productively. When previously a senior developer created reference solutions and templates for junior developers and offsite developers, for them to implement the a bit more dull and less challenging parts of the software, now the senior developer can create the whole solution by herself. This will have the following consequences:

  2. Less junior developers are needed. The need for junior developers will decrease. It will be even harder for junior developers to get their first job in the software industry.

  3. Less offsite developers are needed. The need for offsite developers will decrease as well. Why have the overhead of discussing with an offsite team with time zone differences and other hassle, when the senior developer can implement the whole solution by herself? If I had those Indian IT giants (as Tata Consulting, Wipro, Infosys, etc.) in my investment portfolio, now would be a good time to sell those stocks away.

  4. The need for competent senior generalists will increase. The senior developers are going to be able to create the whole solution by themselves: implement the backend with some backend language, implement the frontend with some frontend language, and create the cloud solution using some infrastructure as code (IaC) tool, deploy the infrastructure to some major public cloud platform, deploy the software system to be run in that infrastructure, and test the whole system - with the help of generative AI tools. You don’t need a big team anymore since the programming productivity of a senior generalist developer is going to be much higher than before. Therefore, the need for competent senior generalists will increase - those are the specialists the software companies are going to need.

Conclusions

If you are a senior generalist, these new generative artificial intelligence tools are going to make your life a lot more exiting. You are going to be able to create a lot bigger software solutions just by yourself, or with a small team of other competent senior generalists. You don’t need to rely on junior developers or offsite developers anymore, cutting extra overhead and communication challenges that are always present with big teams.

I must say that we are living exiting times in the software industry. Around 2010 I was a bit bored - software industry was just the same Java implementation work with application servers, all projects seemed to be the same. Then around 2016 I started my first public cloud project, and I never looked back. I knew instantly that public cloud is going to revolutionize the software industry. And now, with these generative AI tools, we are going to have another revolution in the software industry. I’m really happy that I’m still in the software industry, to live these exiting times.

The writer is working at a major international IT corporation building cloud infrastructures and implementing applications on top of those infrastructures.

Kari Marttila

Kari Marttila’s Home Page in LinkedIn: https://www.linkedin.com/in/karimarttila/