Deux échanges qui m'ont fait ouvrir les yeux sur l'impact des technologies comme ChatGPT sur le métier de développeur.
L'un avec un étudiant de l'EPITA capable de développer des applications simples pendant qu'un donneur d'ordre lui décrit ses besoins au téléphone et ce, en 45 mn.
L'autre avec un développeur senior qui encadre maintenant une équipe de développeur, un vieux de la vieille à qui on la fait plus, qui m'annonçait que d'ici 5 ans, les développeurs coderaient beaucoup moins.
Tout le monde comprend bien comment ChatGPT va impacter le monde des rédacteurs et du journalisme.
Certains rédacteurs vont se repositionner sur les contenus que ChatGPT ne sait pas rédiger.
D'autres rédacteurs vont collaborer avec ChatGPT. Certains media vont muter. D'autres vont apparaître et inventer des concepts inédits grâce à ChatGPT
De façon surprenante, les développeurs vont être tout aussi impactés que les rédacteurs.
Pourquoi ?
Parce que ChatGPT et GPT peut probablement réaliser 50% des tâches qu'un programmeur "normal" réalise au quotidien
ChatGPT peut écrire du code, comme un "bon" développeur
ChatGPT peut recommander une approche technique pour réaliser une application standard et guider le développeur jusqu'à la mise en production de l'application
ChatGPT peut soulager le développeur de tâches rébarbatives
- Auditer un code complexe écrit par un autre développeur
- Documenter le code que le développeur à lui-même écrit
ChatGPT peut améliorer le code écrit par un développeur
- Optimisation de code afin de le rendre plus rapide
- Refactoring de code afin de le rendre plus facile à maintenir
ChatGPT peut permettre à un développeur à dépasser ses compétences
- ChatGPT peut apprendre de nouvelles techniques de programmation à un développeur
- ChatGTP peut également traduire un code dans un autre language que le développeur maîtrise moins bien
ChatGTP peut enfin sécuriser les codes
- ChatGPT peut détecter des failles de sécurité dans le code écrit par un développeur
- ChatGPT peut débugguer un code
Voici des illustrations de ces différents points
ChatGPT peut écrire du code, comme un "bon" développeur
ChatGPT peut structurer tous le projet de développement
Il peut recommander une approche technique pour réaliser une application et guider le développeur jusqu'à la mise en production de l'application
Vous pouvez, ainsi, demander à ChatGPT de faire le genre de travail technique ordinaire
- Créer une documentation complète et appropriée.
- Ecrire des requêtes SQL pour votre projet en indiquant simplement les besoins comme un énoncé de problème.
- Planifier les sprints avec un plan d'action tout en suivant les méthodologies AGILE
ChatGPT peut soulager le développeur de tâches rébarbatives
Auditer un code complexe écrit par un autre développeur
Les programmeurs ont souvent besoin de comprendre du code écrit par d'autres. Qu'il s'agisse d'un morceau de code trouvé en ligne ou d'une base de code complexe laissée par un ancien développeur, lire et comprendre le code de quelqu'un d'autre peut être une tâche ardue.
Avec l'aide de ChatGPT, la compréhension du code est facilitée et accélérée.
Prenons un exemple de code simple tout d'abord.
<?php require __DIR__ . '/footer.php'; ?>
Demandons à ChatGPT de commenter ce code simple (celui d'une page de caddie de site d'ecommerce)
Voici la réponse de ChatGPT (on remarquera que ChatGPT détecte une particularité : le script commence par la fin d'une condition Else et le signale à l'utilisateur)
This code is a PHP template for a shopping cart page. It starts with an else
statement, which means that it will run when the previous if
statement is not met. The code displays a table of the items in the user's cart, including item name, price, quantity, actions, and sub total. The table is populated by looping through the items stored in the $_SESSION['cart']
array. A form is also provided for the user to checkout. At the end of the code, the footer.php
file is required. The code also includes a CSRF input field to prevent cross-site request forgery attacks.
Maintenant, voici un autre exemple de commentaire de code plus complexe.
Il s'agit du code extrait d'une application mobile Android.
public LoginRepository(LoginResponseParser responseParser, Executor executor,
Handler resultHandler) {
this.responseParser = responseParser ;
this.executor = executor ;
this.resultHandler = resultHandler ;
}
public void makeLoginRequest(
final String jsonBody,
final RepositoryCallback<LoginResponse> callback
) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
Result<LoginResponse> result = makeSynchronousLoginRequest(jsonBody) ;
notifyResult(result, callback) ;
} catch (Exception e) {
Result<LoginResponse> errorResult = new Result.Error<>(e) ;
notifyResult(errorResult, callback) ;
}
}
}) ;
}
private void notifyResult(
final Result<LoginResponse> result,
final RepositoryCallback<LoginResponse> callback,
) {
resultHandler.post(new Runnable() {
@Override
public void run() {
callback.onComplete(result) ;
}
}) ;
}
...
}
Il suffit de copier-coller le même bloc à ChatGPT et de lui demander "d'expliquer".
Voici la réponse de ChatGPT.
"This is a class called LoginRepository that is responsible for handling login requests and sending the results back to the caller. It has a constructor that takes in three dependencies: a LoginResponseParser, an Executor, and a Handler.
The makeLoginRequest method is used to initiate a login request with a JSON body and a callback to handle the response. Inside the method, it uses the executor to execute a new Runnable task. In this task, it tries to make a synchronous login request by calling the makeSynchronousLoginRequest method and passing in the JSON body. If the request is successful, it will get the response in the form of Result<LoginResponse> and notify the callback by calling the notifyResult method. If there is an exception, it will create an error result and call the notifyResult method with the error result.
The notifyResult method uses the resultHandler to post a new Runnable task that calls the onComplete method of the callback and passing in the result as an argument. This is done to ensure that the callback is executed on the main thread, which is required by the Android framework
"
Cette réponse structurée et circonstanciée permet, non seulement de comprendre le code lui-même, mais aussi d'apprendre.
Documenter le code que le développeur a lui-même écrit
Developper.png
Les développeurs aiment rarement documenter leur code: écrire des commentaires dans le code est indispensable, mais lorsqu'ils ont passé des jours à écrire leur code le plus inspiré, ils font souvent l'impasse sur cette étape.
Maintenant, ChatGPT est là pour les aider.
Voici ce que ChatGPT répond lorsqu'on lui demande de documenter le code suivant (création d'un compte sur un site d'ecommerce)
Extrait du code
Voici l'analyse de ChatGPT
The following code is a PHP script for creating a new user account for a website.
- It starts by checking if the user is already logged in by checking the 'name' value in the session. If it is set, the user will be redirected to the homepage.
- The script then includes two files, csrf.php and db.php.
- If the 'register' value is set in the POST request, the CSRF token is validated with the 'validateToken' method from the CSRF class.
- Then the user's inputs for last name, first name, email, phone, address, and password are filtered, sanitized and hashed for security.
- The script checks the database for an existing user with the same email. If the email is already in use, the script sets an error flag to true.
- If there is no existing user with the same email, the user's data is inserted into the database, and the user's information is stored in the session. The user is then redirected to the homepage.
- The HTML section contains the layout for the registration page. The form has fields for first name, last name, email, phone, address, and password. The PHP script outputs an error message if the error flag is set.
ChatGPT peut améliorer le code écrit par un développeur
Optimisation de code afin de le rendre plus rapide
Il existe des dizaines de manières de coder une fonction, mais chacune consomme une puissance de calcul différente et s'exécute plus ou moins rapidement.
L'optimisation du code consiste à le rendre plus rapide et moins gourmand en ressource.
ChatGPT connaît de nombreux algorithmes pour exécuter une même tâche et peut vous fournir des recommandations pour améliorer votre propre code.
Il peut expliquer également les modifications qu'il effectue afin que vous les réapproprier. C'est intéressant du point de vue pédagogique.
Exemple dans lequel on lui a fourni un code initial.
On lui demande alors d'écrire une meilleure version
Voici les explications qu'il donne
"In this version, I’ve removed the anonymous inner classes and replaced them with lambda expressions. I also removed the final keyword from the parameters of the makeLoginRequest method and the notifyResult method, as it is not necessary.
The makeSynchronousLoginRequest method was extracted from the anonymous inner class and made private, since it is only used internally by the LoginRepository class.
This version of the code is more concise and easier to read, as it eliminates unnecessary code and improves the readability of the method."
Refactoring de code afin de le rendre plus facile à maintenir
ChatGTP peut refactorer un code pour faciliter sa maintenance.
Dans le domaine de la programmation, le refactoring de code est le processus de restructuration d'un code informatique existant sans changer son comportement externe (la fonction qu'il assure). Le refactoring vise à améliorer la conception, la structure et/ou la mise en œuvre du logiciel (ses attributs non fonctionnels), tout en préservant sa fonctionnalité. Les avantages potentiels du refactoring son les suivants:
- permetttre une meilleure lisibilité du code
- permettre une réduction de sa complexité
- améliorer la maintenabilité du code source
- créer une architecture interne ou un modèle d'objet plus simple, plus propre
ChatGPT peut permettre à un développeur à dépasser ses compétences
ChatGPT peut apprendre de nouvelles techniques de programmation à un développeur
Vous pouvez demander à ChatGPT de vous apprendre à résoudre les problèmes les plus complexes, avec un vocabulaire très simple.
Si vous êtes un formateur dans le domaine de l'informatique, il peut même vous apprendre comment enseigner et décomposer les points que vous devez couvrir pour un sujet précis.
Vous avez une idée d'application avec un code classique, en low code ou en no code ? Il peut créer une feuille de route/roadmap complète comme un mentor le ferait et vous "suivre" en vous fournissant un soutien continu tout au long du processus de développement ou vous guidant et vous formant.
Voici ce que ChatGPT lorsqu'on lui pose la question suivante: How to create a training session management application using airtable ?
1. Create an Airtable base using the “Project Management” template.
2. Set up the fields to include the following information:
- Training Session Name
- Date and Time
- Location
- Trainer
- Target Audience
- Session Outline
- Materials Needed
- Session Evaluation
3. Create a “Sessions” table to store the information about each training session.
4. Set up “Views” in the “Sessions” table.
- Calendar View – to easily see upcoming sessions
- List View – to quickly scan and find a session
- Assigned Trainer View – to see what sessions a particular trainer is assigned to
- Assigned Audience View – to see what sessions a particular audience is assigned to
5. Set up an “Attendees” table to track who will be attending each training session.
6. Create “Forms” to allow attendees to sign up for a session.
7. Set up “Automations” to send notifications to attendees when a session is about to begin.
Ensuite, il suffit de lui demander des précisions dans le même échange sur la mise en oeuvre de chacun des points.
ChatGTP peut également traduire un code dans un autre language que le développeur maîtrise moins bien
En tant que programmeurs, nous trouvons parfois des bouts de code utiles mais pas dans notre langue préférée et alors nous exerçons notre cerveau et écrivons le même code dans notre propre langue, ce qui est un bon exercice pour les programmeurs débutants qui, je l'espère, ne commenceront pas à sauter avec cette fonctionnalité étonnante.
Mais bon, au travail, sous la pression d'une version, nous pouvons certainement gagner beaucoup de temps en réécrivant simplement tout le code rapidement en utilisant ChatGPT tout en ne laissant aucun bug à corriger dans la prochaine version.
Par exemple, voici un code Python
# Une simple fonction Python pour démontrer
# Le polymorphisme
def add(x, y, z = 0) :
return x + y+z
# Code du pilote
print(add(2, 3))
print(add(2, 3, 4))
Maintenant, réécrivons ceci rapidement en utilisant ChatGPT.
ChatGTP peut enfin debugguer et sécuriser les codes
ChatGPT peut détecter des failles de sécurité dans le code écrit par un développeur
On peut être bon codeur et avoir le temps de réaliser une veille sur l'ensembles des failles de sécurité qu'utilisent les hackers. ChatGPT "connait" de nombreux hacks et peut les identifier très rapidement.
ChatGPT peut débugguer du code
Pour trouver le bug qui empêche votre code de fonctionner comme vous l'avez prévu, vous pouvez laisser simplement ChatGPT analyser la logique du code que vous essayez d'implémentere et ChatGPT trouvera ce qui buggue.