AI Developer Tools
TLDR;
AI developer tools like Github's copilot are the future of development and DevEx. And will, in the future be as common as intelligent code completion, such as itellisense, is now.
Intro
If you aren't aware of what AI developer tools are such as copilot (the one I'm going to be talking about here) you can either go and check out copilot and come back or I will give you my shody explanation. They are essentially tools that sit in your IDE such as vscode and should give you intelligent suggestions based on what it thinks you're trying to do, and what it can see elsewhere in your codebase. This can be as simple as writing a comment about what you're trying to achieve and giving copilot a second to go and get a decent solution or you start writing a line of code it autocompletes the rest of the line for you.
Without going too deep in to how this acheived it's worth noting that the majority of the controversy regarding these tools lately has been related to how to it might source suggestions for your codebase and to what degree it may use your code as suggestions for other codebases.
Misuse
I'm of the opinion that AI is currently largely misused and frankly misunderstood. With all credit to things like ChatGPT that broke in to the mainstream, it's a very basic example of how AI is going to assist us in the future.
When I speak to other people I work with about how they use AI, they often go away to ChatGPT or similar tools and start chatting with it and explain what they would like what they need etc. Not a bad usage as it removes a lot of grunt work but frankly there is a lack of understanding of where these tools could be the most powerful.
If you try and use AI in this way it automates so much away that the way things are written, lack of small errors and coloquialisms smack of something slightly uncanny. Humans are really good at detecting when things are slightly off and this is no exception. It's not disimilar to the way you can kinda tell when someone has copy pasta'd something from Stack.
What part of it is useful now?
Using it inline and having suggestions and autocompletion provided quickly is amazing and works really well right now.
As an example, if I want to filter an array of objects by a particular property, I start by typing what I think might be a good function name and copilot thinks it understands where I'm going. Since it can read my type definitions (ty typescript) it's likely that it gets most of it correct aside from the exact property or some other condition I wish to include, but it has already saved me two trips to MDN because I've forgotton if Array.prototype.filter() returns the things that are filtered or the filtered array.
It still requires an understanding of code, and what is going on with each of these functions the same way intellisense doesn't solve this problem, it's just faster.
It is the equivalent of a power drill, instead of using a hand screwdriver. The same thing can be achieved with both (for the most part) but one is significantly more powerful and increases productivity dramatically. Is a power tool more dangerous, of course, but it's worth the risk.
I've been using copilot for a little over a year now, It makes writting code significantly less painful, and I don't think I can go back.
What's the future?
Having chat built in to the IDE is certainly a change in pace, asking simple questions like "can I improve the performance of a function?" or "how one might write the same function in a more readable way?" produces some seriously cool results.
More than this I can see the future branching in to two different areas. The first being a really consumer friendly non professional interface. Imagine the likes of square space and other web builders but with the ability to truly understand requirements and bootstrap a custom solution with a CMS for management.
The second and more exciting for me as a developer is integration with CLI tooling that allows you to set up apps, web or otherwise with stack suggestions, pipeline and deployment scripts, test suits and dev enviroments, all set up based on the type of app that you describe. Taking away the mundane tasks that are usually involved in a starting a new project.
Final thoughts
I understand some concerns within certain companies about this tech and how much of codebases are read and what exactly is being shared. Especially when we're talking about companies like Apple, writing some seriously low level shit. But not for the vast majority of us, frankly the stuff you write isn't worth stealing.
It is yet to be seen if this is a good thing or not for the development industry, and in what form it will eventually be in, but those who resist this change will likely be left behind. "For the times they are a-changin"
✌️