Gen AI: To code or not to code?
Walid Negm
Engineering amazing things | Nothing ventured, nothing gained - GenAI, Automotive Software, Cloud-Native & Open Source
Coding features has been changing like a frog in a frying pan.
It is recognized that a good programmer is, above all, a problem solver. Once the problem is defined and features are in a backlog then a developer gets started with the expectation to deploy more often and release with minimal risk. Developers of course don’t just code—but they are delivering experiences and deal with multi-stage releases (with over the air updates) that can break if things are not working properly together. Developers deal in decision points in the code, misbehaving functionality, safety compliance, run-time control, SDKs/APIs and HW/SW integration that is dependent on product complexity.
Coders and programmers are crucial and busy people. ?
How are we building today? There are many, many different environment-specific programming languages (JavaScript, React, Python, PHP, Rust, C/C++, Swift, Java, ERlang, Go, Android etc.) each with syntax and capabilities that work better than others to code-up the customer experience. Regardless of the language and programming activities the focus remains squarely on the customer experience and desired features.
Today, hands-on keyboard coding is predominately handled by hands-on programmers that team with product managers and systems architects for implementation choices and continuous delivery of capabilities. That is an over-simplified product development organization, but basically it takes a community.
At the same time advanced modeling and simulation teams now play a central role giving birth to software that begins its life as a requirement document then a “photo-realistic” model (e.g., pseudocode for a control algorithm in a tool such as SIMULINK). Software and hardware systems now start as a facsimile of the real thing. Depending on the industry, full fidelity source code of some of these models is auto generated onto the target device. Such modeling and simulation work can be illustrated with any number of examples, but here are a couple:
GenAI turns up the heat to replace coding activities and improve scalability
While GenAI’s coding skills demonstrate decent results, it tends to be incomplete and prone to basic errors, often relying on random assumptions. Therefore, GenAI has so far lacked full credibility (especially in safety-critical embedded systems) prompting the inclusion of human expert programmers in the process. These experts would be responsible for reviewing the auto-generated code, whether it originates from GenAI or other modeling tools (e.g., MATLAB) sources. Additionally, a rigorous testing regime is implemented, comprising multiple stages, to ensure source code fidelity from validating performance on the intended target device, and integrating the hardware modules.
Of course, there remains plenty of questions about the negative impact of GenAI in nurturing generation of problem solvers that don’t know how to handle trouble shooting and yes, don’t get frustrated at every corner. It's also interesting to ponder whether we will replace the skills to generate code, with more skills to validate and integrate systems so we stay far away from bricking a medical device or vehicle module because of scrappy auto-generated code.
GitHub's Copilot is a good example of the adoption of OpenAI’s GPT-4 for AI-powered software development that claims some compelling results on developer productivity and happiness:
??60 - 75% coders feel less frustrated
??87% preserved mental effort during repetitive tasks
??22% productivity gains, saving 2 hrs. per developer
??8% more tasks completed, 55% faster completion rate
领英推荐
?
Gen AI will change the art and science of software engineering.
How/Where/Why will be different sector by sector and the pervasiveness will be gated by risk levels, regulatory / assurance requirements and ability to validate the outcome. While further out from the here and now—Gen AI is a real opportunity to stay relevant ---as things are changing month by month, not year by year.
Strongly suggest that every student, programmer and product developer really take a hard look at Gen AI---and here is a small assignment for an embedded system. Send me a note if you want to hear about my results.
Assignment #1:
??Take input from Device specifications/configuration files (like which HW platform X86/ARM multi-core etc, OS: Linux/QNX/VXWorks etc)
??Generate the code
??Optimize the code
??Check for compliance (like MISRA coding standards) / check for cyber security vulnerabilities
??Build the code for specific platform
??Generate Unit test scripts
??Generate documentation
???Test the code on a target platform and capture results
?
?
Global Alliances Director, Public Cloud - AWS, Microsoft and GCP
1 年Walid Negm - nice read!!
Managing Director | Strategy & Analytics | Product, AI & Data Engineering | SaaS | Cloud Computing | ESG | DEI
1 年Love this perspective Walid Negm