Succeeding with Scrum – Interview with Ken Schwaber
Lors de son passage à Montéal le 14 juillet, KenSchwaber a accordé une entrevue à Vincent Tencé. Découvrez comment réussir avec Scrum, visionnez la vidéo!
Lors de son passage à Montéal le 14 juillet, KenSchwaber a accordé une entrevue à Vincent Tencé. Découvrez comment réussir avec Scrum, visionnez la vidéo!
Les Agilistes de ce monde sont au fait de l’importance des tests automatisés pour assurer la pérennité d’un projet informatique. En fait, tout développeur qui a tenté la pratique du TDD et qui a réussi à inclure cette pratique dans son travail au quotidien découvre rapidement le sentiment de puissance qui en résulte. Ce sentiment de puissance prend sa source dans le fait que le développeur a beaucoup plus d’assurance et de confiance dans le logiciel qu’il développe. Le fait d’avoir plus d’assurance et de confiance laisse une meilleure impression au client et inévitablement résulte en une équipe plus heureuse. Cependant, afin de toujours s’assurer de livrer le maximum de valeur au client, il est parfois nécessaire d’ajuster le niveau de couverture des tests selon le contexte du projet.
Dans le cadre du développement d’une ‘preuve de concept’ (prototype), par exemple, il y a de fortes chances que le développement du prototype ne se poursuive pas pendant des mois. Le système ayant une taille réduite, l’équipe peut limiter la couverture des tests unitaires à certaines parties critiques du code car il est moins probable que le système régresse en qualité sans que l’équipe découvre rapidement une anomalie. Ainsi, s’appuyer simplement sur quelques tests manuels peut être un choix judicieux lorsque l’équipe a peu de temps pour développer les fonctionnalités requises afin de répondre aux objectifs d’affaires du prototype, à condition bien sûr de ne pas reprendre le développement du système à partir du prototype (ce qui se produit malheureusement dans la plupart des cas). Dans un projet Web MVC, par exemple, une équipe pourrait décider de tester uniquement le cœur du domaine d’affaires sans tester les contrôleurs ni les vues.
Le fait de couper sur les tests sous prétexte qu’on veut livrer plus de fonctionnalités d’un système dont le développement se déroule sur plusieurs mois à l’aide d’une approche Agile de développement logiciel est un choix qu’on pourrait qualifier de risqué. Un tel choix peut ralentir sérieusement l’avancement du projet car le risque d’endommager les bouts de logiciel déjà livrés sans test augmentera de façon quasi exponentielle sprint après sprint. En plus de provoquer l’inverse de l’effet escompté, ce genre de choix augmentera significativement le coût de développement du système. De plus, cette diminution de qualité créera nécessairement des tensions entre le client et l’équipe, ce qui nuira significativement au plaisir de développer du logiciel.
On constate ainsi que la définition de « Just Good Enough » pour les tests varie significativement d’un contexte de développement à l’autre, d’où l’importance de l’établissement d’une définition de ‘Terminé’ bien adaptée à la situation.
For the past two weeks I’ve used DuckDuckGo as my search engine. It’s a search engine built on open-source software. What made me switch is the capacity to navigate through search results with the keyboard using vi-like keys (hjkl).
I didn’t know at the time but Google also allows you do something similar. You just need to go to http://www.google.ca/experimental/ (also works for google.com and I guess most other domains). There you can opt-in to be part of the Keyboard shortcuts experiment. That’s it! J/K are used to navigate through search results, O (or enter) to open them.
Hopefully this is going to be useful for the other keyboard junkies out there.
For those of you planning to start a new project with the Visual Studio Scrum 1.0 Process Template, Mickey Gousset just write a good paper in the Visual Studio Magazine. He introduces the new Microsoft Scrum 1.0 Process Template for Visual Studio Team Foundation Server and steps through the installation process.
http://visualstudiomagazine.com/Articles/2010/07/27/Installing-Scrum-Process-Template.aspx
Urban Turtle 3.2 fully supports the new Visual Studio Scrum 1.0 Process Template. Using the index card metaphor with drag-and-drop functionality, it is the perfect replacement for Excel-based planning workbooks.
ASP.NET MVC est une plateforme qui a été introduite par Microsoft essentiellement pour augmenter la testabilité des applications Web.
En ASP.NET traditionnel, il est relativement complexe de tester unitairement la logique à l’intérieur des contrôles.
Le cycle évènementiel étant difficile à simuler, il devient nécessaire d’utiliser des ‘fakes’ ou ’stubs’ des classes partielles des contrôles individuels, ce qui génère beaucoup de code pour de simples tests unitaires. De plus, la nécessité de ces ’stubs’ complexifie passablement la pratique du développement piloté par les tests (TDD).
En ASP.NET MVC, c’est la séparation en trois responsabilités distinctes (modèle, vue et contrôleur) qui augmente significativement la testabilité des systèmes développés en MVC comparativement à la plateforme populaire ASP.NET WebForms. Ainsi, toute la logique nécessaire à l’exécution des actions appelées par un groupe de vues se trouve à l’intérieur d’un seul contrôleur. Il devient donc relativement simple de tester unitairement, directement (sans ’stub’ de contrôle) et avec un minimum de code la logique métier des actions exécutables pour un contrôleur donné. On peut ainsi plus facilement piloter le développement du comportement de nos actions en le réfléchissant à l’intérieur d’un test avant même d’en écrire le code! On peut même aller jusqu’à tester les messages d’erreur qui peuvent être retournés aux vues selon les différentes actions. Bien sûr, il est toujours nécessaire de créer des ‘fakes’ pour les objets du domaine dont la logique interne est testée dans d’autres tests unitaires.
En plus d’être un moyen d’assurer la qualité du logiciel, les tests unitaires sont aussi une excellente source de documentation du code. Il est donc intéressant d’utiliser une syntaxe permettant à n’importe quel utilisateur ou programmeur qui ne connaît pas encore le système de comprendre le comportement du système.
Voici une proposition pour nommer les tests et les classes de tests afin d’augmenter leur lisibilité :
Un exemple de code avec MS Test :
[TestClass]
public class WhenClosingTheBlog
{
[TestMethod]
public void UserShouldSeeAWarningMessageIfHeHasNotSavedHisBlog()
{
var blogController = BlogControllerFactory.Generate();
var actionResult = blogController.Save(new Blog()) as
RedirectToRouteResult;
Assert.AreEqual(BlogController.PENDING_CHANGE_HAS_NOT_BEEN_SAVED
, blogController.TempData["WarningMessage"] as string);
Assert.AreEqual("Warning", actionResult.RouteValues["action"]);
Assert.AreEqual("Blog", actionResult.RouteValues["controller"]);
}
}
public class BlogController : Controller
{
private public const string PENDING_CHANGE_HAS_NOT_BEEN_SAVED =
"Vous avez actuellement des changements non sauvegardé. Êtes vous sur de vouloir quitter la page ?";
//...
[HttpPost]
public ActionResult Save(Blog currentBlog)
{
var path = userProfile.Path;
if (currentBlog.HasPendingChange)
{
TempData["WarningMessage"] =
PENDING_CHANGE_HAS_NOT_BEEN_SAVED;
return View("Warning");
}
return RedirectToAction("Home");
}
//...
}
Cette testabilité est un aspect important qui peut justifier l’utilisation d’ASP.NET MVC dans un contexte de développement d’un projet Web nécessitant l’utilisation de pratiques d’ingénierie Agiles.
So you have initiated an Agile transition and have faced some resistance to change! Or maybe, you assessed your current level of Agile Maturity and are hoping to achieve the next level. Better yet, you and your team are planning to launch an Agile transition that is not driven by the wrong reasons.
That’s great!
If you haven’t already done so, you may want to read: Getting Started – Reference Material for Managers Who Wish to Understand Agile and Scrum and What consultants don’t tell you before you begin an agile transition.
Let’s cut the chase and get to the point. Are you ready? Here it is. The secret to a successful Agile Transition -> Make people look good!
Yes. That’s it. Surprised?
I’m not talking about psychological manipulation. I’m talking about finding what drives the people you are working with and the managers around them and then capitalize on their drivers in order to get them to get on board with the transition – and better yet become evangelist for your transition. Here are some examples:
Don’t get me wrong. I am not asking you to lie, to cheat or to fake the objectives and expected outcome. I’m telling you to get others on board and working WITH you by telling them the whole story and helping them understand that there is something in it for THEM too.
Agile relies heavily on communications and interactions. Why don’t you start with all the people directly and indirectly impacted by the transition? Sure, it will require more time in the short term to influence people into supporting you but in the long run, you will be glad you did it.
Go ahead. Try to figure out what drives people around you or what issues they are facing. Find a solution that can help them and you’ll end-up with a win-win scenario and a successful transition.
You might be interested in these related posts:
As I wrote a week ago, I trained touch-typing this week. My objective was to attain 85 wpm. Here’s a recap of my week:
Monday : I decided to use Typeracer as my baseline. It’s an online game that allows you to race others. The fastest typist wins. I had not played in 6 months or so – and it showed. My score for the last ten races dropped a bit. This was not a good start. Result after the day : 74 wpm
Tuestday : I did some drills on goodtyping.com to get back to speed. It must have helped because I raised my speed to 78 wpm.
Wednesday : mostly played Typeracer. I managed to cut down on typing errors and I’m up to 81 wpm.
Thursday : I tried to practice at night instead of during lunch time. Without much success – 80 wpm. My fingers were not obeying me. I did a few drills on goodtyping.com to increase accuracy.
Friday : Success! I managed to consistently type over 80 wpm today by concentrating on typing slower but with less mistakes. I managed an average of 87 wpm on my last 10 races.
The week is over and I achieved my objective of 85 wpm. I did this mostly by reducing mistakes – they can get really slow you down.
Thanks to my colleagues who followed in my track and helped me focus on this challenge.
Everybody knows no one reads documentation. Hamcrest found an original way to warn users to use the org.hamcrest.BaseMatcher class instead of the org.hamcrest.Matcher interface.
Look at the interface yourself.
They added a dummy deprecated method called _dont_implement_Matcher___instead_extend_BaseMatcher_ in the interface.
I am still unsure whether I will ever use this in my own projects. But when this method appeared in my code today I could not help but look at it. It was then totally clear that I was not doing what they wanted me to do. I’ve seldom seen documentation that obvious.
![]() |
Minyaa Suite was born to replace the Kaamelot plugin, a plugin created 5 years ago, when I tried to merge all enhancements brought to JIRA in order to meet our needs. |
This first year was mainly spent:
Next year, we will concentrate on the following:
A few weeks ago I referred to Daniel Pink’s book (Drive: The Surprising Truth About What Motivates Us) to show how autonomy, mastery, and purpose greatly impact people’s motivation and how we can use these dimensions to help in an Agile transition.
Today’s post is about Alessia and her painting.
Alessia is a happy 9 year old girl. She is self motivated when it comes to painting. She always:
If you have young children, you certainly already know how difficult it is to get them to do something they don’t want to do – pick up their clothes, get up on time, hang their towel after their shower, etc. But when kids are self-motivated, things are completely different. Don’t you find?
Grown-ups aren’t much different. When people are told to do things or are assigned tasks, the quality of the work can’t be as optimal as when THEY decide to do it. Not only isn’t the quality as good but the amount of energy required to deliver the task is much higher than if the individual wanted to do it in the first place.
Granted, relying on self-motivation requires people managers to come up with ways to make the tasks interesting or fun, or they can also rely on the concept of Autonomy (or self-organized teams) which is so strongly emphasized with Agile.
Needless to say, if kids can self-organize and be self-motivated, so can grown-ups. All they need is the right environment to do so.
I am proud of my daughter
Don’t worry Giordano, daddy will write a post about you too
You might be interested in these related posts: