Devops for Growth
108.0K views | +0 today
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'dette technique'. Clear
Scooped by Mickael Ruau
Scoop.it!

Dette technique et fonctionnelle en mode agile

Dette technique et fonctionnelle en mode agile | Devops for Growth | Scoop.it


Dans le premier article de cette série, j’ai défini la notion de dette technique et celle de dette fonctionnelle, ou « Functional Debt », qui est fondamentalement du code bien écrit mais pas terminé ou plus utilisé. A l’inverse de la dette technique, ce code inutile (dette fonctionnelle) n’est pas imputable à un mauvais développement.

Dans le second article sur la dette fonctionnelle, je vous ai donné quelques clés pour identifier les zones de votre application où s’est installée la dette fonctionnelle au fil du temps. Par exemple, discuter avec les utilisateurs est un préalable pour identifier la dette fonctionnelle. Vous collecterez un tas d’informations utiles, voire surprenantes, sur le logiciel existant.

Aujourd’hui je souhaite continuer cette série avec un exemple concret. J’espère qu’il vous aidera à éliminer petit à petit la dette fonctionnelle de vos applications.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

How organizations can shed the technical debt of legacy code · Devbridge

How organizations can shed the technical debt of legacy code · Devbridge | Devops for Growth | Scoop.it
Don't let legacy code technical debt slow down your business. Learn agile techniques to help manage and reduce product debt.
Mickael Ruau's insight:

 

Based on industry-standard and our experience, companies should weigh their options by using the previous questions and their answers as a guide. The following matrix we developed helps visualize the options:

 

 

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Piranha: Reducing Feature Flag Debt @Uber

Piranha: Reducing Feature Flag Debt @Uber | Devops for Growth | Scoop.it
Ramanathan: I'm going to talk about my experiences with building Piranha and deploying it at Uber, to reduce stale feature flag debt. I will provide an introduction to feature flags, explain how they can introduce technical debt, and the challenges associated with handling the debt.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Dealing with Technical Debt in 2021

Dealing with Technical Debt in 2021 | Devops for Growth | Scoop.it
The panelists discuss how they identify technical debt, how they make room to invest in paying debt down, and how they approach work to minimize future debt.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Êtes-vous pour le refactoring de code ou la réécriture d'un projet de zéro ? - Débats sur le développement - Le Best Of

Êtes-vous pour le refactoring de code ou la réécriture d'un projet de zéro ? - Débats sur le développement - Le Best Of | Devops for Growth | Scoop.it


Réécrire ou ne pas réécrire ?

« Sur la base de mon expérience ici, vous ne devriez probablement pas le faire si vous croyez dans le battage médiatique indiquant que la réécriture n'est jamais la bonne décision. Dans tous les cas, vous devez par défaut choisir la position ‘non’, puis travailler très dur pour la justifier si nécessaire. Voici quelques scénarios où une réécriture pourrait être justifiée :

Si votre architecture ou schéma est très loin de s’aligner avec ce dont vous avez besoin et qu'il n'y a pas de chemin de migration clair, car la mise à jour incrémentielle de l'architecture ou des schémas serait extrêmement difficile
Si ces problèmes ralentissent considérablement votre équipe
Si votre pile technologique actuelle empêche de nombreux ingénieurs de contribuer et les former à la pile technologique n'est pas une option.


« Même si vous cochez toutes ces cases, vous devez tenir compte des réalités commerciales et savoir si cela a du sens pour votre entreprise, votre équipe. Il peut y avoir plus de scénarios où une réécriture est justifiée. Il est difficile de le justifier, mais cela en vaut la peine et peut être couronné de succès ».

En définitive, une réécriture de code vous donne l'avantage de l'expérience : vous connaissez les faiblesses de l'ancien système, les défauts de conception, les exigences actuelles et la future feuille de route. Vous pouvez faire des planifications et concevoir un système qui surmontera les problèmes que vous avez anticipés. L'inconvénient est que vous devez maintenir deux systèmes pendant que vous écrivez le nouveau.

En revanche, le refactoring vous permet de remplacer lentement les anciens morceaux de code de votre système par de nouveaux. Prenez une fonction, une classe ou un module, et vous le/la réécrivez dans le cadre de votre projet. Tous vos tests et intégrations sont là, il est facile de vérifier que vous n'avez rien cassé, pour vous assurer que la fonctionnalité reste la même. Mais vous ne pouvez pas faire des merveilles avec le refactoring de code, vous ne pouvez pas choisir un langage de programmation différent et la plupart du temps, vous ne pouvez même pas remplacer le framework principal de votre projet.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

10 VS Code Extensions to Fight Technical Debt - DZone Agile

10 VS Code Extensions to Fight Technical Debt - DZone Agile | Devops for Growth | Scoop.it
These 10 VS Code extensions will help you keep your codebase healthy and manage technical debt continuously.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Boy Scout Rule Applied to Every Day Coding

Boy Scout Rule Applied to Every Day Coding | Devops for Growth | Scoop.it


Much of the time, following the Boy Scout Rule won’t be hard. It’s an incremental strategy. It’s easy to start and easy to sustain. Here are some typical challenges and ideas on how to be a Boy Scout.

Adding to a Long Function

Extract something; there must be plenty of opportunities to pull out some idea and name it. You want to add 3 lines, take out 5. Net improvement leaves a function 2 lines shorter. But I bet you can easily do better. Fix another complex conditional nearby to start a pattern of improvement.
Adding to a complex conditional

Extract the conditional into a helper function. Name it and its parameters well. Write a few tests for it. That’s picking up the obvious beer cans.

Look at the extracted code carefully. Does the conditional really belong with some other module? If so, the complex conditional is likely to be duplicated and the newly extracted function should be moved. Do the work or add it to your technical debt list.
Copy/Paste/Tweak Temptation

You see a copy/paste/tweak opportunity that meets the functional requirements. Don’t do it, except maybe to test your hypothesis. Before, or after the change, do what the code is telling you: extract the common code into a helper function. Generalize and parameterize it so it handles both cases. Write tests around the code to be extracted to guard against breaking existing functionality. Make a list of the other previous cut/paste/tweaks of the same code for conversion.
Cryptic Local Variable Name

Once you figure out what the variable is for, rename it to help you, and your teammates, on the next code visit.
Deep Nesting

Pull out a nesting level or two into a helper function.
Broken Glass and Beer Cans in the Fire Pit

Put on some gloves. Clean out the big pieces of glass and cans. Bag the trash. A heavy duty bag is best. Be careful not to put any embers in the bag. Take the trash back to the boat.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Secouer un legacy... Attention à la poussière sous le tapis....

Secouer un legacy... Attention à la poussière sous le tapis.... | Devops for Growth | Scoop.it
Attends… reste ! je vais te raconter quelque chose ! � Dans cet article, je vais t’expliquer comment avec une équipe de trois développeurs nous avons fait évoluer le socle technique d’une grosse application monolithique, de manière transparente pour les utilisateurs.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Managing IT debt and obsolescence: Preserving IT agility, security and innovation capacity

Managing IT debt and obsolescence: Preserving IT agility, security and innovation capacity | Devops for Growth | Scoop.it
Cigref has published its latest report entitled "Managing IT debt and obsolescence: Preserving the agility, security and innovation capacity of IT".This...
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Plongée dans le dark code

Plongée dans le dark code | Devops for Growth | Scoop.it
La Qcon London 2017 a dédié une track complète autour du dark code et du legacy. Perspective autour de la suppression de code, des Quality Views et d'une boule de cristal de priorisation de la dette technique.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Gérer votre Dette Logicielle

Gérer votre Dette Logicielle | Devops for Growth | Scoop.it
La dette logicielle existe sous différentes formes. La dette technique, largement connue, et d'autres formes comme la dette de compétence ou de qualité. La dette logicielle peut causer une augmentation des coûts de maintenance du produit et peut déprimer les développeurs. Plusieurs solutions existent pour la gérer.
Mickael Ruau's insight:

Pour garder une faible maintenance logicielle, il faut faire attention à la fois à la dette technique et à la dette de compétence, comme Niklas l'explique :

Comme la dette technique grandit inexorablement avec le temps, à moins que vous ne la combattiez, la dette de compétence fait de même. La plus grosse différence entre ces deux types de dettes est que plus vous changez le code, plus la dette technique croît, tandis que la dette de compétence croît lorsque vous arrêtez de le changer ! Cette dernière est donc un problème plus profond dans les systèmes matures où le développement actif est terminé.

Niklas propose deux techniques qui peuvent être utilisées pour réduire votre dette : programmer à deux et refactorer le code :

Pour moi, la vraie valeur du pair programming est la réduction à la fois de la dette technique et de la dette de compétence. En travaillant par paire, les membres de l'équipe élargissent les parties du code qui leur sont familières et améliorent l'imbrication. De manière similaire, la valeur du refactoring n'est pas uniquement la réduction de la dette technique. Le refactoring est un bon moyen de réduire également la dette de compétence. C'est seulement quand on peut changer un système qu'on le comprend vraiment.

Quand la dette de compétence croît, les efforts nécessaires à la maintenance des systèmes augmentent, jusqu'au point où les entreprises considèrent l'option de remplacer le système

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pilotage de la dette et de l’obsolescence IT : Préserver l’agilité, la sécurité et la capacité d’innovation des SI

Pilotage de la dette et de l’obsolescence IT : Préserver l’agilité, la sécurité et la capacité d’innovation des SI | Devops for Growth | Scoop.it
Le Cigref publie son dernier rapport intitulé “Pilotage de la dette et de l’obsolescence IT : Préserver l’agilité, la sécurité et la capacité d’innovation...
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Three (or Four) Ways to Make a Payment Plan for Tech Debt

Three (or Four) Ways to Make a Payment Plan for Tech Debt | Devops for Growth | Scoop.it
Here are some specific blueprints to make refactoring part of your team’s schedule, so it doesn’t get to be a burden on your agility...
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Calcul de la dette technique et ROI d'une fonction inutile

Calcul de la dette technique et ROI d'une fonction inutile | Devops for Growth | Scoop.it
Lisez aussi :

Réduire la dette technique et fonctionnelle « Functional Debt » – Part #3

Dette fonctionnelle vs. dette technique – Part #2 : comment identifier la “functional debt”

Gérer la dette technique, c’est bien, mais qui gère la dette fonctionnelle ? – Part #1
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Tech Debt and the Pragmatic Middle Ground

Tech Debt and the Pragmatic Middle Ground | Devops for Growth | Scoop.it
It's tempting to get straight to the point: how to remove tech debt, and how to keep it at bay. But that would be missing the journey. The journey without which you can't really appreciate the destination. So let's start with the time when you were not aware of this thing called "tech debt."
Mickael Ruau's insight:

 

Here's the dirty secret of teams who ship impact and remove tech debt at the same time: they rarely ask for permission to remove tech debt. Instead, they bundle the removal of tech debt to the high-impact project and just do it.

Dev: "We'll ship this feature that generates $5M/year additional revenue and we'll also introduce integration testing on the way."
PM: "Can we just ship without the integration testing?"
Dev: "Sure. But it will probably take longer then and we might lose revenue on the way. We're seeing lots of bugs go out in recent features and we'd need to do more manual testing, and more releases. By doing automated integration testing, we'll be done faster. We're estimating it would take 4 months this way and 6 months without the integration tests."

Why bother bundling with projects, though? It's to make sure they get done. While projects that only reduce tech debt but deliver no business value will often be de-prioritized, high impact projects almost never are. If you want to see your large tech debt reducing proposals through, couple them with high-impact projects.

The pragmatic middle ground: just enough tech debt

Is there such a thing as too little tech debt? If you pay off enough of tech debt, at some point, you realize that there is. The name of too little tech debt is premature optimization - and it can slow down teams and companies at critical times.

Take an example of a startup. When the company launches, speed and iterating quickly is key to surviving and winning. Do you worry about clean APIs and nice data models or just dump everything in an unstructured JSON that any developer can modify? The startups I've worked at that grew to be successful all went for the tech debt-heavy approach in the early days.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Types of Technical Debt and How To Manage Them - DZone Agile

Types of Technical Debt and How To Manage Them - DZone Agile | Devops for Growth | Scoop.it
Technical debt is complicated to handle and has no specific metrics attached to it. Moreover, quantifying the principal debt amount from the point the shortcut was first taken and estimating the accurate resources needed to pay off the interest and the principal is no easy job. It is equally difficult to predict the expenditure of resources on technical debt over the years.

All this uncertainty around the quantification of technical debt eventually leads to ignorance. For starters, as there is no definite loss associated with it, you will ignore it for as long as you can. However, there’s only so much time you can go before the debt becomes a burden you can no longer carry. The repercussions of unattended technical debt are visible at all levels within the company. There are 3 types of debts that organizations experience:-

Accidental technical debt - As systems undergo modifications and evolve according to changing user requirements, development teams often realize that the earlier functionality does not work. As a result, refactoring the application becomes a priority, and while balancing every aspect of the development process, your teams may accidentally build technical debt on the way.
Deliberate technical debt - A common debt that development teams choose to grow due to tight deadlines or unexpected work pressure. In this scenario, the teams have the required knowledge of what can be improved but intentionally overlook it to achieve on-time product delivery.
Bit rot technical debt - This type of debt occurs over time as developers frequent changes in the system. The original components are modified without considering the initial application design.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Tackling Technical Debt: Founding OutSystems - DZone DevOps

Tackling Technical Debt: Founding OutSystems - DZone DevOps | Devops for Growth | Scoop.it

Recently, OutSystems surveyed 500 large companies around the world to examine the cost of technical debt facing businesses and uncover the challenges companies face as they confront its causes. The results from the companies surveyed were many of the same things I’ve observed throughout my career. 

It’s important to note that while the causes of technical debt have largely remained the same, the pace at which technical debt occurs has grown substantially.

And so it's a hack, right? What we call a hack at OutSystems, they did a hack to just release the software quickly. And those hacks compound into technical debt.” - on the Dev Interrupted podcast at 27:11

The survey we conducted isolated three major causes of technical debt. They are as follows: 

  1. The amount of developer frameworks. An increase in frameworks leads to an increase in technical debt. 
  2. Developer erosion. Employees leaving an organization and taking legacy knowledge with them. 
  3. Compromises in quality of architecture and code. Often caused by a shortsighted view that what needs to be done now is more important than long-term stability of the codebase.

In the past, companies believed they could buy their way out of this problem, but that strategy has proven ineffective. The reality is, the most successful companies must build the software they require to meet their business needs. 

Simply purchasing what you need doesn’t solve your problems because even purchased systems must be cobbled together, requiring unique API’s, unique UI’s, unique portals, and unique mobile applications. 

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Developers Are Leaving Jobs to Escape Bad Codebase - DZone Agile

Developers Are Leaving Jobs to Escape Bad Codebase - DZone Agile | Devops for Growth | Scoop.it
Recently, Stepsize surveyed 200+ software engineers from different industries to learn how codebase health impacts engineer hiring and retention.

In this article, I’ll share some of the key stats from the survey, why investing in a codebase is crucial for businesses, and questions you can ask in the interview as an engineer to learn about the company’s codebase health.
Our Findings

82% believe that lack of proper development practices affects their job satisfaction.
62% consider code quality as an important factor when choosing a new job.
51% of engineers left or considered leaving a job because of technical debt.
For 21% of engineers, excessive amounts of technical debt have been the number one reason for changing a job.
Both junior and senior developers equally consider codebase health to be an important factor when choosing a new job.

Today, hiring and retaining developers is one of the biggest challenges for tech companies. And while recruiters, hiring managers, and leaders are focusing on attracting new tech talent, they might be ignoring one of the biggest reasons they are losing them in the first place: codebase health.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Tools to Track and Manage Technical Debt - DZone Agile

Tools to Track and Manage Technical Debt - DZone Agile | Devops for Growth | Scoop.it
Small, Medium, and Large Technical Debt

To start managing your technical debt, you first need to decide whether you are dealing with the small, medium, or large pieces of debt and work separately with each.

Small pieces of debt: the type of tech debt that can be addressed as soon as the engineer spots it in the code and it’s within the scope of the ticket they're working on.

Medium pieces of debt: the type of debt that can be addressed within a sprint. It should go through the same sprint planning process as any feature work and be considered just as rigorously.

Large pieces of debt: the tech debt that cannot be addressed immediately or even in one sprint. The best companies we've interviewed have quarterly technical planning sessions in which all engineering leaders participate.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Êtes-vous pour le refactoring de code ou la réécriture d'un projet de zéro ? - Débats sur le développement - Le Best Of

Êtes-vous pour le refactoring de code ou la réécriture d'un projet de zéro ? - Débats sur le développement - Le Best Of | Devops for Growth | Scoop.it
Nom : rewrite.png Affichages : 80932 Taille : 40,5 Ko

Quelles étaient les options ?

À ce stade, Remesh a réalisé que sa base de code avait besoin d'un changement majeur. Dans ce cas de figure, trois options se posent à vous :

Le refactoriser jusqu'à ce que le problème soit résolu
Le réécrire d'une traite
Le réécrire au coup par coup


« Pour le frontend, le refactoring n'était pas vraiment une option. Notre version d'Angular était suffisamment ancienne pour que, malheureusement, nous n'ayons pas vraiment de chemin de mise à niveau clair vers une version moderne d'Angular (de toute façon nous ne voulions pas être sur une version d'Angular). Et puisque nous anticipions des changements majeurs dans l'interface utilisateur et l'API, un refactoring ne serait pas réalisable. Donc, sur le frontend, nous devions décider entre réécrire d'un seul coup ou réécrire au coup par coup.

« Le back-end avait quelques problèmes que nous voulions résoudre - notre schéma, notre langage et notre base de code ne correspondaient plus au problème que nous résolvions. Nous avons utilisé Elixir pour son support massif de concurrence, pourtant nous n'en avons jamais eu besoin et cela a fini par nous porter préjudice : la façon dont la concurrence est gérée dans la machine virtuelle Erlang a rendu le profilage très difficile, car vous savez ce qui est calculé, mais pas d'où il est appelé - et bonne chance avec le réglage des performances. La base de code Elixir a également limité la contribution de nos ingénieurs ML à la base de code backend : ils travaillaient en Python tous les jours et n'avaient pas le temps de se plonger profondément dans Elixir. Pour faire court, nous voulions quitter Elixir et passer à Python, car alors toute notre équipe aurait pu contribuer, le langage prendrait en charge les problèmes et nous aurions plus de facilité à profiler le code ».

Au bout du compte, l’argument en faveur de la réécriture se résumait vraiment à cette confluence de facteurs :

Remesh voulait que chaque membre de son équipe puisse contribuer à la base de code backend, et Python avait l’avantage d'avoir déjà une large adoption déjà au sein de l’équipe et d’être facile à apprendre
L’ancienne base de code était si fragile et si peu testée que sa refactorisation serait un processus ardu.
Remesh pouvait gagner en efficacité en passant à un framework « opinionated » comme Django, avec beaucoup de valeurs par défaut permettant de gagner du temps (comme Django Admin).
Remesh voulait avoir l'opportunité de créer une toute nouvelle version influencée par ce que l’entreprise avait appris des clients et pourrait ensuite gérer la transition vers la nouvelle version plutôt que de mener une bataille pendant 12 mois avec beaucoup de clients à chaque changement.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

La Dette Technique...N'Est Pas Technique : Comment Les Entreprises Peuvent La Régler ?

La Dette Technique...N'Est Pas Technique : Comment Les Entreprises Peuvent La Régler ? | Devops for Growth | Scoop.it
Dans cet article, trois experts discutent sur ce que peuvent faire les équipes d'ingénieurs pour communiquer l'importance du traitement de la dette technique aux dirigeants des entreprises.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

All technical debt is a risk to the product and to your business.

All technical debt is a risk to the product and to your business. | Devops for Growth | Scoop.it
If you were buying a car, or a TV, you as the purchaser would do your best to understand the product that you are buying, the quality tradeoffs, and the capabilities. So why is so much of software opaque to the business? Why does the business have a fire-and-forget mentality and little interest in understanding […]
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Appliquer la sécurité by design à l'aide de CMMI pour le développement

Appliquer la sécurité by design à l'aide de CMMI pour le développement | Devops for Growth | Scoop.it
Pour permettre le développement de produits sécurisés, les processus dédiés aux développements de l'application doivent inclure des tâches liées à la sécurité.
Mickael Ruau's insight:

CMMI Istitute a publié le Guide d'Application pour Améliorer les Processus de Sécurisation des Produits. Ce guide d'application contient de nouveaux ensembles de processus dédiés aux aspects de la sécurité autour de l'ingénierie, la gestion de la sécurité dans les projets, et l'organisation des problématiques liées à la sécurité. Ce guide peut être utilisé avec Capability Maturity Model Integration for Development (CMMI-DEV) afin d'améliorer les processus pour que les organisations qui les utilisent puissent offrir des garanties de sécurité à leurs clients.

Le CMMI Institute et les auteurs du guide souhaiteraient avoir des retours de la part d'organisations qui ont utilisé ce guide.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Dette Technique Et Entropie Logicielle

Dette Technique Et Entropie Logicielle | Devops for Growth | Scoop.it
Faire des logiciels, tout le monde sait. Revenir aux fondamentaux, peu en sont capable. Cette présentation revient sur le principe de Dette Technique et montre la différence avec l'entropie liée aux pratiques de développement.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Strategies to Modernize, Maintain, and Future-Proof Systems

Strategies to Modernize, Maintain, and Future-Proof Systems | Devops for Growth | Scoop.it
The book Kill it with Fire by Marianne Bellotti provides strategies that organizations can use to modernize, maintain, and future-proof their systems. She suggests choosing strategies based on the organizational context, and defining what value you’re hoping to see from modernization.
Mickael Ruau's insight:

Key Takeaways

  • Old systems are successful systems
  • Legacy modernization is a valuable skill no matter how old your systems are
  • Define the value-add of modernization up front and be specific; don’t assume newer is better
  • Metrics can help reinforce agile development and keep everyone on the same page
  • Communication pathways and incentives have an outsized impact on which strategies will work best
No comment yet.