In the rapidly evolving landscape of software development, AI assistants have emerged as game-changing tools, empowering engineers to write code more efficiently than ever before. To gain insights into this transformation, we spoke with Ilia Zadiabin, a mobile developer, about the impact of AI assistants on the software development process in 2024.
Ilia Zadiabin is a prominent figure in the global tech ecosystem, renowned for his expertise in mobile app development and AI-driven solutions. As the founder of Slai, an innovative AI-powered language learning platform, he gained international recognition by successfully competing with industry giants.
His influence in the software development sphere is further amplified by his articles on TechBullion, a leading tech news platform, where he offers valuable perspectives on cutting-edge development practices and industry trends.
Ilia’s expertise has led to his selection as a judge for several high-profile tech events, including the Business Intelligence Group, the Global Startup Awards Africa, and Geekle’s hackathon. In the healthtech and fintech sectors, his work has set new industry standards, consistently earning praise from users and experts alike.
In general, software developers have looked favorably upon AI assistants, expecting that the new technology can improve productivity and smoothen their workflow. As an expert, could you tell us what exactly AI assistants do?
AI assistants are transforming the code writing process, acting as intelligent companions that enhance productivity and code quality. These tools provide real-time code suggestions and completions, often generating entire functions or code blocks based on context and intent.
A key strength of these AI tools is their ability to suggest alternative solutions to already solved tasks, encouraging developers to consider different approaches and potentially find more efficient or readable solutions. Even when AI suggestions are incorrect, they can be valuable by sparking new ideas or leading developers to better solutions they might not have considered.
By handling routine coding work and offering diverse perspectives, these tools allow developers to focus on higher-level problem-solving and creativity. In essence, AI assistants serve as collaborative partners, augmenting human capabilities in software development.
What AI assistant tools are used in the development workflow? Which features do you believe are required for an AI assistant in case it has to work effectively for software engineers?
AI assistants have become crucial tools in modern software development workflows. Key examples include GitHub Copilot, GitHub Copilot Chat, JetBrains AI, and Google Gemini for Android Studio. These tools offer features like code generation, real-time suggestions, and debugging support.
For more personalized support, developers can use tools like llama code assistant, Continue.dev, and Supermaven. An interesting feature is Claude Projects, which allows using multiple files as context for the AI assistant.
Effective AI assistants for software engineers should offer:
- Accurate code generation and completion
- Context-awareness across multiple files
- Multi-language support
- Integration with development workflows
I see. Could you provide more details on how they help improve productivity in your field?
The Microsoft study showed that developers using Copilot completed tasks 55% faster and had a higher task completion rate (78% vs 70%). The Accenture experiment demonstrated an 84% to 107% increase in successful builds with AI assistance.
Moreover, AI tools automate many of the mundane, repetitive tasks, allowing developers to focus on higher-level design and problem-solving, reducing stress and mistakes, and thereby enhancing productivity.
Can you name a good example of a project where an AI assistant has dramatically improved the result?
Research suggests that AI assistants can increase development speed by up to 50%, benefiting most projects. However, AI tools are particularly effective for certain types of tasks, especially those that are large and repetitive.
Writing tests is an excellent example of where AI assistants excel. They can efficiently generate comprehensive test coverage for an entire project – a task that developers often find tedious but is crucial for software quality. AI assistants are also highly effective at writing comments and documentation for technical projects, rarely missing important details.
A concrete example of AI’s impact is Duolingo’s adoption of GitHub Copilot. The language-learning platform reported a 25% increase in developer productivity after implementing the AI tool. This case demonstrates how AI assistants can significantly enhance development efficiency in real-world scenarios, particularly for companies with large codebases and complex software systems.
What problems are encountered while working with AI Assistants?
When working with AI assistants in software development, two main concerns arise. First is the issue of data privacy and potential code leakage. Developers worry about proprietary code being exposed to third parties through cloud-based AI models. Some companies address this by offering on-premises solutions, but for individual developers using public AI services, the risk remains.
The second concern involves AI mistakes and hallucinations, though this is less problematic in software development than in other fields. AI coding assistants typically generate small code snippets, making errors easier to spot and correct. The structured nature of programming languages, with strict syntax rules, helps in quick error detection. Unlike in natural language processing, code provides immediate feedback through compiler errors or runtime issues.
In practice, the hallucination problem common in AI chatbots is less severe in coding contexts. The rigid structure of programming languages naturally constrains the AI, reducing nonsensical outputs. Developers can easily identify and fix AI-generated errors, such as incorrect method names or syntax.
You mentioned earlier that AI assistants can dramatically improve productivity. Do you have any concrete data or research findings to support this claim?
GitHub, a leading platform in the software development space, conducted extensive research on the impact of their AI assistant, GitHub Copilot. Their findings, published in May 2024, provide compelling evidence of the benefits of AI assistants in software development.
Regarding productivity in terms of speed, GitHub’s controlled experiment with 95 professional developers yielded significant results. Developers using Copilot completed a specific coding task 55% faster than those without it. On average, Copilot users finished in 1 hour and 11 minutes, while non-users took 2 hours and 41 minutes. This represents a substantial time saving.
However, as mentioned earlier, productivity extends beyond mere speed. The research demonstrated improvements in various other areas as well. Developers using Copilot showed a higher task completion rate, with 78% finishing the task compared to 70% of non-Copilot users.
In terms of job satisfaction, a majority of users reported feeling more fulfilled with their work, experiencing less frustration when coding, and being able to focus on more satisfying tasks when using Copilot. The AI assistant also proved beneficial for maintaining focus and preserving mental energy. A significant portion of developers stated that Copilot helped them stay in the flow and conserve mental effort during repetitive tasks.
Efficiency in handling repetitive work was another area where Copilot showed strong benefits. An overwhelming majority of developers reported completing such tasks faster with the assistance of Copilot.
Research regarding productivity:
https://dl.acm.org/doi/10.1145/3520312.3534864
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4573321
Research: quantifying GitHub Copilot’s impact on developer productivity and happiness
https://mit-genai.pubpub.org/pub/v5iixksv/release/2
How do you integrate AI Assistants with other Development tools and platforms?
AI assistants for software development generally fall into two categories: those integrated into commercial development platforms and more personalized AI tools for individual developers.
The first category includes AI-powered features in platforms like Sentry, GitLab, and Eraser.io, as well as server-side code analyzers such as Snyk and SonarQube. These tools use AI to enhance specific workflows within their platforms. For example, Sentry suggests solutions to observed issues, while Snyk analyzes code and provides security-focused suggestions. Due to the unique nature of each product, it’s challenging to generalize about their AI enhancements.
The second category comprises “personal” AI assistants like GitHub Copilot, Supermaven, and Continue. These tools integrate directly into developers’ IDEs, primarily focusing on enhancing code completion. They aim to predict and generate code based on the developer’s intent. Some, like Copilot Chat, can even answer development questions by analyzing the entire project context.
It’s worth noting that some companies hesitate to adopt AI assistants due to concerns about data privacy, as these tools may potentially send codebase information to third parties.
How do you cope with situations when the AI assistant gives the wrong or misleading information?
As a frequent user of AI assistants, I encounter this issue regularly. Fortunately, AI hallucinations or errors in code completion are typically easy to spot and correct. Since these tools usually autocomplete only a few lines of code at a time, experienced developers can quickly identify and fix any mistakes.
For AI features in SaaS solutions, errors are generally less impactful as they often come in the form of suggestions rather than direct code changes. Overall, dealing with AI errors is manageable and, interestingly, gives developers confidence that they won’t be easily replaced by AI.
However, I do monitor trends in developer frustration with specific AI autocomplete tools. Persistent issues often lead to developers switching to alternative solutions or occasionally abstaining from AI assistance altogether.
Is it possible to create your own AI assistant?
Yes, you can create your own AI assistant. There are multiple approaches, ranging from complex to more straightforward.
The most challenging approach involves building an AI assistant from scratch using Python, PyTorch, and TensorFlow. However, this path is typically reserved for large companies and dedicated enthusiasts due to its complexity and resource requirements.
A more accessible approach for most developers is to leverage existing Large Language Models (LLMs) and either use them as-is or fine-tune them for specific needs. This method significantly reduces the technical barriers and development time.
To start using local LLMs for code assistance, you’ll need two main components:
- An extension for your Integrated Development Environment (IDE). One popular option is Continue (https://www.continue.dev/), which integrates well with various LLMs.
- A way to run LLMs locally. Ollama (https://ollama.com/) is a popular tool for downloading and running various LLM models on your local machine.
Other popular solutions in this space include llama-coder, Cody, and Tabby. These tools offer different features and integration options, allowing you to choose the one that best fits your workflow and requirements.
What place do you think AI assistants will take within the area of software development in a few years?
Even now, the combination of AI + developer is superior in speed to just a developer.
In a few years, I believe AI assistants will be core components of software development. As their functionality improves, they will support more sophisticated coding and hopefully will be integrated with compilers to eliminate possible errors.
My expectation is that every developer will use one of the AI assistants to some degree, and I suggest they do so immediately.
These tools improve not only the efficiency of coding but also enable developers to focus on higher-order tasks. In general, AI assistants are likely to enlarge the role of developers, promoting a collaborative environment in which coding will be more accessible to a wider audience.