Friday, August 20, 2010

Agile 2010 conference

At the Agile 2010 conference Lean software development is where the focus of the agile is going and the number of sessions on this topic proves it.  I think Lean is where the agile software community needs to spend its time.  Developers can do agile software development.  That is a bottom up movement that is taking over the software development area and there are strong trends in numbers towards it.  Lean software development needs to be a top down approach from management because it encompasses the entire software life.
 
Lean
I attended several sessions on Lean software development, the idea that if you cut the waste out of the system everything moves faster threw the system.  Another title that this goes under is Kanban, which is one of the means that just in time delivery is accomplished.  Lean is not something that you accomplish it is a practice.  You need to setup facilities for customers to pull things threw at a constant rate.
 
How do you become more Lean?  You need to limit the work in progress.  I attended a session by some people from ConstantContact.com that talked about limits on work in progress, also a session from Mary Poppendieck, she wrote the book “Lean Software Development.” One important practice is to limit the amount of things that are being worked on by any step in the process at any give time, be it requirements gathering, testing or development.  If you don’t do this you are building inventory behind that bottleneck and this is considered waste.
 
You must be able to prove that for every change you make made a positive change in the value chain.  So the first thing you need to do is to keep metrics on everything thing that happens in the chain.  You need to know when a request for something came in, when requirements are identified, when it was in development, in testing and when it made it to production.  Tracking and graphing all these activities is crucial in the journey to becoming a more lean organization.  The graphs make the bottle necks very apparent.  By tracking work in every stage you will be able to tell a customer with very high accuracy when anything will be done.
 
Scaling
Another set of topics that I attended where about scaling agile some of these sessions where put on by people that work at IBM and have high levels of experience doing this.  They also put a strong focus on Lean.  Of the practices that where identified where small teams are more successful than very large teams.  Integration across teams must be first class. Meaning that you cannot assume it will go smoothly and you must plan time for it.  I asked one of the speakers how they planned for this and the answer was some times they would “plan a whole iteration around it”.  This might seem expensive on the surface but the more I thought about it and how it relates to the lean principals you are creating waste if you don’t get it accomplished in order to move on.
 
Other things identified for scaling teams are, you must instill ownership of the product on everyone and provide them with a vision of where the product is going.  It is important to have communication across teams because creating another database with the same data as another system creates waste in the organization.  You also must allow people to be creative in there own space.
 
Continuous Delivery
Continuous Delivery was one of the sessions that I found to be most interesting that had concrete examples of practices.  The topic was about getting thing in the customer’s hands as frequently as possible in a safe manor.  One of the values in this area is that deploys to production should be self service by the business not on the schedule of IT.  Everything that is possible to automate should be automated.  Knowledge and tools to do this are very important.  They talked about a product that Thoughtworks sells called Go that allows you to do some of this automation of production moves.  I see no reason that we can’t use Teamcity (the automated build tool we use in development) to do the same thing that Go does.  We just need to write the scripts to make it happen.  In order to do Continuous Delivery you need automated tests at all levels.  There still might be a need to have a user go in and test some things manually just to make sure all went as planned.
 
In Continuous Delivery they also talked about you can add a switch for all the features you are working on to allow the business to go to production with a feature partially finished or to turn it off if it fails in production.  They stressed removing these switches when it is found to be stable.  Another model that was discussed was moving features in pieces this removes some of the risk so you can make the database changed in one move the system changes in another move and the screen changes in another move, this assumes that you move more frequently so you don’t build up a lot of work in progress(a.k.a waste).
 
Before you get a automated process in place to deploy you need to think about rollback strategies.  Something could fail so there was some high level discussion of logging everything.  This way you can apply changes the user made to the old version of the system if the deploy fails or needs to be rolled back.  Another topic that was discussed was making the system read only for a few seconds so the users didn’t need to get out while an upgrade was going on or they might not even know it happened.
 
Other topics
I went to a talk on Behavioral Drive Development (BDD).  This topic strikes me as fluff.  The talk was examples of thinking about what people do if you change their world.  It was a talk about reactions to inputs by people.  This is not a science to predict upfront, it seems to me you should try a user interface in software the seems reasonable and refine it as needed.
 
There was a talk on Selenium (automate web page testing tool) that I went to.  The description was how to make your test more maintainable.  I think our tests are more maintainable then the ones he was writing.  I learned a couple thing about how to find elements on the page.  Like you should do it using CSS lookup and not xpath because all the browsers Selenium works with CSS efficiently and it is the fastest way to run tests according to the people at Pillar that where presenting.
 
Venders
There was a strong showing of venders at the conference.  There were about 20 venders that had booths set up. 
 
Version One is one of the applications that some of the developers at Iowa Student Loan in the past have pushed for so I had them give me a demo of it so I could actually see and play with it.  It does have a lot of cool feature that we could make use of to save time.  In JIRA there are ways to do some of this stuff but it is a manual process that takes a lot of time.   JIRA doesn’t allow for visual tracking of how the project is going or when it is scheduled to be done but VersionOne does.  In VerionOne you can split cards which is we do often because we estimate a high level card and it turns in to a couple or spawns other conversation.  VersionOne allows you to drag and drop cards from one iteration to another for planning.  You can on one screen see an overview of what is planned in each iteration, it also takes in to account velocity so you can fill iterations accordingly.  Another neat feature is that is shows dependencies from one card to another so when moving cards from iteration to iteration you see visually that there is a dependency on another card being done first.  There is also integration with JIRA so you can read and write to and from JIRA allowing people to use what ever tool they want.
 
Atlassian has a product called GreenHopper which is a plug-in for JIRA and has been modeled after VersionOne. This product looks to be very similar.  It also has the same kind of drag and drop features to allow you to plan iterations.  It also has graphs that show you the status of the project and when it is projected to be done.  If I had to pick one of these products to use it would be VersionOne because the interface to it seems to be cleaner and more intuitive.  I have always had problems with atlassian’s interface being straight forward, they could be much better.
 
I had ThoughtWorks show me Go, they sell it as a release management.  It allows you to take any build and push it to any environment.  This sounds like a cool idea the problem is you still have to do all the work to script out the entire move it just allows you to move software down different “pipelines” so people can promo it along the way.  Since we use Teamcity I think we can make it do the same thing, there just might have to be some disciplines in place that Go enforces for you.
 
Facilities
Agile 2010 was at the Dolphin resort on the Disney World complex.  The conference was very well run.  Finding the right session was easy to do.  I went to a session where the speakers didn’t show up but the people that ran the tracks where making sure the speakers where there.  When they didn’t show up it became an impromptu session along the same lines but the topic was a little different since they didn’t plan it.
 
The grounds and the conference area where kept very clean.  The food was plentiful and well managed.  It was a nice place to stay all and all but the décor was a little dated.  The rooms also didn’t have High Def TV which was odd because I haven’t been in a place recently that had TVs that old.
 
Conclusion
In conclusion I think this conference was valuable to attend I did see a movement away from coding and testing talks to more metrics based session.  I would like to see more of the management and project leads from Iowa Student Loan go next year.  I would also hope we get some session topics submitted next year so we can have a couple speakers because I think we have one of the better models of using Fitnesse to allow people other than developers to write test.
 

No comments:

Post a Comment