Coding with AI: Revolutionizing Software Development, Pros, and Cons

Rafael Dobarco
4 min readMay 7, 2024

--

Photo by Hitesh Choudhary on Unsplash

The software development career is going through a revolutionary transformation. Since I started in the IT area 10 years ago, I faced many changes in the development process and Software Engineering profession.

Despite the existence of other tools available for developers to help their productivity and delivery quality like code completion tools, parameter Information, complete word, etc. Artificial Intelligence (AI) is a life-changing tool for developers never seen before.

Due to the rapid advancement of AI and Large language models (LLMs) created focused on the development code generation and maintenance, it is important to understand the impact and how this will reshape the development profession.

In this post, I will share with you the main points that I consider based on my expertise and career, as the future of software development and also show some Pros and Cons.

AI in Software Development

AI can be used during software development not just in the same way that Intelisense worked in the past (completion tools, parameter Information, complete word, etc). We can also interact with it, depending on the tool, in a chat way.

Prompt Engineering

Is a form of interacting with the A.I.

Prompt works as instructions that are made to the LLMs, and these instructions allow us to have access to knowledge that was used to train these LLMs.

Prompt engineering is the process of creating the best prompts to receive the correct answers from the LLMs and that plays a new role that is becoming very important in the IT and software development profession.

Software Developers will need to have a deep understanding of how to generate the correct prompts to have the right code outputs.

The prompt engineering can be compared to Socratic questioning (or Socratic maieutics).

Socratic questioning is a form of disciplined questioning that can be used to pursue thought in many directions and for many purposes, including: to explore complex ideas, to get to the truth of things, to open up issues and problems, to uncover assumptions, to analyze concepts, to distinguish what we know from what we do not know, to follow out logical consequences of thought or to control discussions.

In our scenario, the developer plays the role of a professor asking questions to a student (LLMs), and the questions should guide the students to the best answer.

Prompt engineering can really be summed up as this: if you want better results, you need to ask better questions.

This shows the importance of good questions(prompts) to receive the best answers from the AI. Building these prompts requires deep knowledge and also requires the ability to validate the outputs and decide the best approach to the overall business needs in a daily-basis development career.

Pros and Cons:

While AI offers numerous benefits for us developers, it also creates challenges that should be considered and tackled. I listed some of the Pros and Cons:

Pros

AI can automate various activities done by coders, impacting the code generation to testing and maintaining the system. Following are some of the main points that I consider as Pros:

1- Increased Productivity

Using AI models, Generative AI embedded with IDEs in the market will help developers to be more productive, generating code 40% faster and white box tests and documentation almost 35% faster. It is like a pair programming with steroids (OMG). It can also output code in different languages, which can be fit for multiple applications and scenarios.

2- Testing creation and Quality

AI can also test case creation for Unit, Integration, and End-to-End(E2E) testing. Can you imagine someone helping you think about all the inputs and outputs a method/function can have? Imagine that available for you 24x7 with a gigantic knowledge base composed of tons of codes from developers all over the world. That is the power that AI for developers and also for a Quality Assurance (QA) team.

3- Maintenance and Improvement

The usage of AI can also be applied to software maintenance. It is being used by SAST and DAST tools, for finding vulnerabilities, penetration tests, and performance testing and It is also being integrated in CI/CD tools. This can also help us developers who are doing code reviews, finding bugs, and creating documentation for processes based on a pre-existing code base.

Cons

While the integration of AI into the development process has a lot of benefits and is so attractive, it also raises concerns and issues, especially for junior devs who are just starting their career. I listed some advice that I would give to a young coder that could mitigate future challenges during his career:

1- Skill Erosion

One of the primary advice is don’t stop practicing. Due to the widespread adoption of AI in coding, there is a risk that developers may stop cultivating and consolidating coding skills and problem-solving abilities. This will impact especially the students in universities, interns, and junior developers. AI is the tool, not the answer.

2- Limited Understanding

Second advice: Always force yourself to understand what is happening behind the scenes. AI often operates as black boxes. Without understanding what is happening and how the decisions are being taken during the development process, developers can have a lot of issues to debug issues, improving performance, and also maintain the code itself. This can block young developers from progressing in their careers during the lack of understanding of the code.

Conclusion

In the IT area, we always had the challenge of reinventing ourselves. Reinvent in our career is the main pillar and learning is the principal tool. This learning is always boosted by the need to attend to a demand and resolve a problem. We, developers, have to work together with AI to achieve a different and augmented level of delivery. Focused on the solution itself and not on generating code.

For those who understand that AI is not here to compete with us but to add, this is just the beginning of a new era.

--

--

Rafael Dobarco
Rafael Dobarco

Written by Rafael Dobarco

Full-Stack Developer and Designer at IBM.

No responses yet