L'auteur explique que les bons ingénieurs logiciels fonctionnent en boucle : ils construisent un modèle mental des besoins, écrivent du code, comparent le résultat avec leur modèle, puis ajustent le code ou les exigences. Les LLMs, bien qu’efficaces pour générer ou modifier du code, échouent à maintenir ces modèles mentaux cohérents. Ils se perdent face aux échecs de tests, hallucinent des détails, et peinent à gérer le contexte ou à zoomer entre le global et le local — des capacités essentielles pour résoudre des problèmes complexes. Même avec des avancées, ils restent des outils d’assistance, pas des développeurs autonomes : c’est à l’humain de garantir la justesse des exigences et du code, surtout sur des projets non triviaux. On préfèrera donc miser sur une collaboration humain-agent, mais le développeur reste aux commandes.
Dans cet article, Milan Milanović partage les cinq livres qui ont marqué sa carrière d’ingénieur et son évolution vers le poste de CTO. Il explique comment "The Pragmatic Programmer" lui a appris à écrire du code professionnel, durable et adaptable, en insistant sur l’importance de l’itération rapide et de la responsabilité collective. "Designing Data-Intensive Applications" a transformé sa vision de l’architecture des systèmes, en mettant l’accent sur les compromis entre cohérence, disponibilité et tolérance au partitionnement, ainsi que sur la rigueur dans le choix des bases de données. "A Philosophy of Software Design" l’a aidé à lutter contre la complexité du code en privilégiant des modules profonds et bien conçus, faciles à maintenir. "Thinking, Fast and Slow" de Daniel Kahneman lui a révélé l’impact des biais cognitifs sur la prise de décision, l’incitant à adopter une approche plus analytique et moins intuitive. Enfin, "The 7 Habits of Highly Effective People" a renforcé ses compétences en leadership, en lui apprenant à se concentrer sur ce qu’il peut contrôler, à écouter activement et à investir dans son développement personnel. Ces ouvrages, au-delà des compétences techniques, lui ont offert des modèles mentaux essentiels pour devenir un meilleur architecte, décideur et leader. Une lecture inspirante pour quiconque souhaite allier expertise technique et croissance personnelle.
L'article explore l'impact des outils de génération de code assistés par l'IA sur le développement logiciel moderne. Il met en lumière des outils comme Cursor et Windsurf, qui intègrent l'IA pour aider les développeurs à écrire du code plus rapidement et plus efficacement. Cursor, basé sur VSCode, offre des fonctionnalités comme la complétion de code intelligente et un chat intégré pour discuter des améliorations de code. Windsurf, quant à lui, va plus loin en permettant des refactorings complexes et une compréhension multi-fichiers. Cependant, l'article souligne également les défis et les pièges potentiels de ces outils, tels que la génération de code qui compile mais ne fonctionne pas comme prévu, l'accumulation de dette technique, et la dépendance excessive à l'IA qui pourrait entraîner une perte de compétences. En outre, l'article aborde l'intégration de ces outils dans les workflows de développement, notamment avec des plateformes comme Graphite et Diamond, qui automatisent les revues de code et améliorent la qualité logicielle. Enfin, il réfléchit sur l'avenir du métier de développeur, suggérant que les rôles évolueront vers une supervision et une orchestration accrues des outils d'IA, tout en maintenant une compréhension solide des fondamentaux du codage.
L'article explore les traits communs des meilleurs développeurs. L'auteur souligne l'importance de lire la documentation officielle, de maîtriser ses outils, et de comprendre les messages d'erreur. Il met également en avant la capacité à décomposer les problèmes, à ne pas hésiter à se plonger dans le code, et à toujours aider les autres. Enfin, il insiste sur l'importance de l'écriture, de l'apprentissage continu, et de la patience dans le développement logiciel.
Suite de http://blog.ippon.fr/2024/11/22/bdx-i-o-2024-innover-et-reflechir-aux-enjeux-sociaux-des-technologies-de-demain-1-2/, le résumé des conférences :
- Karpenter, le futur de la gestion des noeuds Kubernetes
- Comment utiliser le NoCode comme un microservice dans une architecture logicielle complexe
- Les 20 minutes Typescript les plus rentables de votre vie !
- Je malmène ta prod en direct avec 15 failles de sécu
- Game over pour le design
- Pull Request Professionnelle : Comment promouvoir son travail en interne
- Sécurité automatisée - Regardez vos failles en face.
- Alerte, tout brûle ! Comment gérer des incidents techniques
- Angular change de logo mais pas que.
- Microservices Kotlin Benchmark : coroutines, virtual threads, grpc, http… le match !
- Keynote de fermeture : Si l'IA peut créer de la musique, à quoi servent les musiciens aujourd'hui ?
Tout est dans le titre
Tout est dans le titre
roadmap.sh is a community effort to create roadmaps, guides and other educational content to help guide developers in picking up the path and guide their learnings.
En résumé, les outils recommandés :
- utilisation du shell Linux
- distribution Arch Linux
- tiling window manager i3
- terminal URxvt avec tmux / tmuxp
- IDE vim
- git
- outils cli pour accéder aux bases de données : mycli ou pgcli
Un article très intéressant... et un twist final pas mal ^^
L'auteur présente ses principes en tant qu'auteur et développeur :
- l'état d'esprit (mindset) précède les outils
- la qualité est au dessus de la quantité
- se concentrer sur les fondamentaux
- écrire des articles qui resteront vrais dans le futurs et cohérents
- l'expérimentation est la clef
Les outils en question :
- Makefile
- CTags
- Valgrind
- Time
- Doxygen
- Clang/LLVM
- GDB (GNU Debugger)
- CMake
- Cscope
Très beau texte
Tout est dans le titre
Un texte très juste sur ce qui peut motiver un développeur à travailler dans une entreprise... et ce n'est clairement pas les "à côté"
SRE = Site Reliability Engineering
L'article explique bien ce qu'il y a à savoir :)
Tout est dans le titre
Tout est dans le titre
... et comment en sortir
L'auteur explique ce qu'est un comportement professionnel d'un développeur face à des exigences irréalisables.