The impact of AI on software development: threat or opportunity?

There is a growing concern in the development community regarding the rapid advance of AI, especially in the field of software development. Some AIs are capable of suggesting or even building complete software with proper instructions and context. However, does this really imply the replacement of the software developer?
I firmly believe that AI, like many other software tools, has arrived to enhance our work, facilitate our tasks, and significantly increase our productivity. Instead of replacing the developer, AI will become a powerful ally, allowing us to focus on more creative and strategic tasks. The developer’s role will evolve from being a manual coder to a solution architect, an orchestrator of intelligent systems. AI will automate repetitive and tedious tasks, freeing our time to design innovative solutions, solve complex problems, and create exceptional user experiences.
Recently, I had the opportunity to work with Windsurf (in the Enterprise plan), an Integrated Development Environment (IDE) that allows interacting with AI in various ways within a project. The AI integrated into Windsurf is capable of analyzing the structure, architecture, code, and existing documentation in the project, and suggesting changes based on its understanding.
At first, it was a bit scary; however, within minutes, it became my best ally. When I understood the power I had at my disposal, my productivity increased significantly. I remember that after drafting documentation in a Markdown file, when trying to test it, the AI suggested precise changes based on its analysis of my documentation. It was a complex task that involved relating models, specific attributes, and proposing modifications based on the documentation. The AI performed this task flawlessly, saving me valuable minutes and possibly hours for the next developer who will need to consult that documentation.
Risks and precautions when using AI for software development in organizational environments
I wrote an article explaining the risks and precautions when using AI for software development in organizational environments, I recommend you read it.
It is important to use AI tools for software development, but responsibly and in the right environment. For educational, open source, or personal development purposes, there are no restrictions, but if you are going to use it in an enterprise project, it is essential that organizations wishing to incorporate AI into their processes hire an adequate service and verify that the provider company has the SOC 2 Type 2 certification. Additionally, it is important that the contract includes liability and indemnification clauses in case of any incident.
Windsurf
Windsurf, an IDE built on top of VS Code, offers a development experience enriched with artificial intelligence.
Main features of Windsurf
AI-assisted code generation:
- Ability to automatically generate code snippets or even complete code blocks based on descriptions or specifications provided by the developer.
- Intelligent real-time code suggestions, anticipating the developer’s needs and offering relevant options.
Enhanced analysis and error detection:
- Use of AI to analyze code for potential errors, vulnerabilities, or inefficiencies, and provide suggestions for correction.
- Proactive detection of problematic code patterns and early warnings to avoid runtime errors.
Code refactoring and optimization:
- Intelligent assistance to refactor code, improving its readability, maintainability, and performance.
- Optimization suggestions based on code analysis and project context.
Automated documentation:
- Automatic generation of code documentation, facilitating software understanding and maintenance.
- Creation of clear and concise comments and explanations based on code analysis and its functionality.
Automated testing:
- Automatic generation of test cases based on code analysis and software requirements.
- Execution of automated tests and analysis of results to identify potential issues.
Integration with AI tools:
- Integration with pre-trained AI models or cloud AI services to perform specific tasks, such as data analysis or natural language processing.
- Ability to learn and adapt to the developer’s coding patterns.
Cascade
Cascade is a key feature of the Windsurf editor from Codeium that redefines how developers interact with AI during the coding process. At its core, Cascade acts as an advanced coding assistant that not only suggests code but also understands the project context and the developer’s actions in real time.
AI Flows:
- Cascade introduces “AI Flows,” which combine the capabilities of AI copilots with those of AI agents. This allows for more fluid and synchronized collaboration between the developer and AI.
- AI Flows allow both the developer and AI to operate on the same project state, ensuring a more coherent coding experience.
Contextual awareness and real-time actions:
- Cascade has a deep understanding of the codebase and is aware of the developer’s actions in real time.
- This eliminates the need to repeatedly provide context to the AI, as Cascade is already aware of the developer’s previous actions.
Access to tools and terminal:
- Cascade has access to a variety of tools, such as web search, code analysis, and the terminal.
- It can detect which packages and tools the developer is using, which ones need to be installed, and even install them automatically.
Multi-file editing:
Cascade allows for coherent edits across multiple files thanks to its contextual awareness and integration with tools.
Memories:
Cascade has the ability to remember important details from past conversations, allowing the developer to continue with the task they were working on without needing to provide context to the AI again.
Conclusion
Artificial intelligence in the field of software development is not here to replace the developer, but to enhance our work, facilitate our tasks, and significantly increase our productivity. We must be aware of the risks and precautions when using AI for software development in organizational environments, and understand that AI is a reference tool and an ally, but it should never replace code review. You should always review code suggested or generated by AI, as it is not always accurate.
This is something I always comment on with my coworkers and the developers I mentor: a good professional is not necessarily evaluated by their technical skills (hard skills), but by their soft skills. Some developers still have difficulties understanding this. Having technical skills helps a lot in day-to-day work, but languages, frameworks, and technologies change rapidly. What is a differentiator today may not be tomorrow. On the other hand, soft skills are more constant and help with absolutely everything, including staying up to date with the technical skills that truly matter at any given time.
Now, with AI, soft skills will be even more valued, and technical skills a bit less. Following the trend that Software Engineers should focus on solving problems, and not necessarily on writing code. The sooner developers understand this, the faster they will adapt to the future and the new reality of development with AI.
I think I’m getting a bit ahead of my next article, which will be about “Beyond code: skills and strategies for success in software development”.
I leave you here with an article from my great friend Nicolás Masnovo about what organizations look for in a developer: “Hiring developers: Beyond the code”. This article aligns with what I have mentioned above.