Laurie Williams has presented a “top thirty” list of key agile practices. The list defines what you need to do to be seen as being agile. Continuous integration, short iterations and done criteria are at the top of the list. Continue reading
So people keep talking about the Agile – Waterfall dichotomy. About agile and un-agile practices. I decided to have an unscientific look at what Agile isn’t. If there is a true dichotomy between Agile and Waterfall, then things opposite of Agile should be either entirely out of scope for projects and software development or they should be characteristic of Waterfall methods. And since anyone would bother to mention them in the context of Agile, one would assume that this would be because they are distinguishing between Agile and Waterfall. Continue reading
Regression Test Selection or RTS is essential for successful regression testing in larger projects. As long as you are running a small project and working with a small product regression testing is seldom seen as an issue. As your project and product grows and matures your regression test suite becomes increasingly larger and larger. After a while you will find that a full regression test requires forty testers to spend forty hours of testing just to run the test suite once. Continue reading
Is it appropriate to call a driver’s license a unit test? Would that be consistent with unit testing best practices? That was part of the discussion that erupted on our internal Yammer network after someone posted a link to coding by numbers. I argued that a driver’s license was not properly a unit test but an acceptance test of an incoming delivery. When you read the following, bear in mind that software development is a design activity. The context here is a company that needs help to design a solution for transporting people “from A to B”. This was the argument I made against saying that it is best practice to call a driver’s license a unit test in accordance with unit testing best practice.
The driver is a unit in the final system just as the car is. Continue reading
I love configuration management! “But”, you ask, “isn’t configuration management boring?” Well, configuration management can be boring and tedious if you do it manually. With modern tools it is not all that bad. Even if it is boring, that is out-weighed by the sheer importance of proper agile configuration management for a successful software development team.
How is Agile offshoring done in practice? Julian Bass studied seven different companies doing off-shoring London-Bengaluru. He had expected that the companies would have adapted a continuum of practices from Scrum and XP.
Findings about Agile Offshoring
To his surprise he found that this was not true. Instead, all of the companies had adopted scrum with the exception of iteration demos. All companies did enforce coding standards. This was not really related to agile practices. It was a corporate standard enforced regardless of agile. All companies also claimed that they had collective ownership of code. There were two projects which did pair programming and TDD; none of the others did. Finally, only one project / company had implemented any other XP practices, most notably Continuous Integration. So, is the cost of continuous integration too high for your agile offshoring project?
Continuous Integration for Agile Offshoring
There were two agile practices that I missed most. Only few of the agile offshoring project did iteration demos or continuous integration. Continuous integration requires a lot of work to setup and maintain. But the alternative, late and manual integration is so risky and complicated. Agile software development methods are very much about avoiding building up a debt of unfinished work. It is also about doing the most risky things first. Extreme programming has the right attitude about continuous integration. Regardless if you are in an agile offshoring project or not you should always do continuous integration. You do not need to do test driven development (TDD) to do CI. Just having a build running is enough to catch many errors.
Why did so few agile offshoring projects perform iteration demos? I have always found that iteration demos are really useful. They provide an opportunity to interact with the users. To gather feedback from the users. To make sure that they actually look at it before it is to late. This should be more, not less important in agile offshoring. When you are far from the user you should spend more time on iteration demos, not less. Be extreme, try doing it twice per iteration. I have tried and it really worked.
References for Agile Offshoring
In a small study, three different projects were examined with respect to the degree that they used eXtreme Programming practices and what the code looked like in terms of size, complexity and coupling. The conclusion was that more agile practices used in a project lead to lower size, complexity and coupling in the product. The study is too small for any definitive conclusions but it is evidence pointing in the right direction.
With automated bug fixing, we can automatically fix 50% of all bugs at a cost of $8. A fantastic research result from the small world of Software Engineering research. But how can we turn these inventions into innovations?
A colleague asks on Yammer about how they should handle all their many branches and thousands of CI jobs. Here are some of the links that came up: