Software Engineers and AI

Software Engineers and AI

Through numerous articles written on the subject of artificial intelligence in the context of digital transformations, projects for which there is very often a need to rewrite applications or develop new ones, I've decided to use AI to speed up code development. It's not just a theoretical bias; it's a bias based on my own experience through multiple personal projects: IllicoDB3, Quitus, SVG Library, ...

There's no doubt that the use of different AI engines capable of generating code is a significant time-saving advantage. That's my experience and I'm sticking with it.

However ... when I ask an AI, Claude 3.5 Sonnet for example, or ChatGPT, or Perplexity, or ... to generate code for an important module, of a certain size, I'm often frustrated by the limited size of the answers. For example, if I ask the AI to create a PHP class that will enable me to transform HTML and CSS into .pdf, I get a very brief reply offering me to create some basic code without ever getting a global solution. If I then work bit by bit, I'm often surprised to have to repeat the same things, give the same context, make the same remarks over and over again. What solutions are there? ... and above all, what is the future of AI in the face of the experienced developer, or the future of the average programmer in the face of AI?

Faced with the size limitation of AI responses for complex code generation, here are some potential solutions:

  1. Ask for a detailed plan: Before generating the code, ask the AI to provide a detailed plan of the class structure and functionality
  2. Use an iterative approach: Start by asking for a basic structure, then gradually refine by asking specific questions about each part of the code. Divide your request into several smaller sub-tasks and manage them separately.
  3. Use specific and repeatable prompts: Formulate your requests very precisely, including details of functionality, dependencies and use cases. Create a sort of library of such prompts and make it available very easily (which is basically what I do with a Sermo instance immersed in IllicoDB3: I have a set of predefined prompts that will prevent me from reformulating the same things over and over again)
  4. Use specialized tools: Some AI tools are designed specifically for code generation and can offer more complete answers. Combine several sources: Use different AIs and combine their answers to obtain a more complete solution. Personally, I have somewhat good answer, although limited, from Perplexity, ChatGPT 4o and Clause 3.5 Sonnet. I have other candidates that I need to have a look at, GitHub Copilot or Amazon CodeWhisperer for example.
  5. Learning and adapting: Note the specific limitations of each AI and adapt your requests accordingly to achieve better results.

By combining these approaches, you should be able to overcome size limitations and obtain more complete and coherent solutions for your development needs. It helps but does not provide a full global solution.

While artificial intelligence (AI) has made significant progress in code generation, it still falls short of replacing human software engineers. Tools can generate code snippets and functions, but they lack the comprehensive abilities and judgement required for large-scale software development, we must admit.

Contextual Understanding and Project Scope

AI has trouble seeing software projects in their broadest context. It can produce code in response to specific commands, rather limited, but it is unable to understand overarching objectives, limitations, full context and global vision. This restricted focus frequently produces code that is at odds with the larger goals of any project, yet a simple module of a more significant effort. For example, I cannot ask AI (at least in my own experience) to generate a .pdf mocule.

Human engineers are quite good at deciphering intricate, subtle requirements and drawing well-informed conclusions, while keeping in mind their global context. AI has a tendency to take instructions at face value and miss minor nuances that a developer with experience would see.

System Architecture and Design Challenges

Designing robust, scalable software architecture requires a holistic understanding of system components and their interactions. AI excels at producing individual components but struggles to create cohesive, well-structured systems that can evolve over time.

Human engineers consider various non-functional requirements like performance, security, and maintainability when designing systems. AI often overlooks these critical design aspects, potentially compromising long-term viability and efficiency.

Communication / Collaboration

I'm going to be very blunt on the subject: it's impossible for AI to collaborate or communicate these days unless with you want to spend your time clarifying everything over and over again for each part you want a solution and each member of the collaboration, would that be a human or an AI tool. Period!

Collaboration among team members and ongoing stakeholder communication are essential for effective software development. AI is unable to gather requirements, take part in meetings, or communicate technical ideas to team members who are not technical. Here again, AI falls short, I'm grieved to say.

Innovation

Thinking creatively and questioning conventions are common components of innovation. When AI is educated on preexisting patterns, it typically produces conventional solutions instead of breaking new ground.

When faced with novel problems requiring original solving techniques, AI experiences difficulties, but performs well in routine programming tasks. When tackling new problems, human engineers demonstrate intuition, creativity and a wide range of experience. Believe me: when I ask Claude 3.5 Sonnet to “invent” new features for IllicoDB3, I often get recipes from the past. ... and it's easy enough to understand why when you know how LLM works: a statistical search for the next word based on previous words. LLM-based tools have ingested millions and millions of lines of code, and all they do is spit out what they already have according to a given context, which they often lose track of after a few exchanges.

Code Maintenance

Although AI is capable of producing syntactically accurate code, its output efficiency and quality might vary. In order to bring AI-generated code up to professional standards, human inspection is required.

Code generated by AI can contain subtle logical errors or oversights, which can generate defects : I frequently experience this, thus having a comprehensive battery of tests is necessary.

And to conclude: it's not an AI tool that's going to maintain the code

Debugging and Performance Optimization

Complex problem solving frequently calls for a blend of methodical research and gut feeling. Artificial intelligence is not able to follow complex execution routes or recognise minute interactions that lead to errors. Performance optimisation entails identifying bottlenecks in the system and implementing targeted enhancements. AI is now unable to carry out thorough performance analyses or successfully carry out focused optimisations.

Evolving Technologies

The field of software development constantly evolves, with new languages, frameworks, and paradigms emerging regularly. AI models, trained on historical data, often lag in adopting and correctly implementing these new approaches.

Remember what I said earlier: that LLMs are a statistical way of determining which word follows the previous one and the others that precede it even more, and that to do this they base themselves on the unimaginably copious content they have previously ingested? -Well ... well, that's all there is to it: these tools can only generate content based on what has already been said: anything new escapes them, which means a horizon of around 2 to 3 years. If you're looking for answers on more advanced, more recent techniques ... AI can only help you so much, sometimes generating numerous errors that require a trained eye, an eye ... human eye to spot and correct them.

Human engineers play a crucial role in evaluating and adopting new technologies, assessing their pros and cons, and making informed decisions about integration.

Domain Knowledge and Business Logic

Many projects require deep knowledge of specific industries or business domains. AI lacks the specialized expertise that human engineers accumulate through experience, potentially leading to code that doesn't fully address domain-specific needs.

Ethical Considerations and Accountability

Software development often involves making ethical decisions about data handling and societal impact. AI lacks the moral reasoning capabilities to navigate these complex ethical landscapes and cannot be held accountable for decisions in the same way as human engineers.


I would like to refer you to this blog article, with which I completely agree and which was referred to me by Perplexity, an AI tool : https://www.automatec.com.au/blog/the-limitations-of-ai-code-generation-why-software-engineers-remain-irreplaceable

Conclusion

In conclusion, artificial intelligence (AI) can be a useful tool to enhance human talents in software development, but it cannot take the place of the unique set of abilities, imagination, and discernment that human engineers possess. The future of software engineering lies in the synergistic collaboration between human developers and AI tools, utilising the strengths of each to generate more efficient, innovative, and robust software solutions.

要查看或添加评论,请登录

Patrick Boens的更多文章

  • Forging a ChatBot in the Digital Wilderness

    Forging a ChatBot in the Digital Wilderness

    In the relentless landscape of technological evolution, silence is not the absence of action—it is the crucible of…

  • AI Scanning an Invoice

    AI Scanning an Invoice

    This new issue, dedicated to ChatGPT and Sermo (my programming gateway to ChatGPT, Perplexity, and Claude 3.5 Sonnet)…

  • Using templates to mimic sophisticated object

    Using templates to mimic sophisticated object

    The Power of Templates in IllicoDB3: Revolutionizing Database Structure In the realm of traditional databases, the…

  • More, Faster, Easier...

    More, Faster, Easier...

    In my previous article, I showed you how to create a small todo management app in record time. Now, based on this first…

  • AI at the Developers' Bedside

    AI at the Developers' Bedside

    Let's dive into the world of AI-powered app creation, showcasing just how effortless it can be to bring your ideas to…

    1 条评论
  • AI and IT

    AI and IT

    Here's the question I asked to "Sonar Huge", the AI model of Perplexity.ai: With the advent of AI taking by storm the…

  • The Imperative of AI in Digital Transformation Projects: A Wake-Up Call for Businesses

    The Imperative of AI in Digital Transformation Projects: A Wake-Up Call for Businesses

    In today's rapidly evolving digital landscape, companies that continue to approach their digital transformation and…

  • Data Migration Projects

    Data Migration Projects

    "Mise en bouche" My first interesting encounter with a data migration project dates back to 1999. The tech world was…

  • IllicoDB3 and AI

    IllicoDB3 and AI

    I have mentioned in the past that IllicoDB3 allows the use of artificial intelligence to generate code related to…

  • IllicoDB3 : The New Features

    IllicoDB3 : The New Features

    As I mentioned in a previous article, IllicoDB3 has evolved significantly, and part of its evolution stems from…

社区洞察

其他会员也浏览了