Wednesday, June 27, 2007

Agile = Discipline

In a recent conversation with another agile enthusiast, I reiterated my assertion that any formal embodiment of Agile is inherently an oxymoron. This was met with some concern, and the conversation quickly turned to the subject of discipline and agile.

There is a very common misconception that agile means complete freedom (i.e., chaos) where every developer can do what they interpret to be the "right thing". Freedom from documentation, freedom from a disciplined approach to software development, freedom from being accountable for product not shipping on time. This is not only completely false, but is actually the polar opposite of a true Agile environment.

A team that is truly operating under the Agile principles actually must be extremely disciplined. In fact, I assert that following agile principles requires more discipline that non-agile processes. If you are going to get product out the door and into customers hands on a regular basis, and if you are going to have a functioning "shippable" product at the end of each iteration, and if you are going to operate under a "test first" mentality, then you must be extremely disciplined in whatever process you put in place.

My assertion that a single embodiment of agile principles will not always work for every team does not indicate that I advocate chaos. Rather, I believe that one needs to assess the team, the customers, and the product and come up with the implementation of the agile contepts that works best for that environment. Once those processes are put in place, the entire team must be extremely disciplined to follow those processes in order to get their product shipping regularly to customers.

Of course, every process must be molded and modified as time goes on. This is another reason why I believe that each team must create their own implementation of Agile in order to create their Agile Culture - because those processes will be changing over time to better meet customers needs. If you simply lock yourself into XP, Scrum or whatever other embodiment you choose, you may loose the ability to mold that process over time as your culture evolves.

Having a true agile culture actually means much more discipline on the part of developers, testers, product managers, management, etc.
  • Developers need to be more disciplined to ensure that they develop to the test plan that has already been written, that they do not change too much at one time, and that they return to a "shippable product" state before moving on to work on a new feature.
  • Management and product managers needs to be more disciplined in prioritizing features so that any given iteration is not overloaded with too many changes, and it takes discipline to stick to the idea that no product will ship before its time (or that no iteration will end before its time...).
  • Testers need to be more disciplined to ensure that the product remains shippable at the end of each iteration - especially if that product DOESN'T ship! It is much too easy for testing to sign-off on a "shippable" product so we can jump into the next iteration if they know the product isn't actually going to ship to customers. It takes discipline to stick to the same high standards regarding the definition of a shippable product regardless of whether it will actually get into customers hands or not.

Agile does not mean chaos - agile means dedication to small, incremental changes that benefit the customer in observable ways, and reacting to the changing priorities of customers. And that requires great discipline throughout the team.

Friday, June 15, 2007

Does Agile always apply?

I have been asked several times in just the past two weeks whether I believe that you can "apply Agile" to every project. This is a very interesting question to me, since I believe that agile is a culture, and not a defined process. To me, this question is much like asking whether you can apply your religious beliefs to every situation in life. Agile is a way of approaching software development, and if you are truly "doing agile", you will continue to use that same approach for every project - you can't simply set aside your core beliefs regarding how quality software is developed. To say that it doesn't apply to this product indicates that you don't believe that you can develop this project to meet real customer needs with a high degree of quality. Why would anyone take on that project in the first place?

I was very interested to read Alistair's explanation of applying agile practices to home building. This really shows how these concepts are truly universal, and can really be applied to many different situations.

When people ask if agile can be applied to any software project, I believe that what they are really asking is whether the specific agile implementation that they are familiar with can be strictly enforced for any project. Of course, the answer to this is "No". As a matter of fact, I believe that ANY implementation of agile cannot be strictly enforced - defining an agile implementation (like XP or Scrum) is an oxymoron.

To truly "do agile" one needs to look at the environment, understand the people involved, know the product and its complexities, and then put in place the pieces of certain agile processes that make sense for that environment. You have then created a culture where software can be developed with minimal documentation, a test-first mentality and most likely with daily stand-ups and automated testing. You take the values from agile and create a culture of software development that results in high-quality products that meet real customer needs.

When you create this culture, you do not set it aside for some new project that may not seem to fit into an agile process. Instead, you mold your processes around the culture you have created to meet the needs of this new project. Being an agile development team means more than strictly applying an agile process - it means being agile in the very definition of that process, and molding the processes and procedures to meet the needs of the project.

Wednesday, June 13, 2007

Can you put the toothpaste back in the tube?

I admit it - I have Google'd my own name. In todays world, I think you almost have to. I am fairly religious about getting my free credit report 3 times a year (once from each company), just to ensure that my credit score is where I expect it to be, and that someone hasn't stolen my identity and started using my credit. Considering the proliferation of blogs, and taking into account the permanent and yet dynamic nature of the Internet, I would think that we now need to be just as religious at finding out what other people are saying about us on their blogs and other posts -whether we are notable figures or not.

I read today about some companies that are trying to make a business out of helping people to stay on top of this. Defend My name and Reputation Defender are just two examples. Both claim to scour the web, watching for your name to be used in an unflattering way.

Their reaction is very different, however: one will start by sending an e-mail directly to the website owner, asking that the content be removed. If it is not removed, then they continue down that path, sending less-friendly e-mails to the owner, and even communicating with the ISP that provides the service for the "offending" site. This can often backfire, as some bloggers have simply posted these e-mails, and mocked the request to remove the content as a blatant attempt at censorship.

The other site takes a different approach: they will create positive posts to try and counter the negative ones. Their hope is to put enough positive things out there that the search engines will push the negative comments down, hopefully to the feared second page of results, which no one ever looks at.

Both of these approaches make me wonder: can you really put the toothpaste back in the tube? Once some negative comment is out there, it is really very tough to take it back - especially if it has already been widely distributed.

And what if the negative comments are actually accurate and well-deserved? What if you are really a con artist, taking people's money, or scamming them out of everything they own - but you want to use one of these services to keep your name from being defamed? Or, what if you are just a jerk, and your neighbor wants to tell people about it? They certainly have that right, at least in this country.

It is indeed a very interesting world we now live in. A few years ago I was involved in an on-going dispute with our school board. My name was mentioned in the minutes, which were posted to the web regularly. My comments were not just available to those at the meeting, or even to those at the school - but rather to anyone who happened to search for my name online (potential employers/employees, family, friends, etc). I kept a fairly close eye on those comments, just to ensure that they were not too defaming. In this case the posts, while not always complimentary, at least fairly accurately communicated my stance on the issue at hand. But this may not always be the case.

Do you search your name, just to see if your neighbor posted some negative comments about your barking dog, or worse yet - some pictures taken through your open window? How much would you pay for a service that would find these things, and attempt to remove them for you?

I would think that a service such as this should be paid for based on a reverse-AdWords approach: the more exposure it had before the company removed it, the less you would have to pay. A premium would be paid for those that were removed before anyone looked at it.

Regardless, I believe that just as we keep watch on our credit report, we all should Google our own names every once in a while, to keep watch on our on-line reputation. It is just one of those things we need to do in this new, online world of ours.

Wednesday, June 6, 2007

Microsoft Surface

OK - this is actually pretty cool. I had a chance to use something similar a few years ago when I was working with the FBI - it was a map-based system, run off of the satellites, where you could use your fingers to zoom in and out and move the map around. At the time, I was more impressed with the real-time satellite images (and I was looking at the non-classified version), but it was pretty cool to interact with this device without using a mouse or keyboard.

Now that Microsoft is bringing this to the consumer market, it actually looks pretty exciting. I really like the way it seems to seamlessly interact with other external devices, like phones, music players, and credit cards. Pretty cool stuff. I can't wait to get my hands on one.

Tuesday, June 5, 2007

Digital Music Services

I am not a big digital music fan - I have my "old" CD collection, and have a very old MP3 player (yes - it is a pre-iPod - contrary to popular belief, this technology did exist before the iPod). But my teenagers are really excited about their digital-music devices, and so I am always on the lookout for better ways for them to find songs than via peer-to-peer file sharing applications. Apart from being illegal, they simply expose our computer, and our children, to way too much bad stuff. Before I blocked these P2P apps from all of our computers, I once found an extremely graphic video on our machine, which one of my children had inadvertently downloaded thinking it was something else (which, of course, was the intent of whomever put this on the peer-to-peer network). With these P2P applications no longer an option in our home, and since they can't use iTunes (because they don't have iPods either), we are always looking for safe, legal ways to get the music they want.

So, I was intrigued by this new service called lala.com. As it turns out, LaLa.com is taking a very different tactic than the rest of the iTunes competitors out there, in two major ways:

1. Lala.com will allow you to listen to any music on your computer for free. You can create playlists, and use the service as much as you want without every purchasing any music or paying any subscription fees. It is only when you want to move a song to your portable player that you have to pay for it. So, for those who hang out at their desk all day, and just want to listen to music while they work, this is a completely free service where you can access as much music as you like.

2. Lala.com will only sell the entire CD - you cannot purchase an individual song. When you are ready to download something to your player, and want to make a purchase, they are forcing you back into the old-school packaged CD mentality, where you must purchase the entire set of songs that make up the CD rather than the one song you want.

While this is not much of an option for my children (they don't listen to music while at the computer, and they don't like purchasing entire CDs), it will be interesting to see how this service is accepted by both the music industry and the consumers. I would expect that consumers would like the all-you-can-consume music streaming, but would not be happy about having to purchase an entire CD of songs, whereas the music industry would be just the opposite.

It will also be interesting to see how Apple responds to this, since you can play these songs on your iPod, and can also download songs directly to your iPod from lala.com without going through iTunes to get them there. Not exactly the Apple way.

This seems like a risky approach to me, and one that doesn't really meet anyones needs completely. But then again, as I mentioned above, I am not a big digital-music fan, so what do I know...