The last couple of years have been a whirlwind with the release of new AI tools. There are now tools that help us write better, help us analyze and categorize data, inspire us with (often creepy) images and video, and help us develop software quicker. Website and app developers can become more productive than ever before with the assistance of these new tools.
Using AI in the code-writing process brings with it both positive and negative aspects.
Positive impacts of AI in software development
Many positive things are happening with the adoption of AI during the development process. AI tools can help automate repetitive tasks, accelerate project kickoffs, allow faster ramp up into projects, and improve problem-solving speed, to name a few.
Automating repetitive tasks
Frequently, software development involves building features designed to spare users from repetitive tasks. Ironically, in the process of coding these features, we often find ourselves engaged in writing redundant code or performing repetitive tasks ourselves. AI coding tools offer a solution to help speed up many of these monotonous tasks.
AI autocompletion tools attempt to complete lines of code based on the surrounding lines. While not always 100% correct, when they are correct, they help save small amounts of time (and your fingers too). Those time savings add up over the long run of a project.
Accelerating project kickoff
Getting started on a new project is often the hardest part. Beginning a new project requires making the correct technology choices, setting up development environments, initial codebase creation and more. All of this can be overwhelming and time-consuming. AI tools can help us accelerate this entire process.
We can use AI to scaffold the beginning project structure and generate boilerplate code. While all projects are unique, different apps and websites use many of the same components and patterns.
Being able to generate boilerplate code customized to the type of project and high-level requirements removes any barriers and hesitation in getting started. Think of it like generating a rough draft so you don’t have to start with a blank page.
Allow faster ramp up into projects
We often need to be prepared to switch between different languages or Content Management Systems. One project might be a NextJS app written in Typescript, the next a PHP CMS. A strong grasp of programming fundamentals is an important skill to have to be able to work on any development project. The different architectures and language syntax can be a roadblock to slow down a developer though.
Many of the core concepts between different apps like Content Management Systems, CRMs, or different programming languages like JavaScript/Typescript, C#, or PHP are similar. The syntax and implementation are the main difference between them, but AI can help us translate knowledge from one system to another, and one language to another.
If you know how to solve a problem in JavaScript, it’s easy to translate your solution to another language because you’ll know the questions to ask. The same thing applies if you know how to accomplish a task in one CMS; you may more easily be able to transfer that knowledge to a new CMS. Getting an answer directly from an AI assistant can often be quicker than digging through documentation or spending time sifting through Stack Overflow answers.
Even if you know a language inside out, figuring out what a piece of code is doing or tracking down where certain data comes from can be difficult. Context-aware AI coding tools can help in these situations by explaining and breaking down existing code. This is helpful, especially when dealing with unclear or undocumented code, like when digging into old CMSs or unfamiliar frameworks.
Improve problem-solving
Along the same lines of using AI to help explain and break down difficult-to-follow code, there are other ways it can help improve problem-solving.
Often when writing code, you’ll need to look up documentation about a library or search a question-and-answer site like Stack Overflow for advice on a specific problem. Instead of losing context switching to a web browser, an AI assistant can provide an answer without ever leaving the development environment. This may sound like a small thing, but keeping in the flow can really increase productivity.
Another technique we often use is something called “rubber ducking.” This is where we’ll explain our code or problem to an inanimate object (like a rubber duck), and often just by explaining the problem, the solution becomes clearer. AI can be a developer’s supercharged “rubber duck.” This not only allows us to explain the problem but provides us with instant feedback to bounce ideas back and forth with it to work out a problem, as we might do with a coworker or by ourselves.
Watch out for these issues when using AI-assisted development
While it sounds like a dream, as if anyone can just pull up any AI tool and build the next hit app in an afternoon, using AI to generate code and assist with development isn’t completely without issues. Generated code can be wildly wrong for many reasons, including the user not providing enough context, or asking specific enough questions or even just plain AI hallucinations.
The output is incorrect
When asking code to be generated, you need to be as specific as possible. For some complex tasks you may have to provide examples, and it still may not get it right. You must know how to properly describe the problem. Once it’s described, you also must work out all the edge cases.
This is what programming is in the first place. Find the problem and describe the solution in a way a computer can understand, in a programming language. Current AI tools can help significantly, but they’re based off human input, so you still need ask the right questions and consider all the edge cases.
While AI autocomplete tools can save a lot of time, they often suggest the wrong code, sometimes code that isn’t remotely what you’re trying to accomplish. Even though it can read the surrounding code, it can’t read your mind. Also, you must understand the code it provides to know if it’s correct.
Writing high-performance code
You want your app to run as fast as possible to keep people engaged. When a piece of code needs to be fast, will an AI assistant produce the best algorithms?
AI is trained on human input, but this doesn’t guarantee the quality of the input. It may not understand your problem as well as you. It may not understand all the edge cases. It may not understand the platform as well as you. An experienced developer may be able to produce better performing code and recognize when the output is not optimal.
Is your code secure?
Ensuring a website or app is secure and without flaws that could cause security incidents is important. Security issues can take down a website or disable an app temporarily, and worse, can result in theft of customer information.
Since AI-generated code is based on human inputs, there is always the potential for security risks. Not only that, but if your AI-coding assistant is cloud-based, do you know what it does with your data? Is your data encrypted when being sent back and forth?
Human code reviews and reviews of your tool’s privacy and encryption methods are important to make sure you don’t run into security issues later down the line.
So, is AI a game changer for software developers?
AI tools are certainly a productivity booster for developers.
AI-assisted development could make natural language the next programming language. As programming languages build upon each other, AI tools could create another layer of abstraction above programming languages. Just as we don’t write 0s and 1s, we write code that transforms into lower-level code and eventually becomes 0s and 1s.
But can you ask AI to write you a complete app without human intervention? If you’re building the next simple “to-do list” app, possibly, but when you get to more complexity it requires more thoughtfulness in the driver’s seat.
Most problems are too complex for any current AI tools to solve completely. They all need guidance and review from experienced developers. Eventually, they will get better but will likely just become a higher level of abstraction upon the current abstractions we already use.
Have a problem you need help with? Contact Us
Subscribe to our newsletter
Get our insights and perspectives delivered to your inbox.