views:

342

answers:

7

I have been interested in agile methods of late and have found a lot of prescriptions and minute descriptions of a lot of practices. Still, I remember my best projects as run-to-completion spikes followed by some debugging and minimal testing before going live.

I have been asking myself, did Flickr use agile methods? Does Facebook practice TDD? Was Gmail made in 25 minute spans followed by 5 minutes of daydream?

In other words, before I listen further to all the preaching and jump into the manuals, what evidence do I get that this is the way to be successful in a successful project in a successful company?

Of course, I am asking this because I want to read the answers, not because I want to dismiss an argument.

A: 

From what I understand StackOverflow is a successful website built with agile practices and TDD.

Swizec Teller
I highly doubt that. Firstly, both Jeff and Joel have clearly stated on the podcast that StackOverflow pretty much doesn't do any testing *at all*, which clearly rules out them doing TDD. Secondly, they have both multiple times voiced their complete distaste for TDD, Agile and Unit Testing. They have also made it painfully clear that they don't have the slightest idea what Agile, TDD and unit testing even *are*, so even if they *wanted* to, they couldn't use any of them because they wouldn't know how.
Jörg W Mittag
Well SO certainly doesn't set a standard for planning and estimation other than as a shining example of what happens when you do neither.
cartoonfox
They certainly practice iterative design and quick release cycles. You can agree that those practices are least somewhat agile.
Xavi
Is testing in the Agile Manifesto or does that not matter?
Jeff O
A: 

In most of the big companies (IBM for instance), the methodology is not always the same, Agile or Rational or Waterfall. That depends in a lot of the history of the projects and the experience of the current People and Project Managers.

If you plan to develop on something is always good to check on all the sides before deciding what suits best for your plan.

So the short answer is: It depends.

jpabluz
**Most big companies can't do agile methods.** Size and beaurocracy makes it much more difficult to do, and the big revenues can subsidise great big pockets of stagnation where crappy things happen. **Agile works best in small, responsive companies**
cartoonfox
+2  A: 

A related question is, how many non-Agile (Waterfall, "Big Design Up Front", etc) projects are successful? In my experience, not many. In fact, I just rolled off a two-phase project in which the first phase was traditional Waterfall and failed pretty significantly, but the second phase was iterative in nature and yielded substantially better results (on time, far fewer defects, end result was closer to client's actual needs than the original spec).

I've been doing Agile development for a few years now and, overall, have found it to be superior to the alternative. A few things I've noticed:

  1. Agile != "no process". Agile is about having only as much process as you need and continually refining that process.

  2. Agile requires discipline. You not only have to have a process, you have to follow it.

  3. Agile won't turn a failing project into a success. It can help you identify that the project is failing sooner rather than later, and help you figure out why it's failing. It's about shortening the feedback loop so that you have a chance to get back on course before it's too late.

Microsoft Research recently posted an article in which they empirically evaluate some Agile methods. It's well worth a read and might provide some of the information you're looking for.

Seth Petry-Johnson
Right, I can relate to all what you say, but my focus this time was on where it has worked. Thanks for the Microsoft link.
mico
A: 

In other words, before I listen further to all the preaching and jump into the manuals, what evidence do I get that this is the way to be successful in a successful project in a successful company?

There is empirical evidence that most IT projects are not successful (where success means on time, on budget and fully functional here). Given this evidence, it seems reasonable to wonder if a deterministic approach (the waterfall) is well suited for software projects.

"The definition of insanity is doing the same thing over and over and expecting different results." --Albert EinsteinRita Mae Brown1

If a deterministic process produces failures over and over, we are likely not applying the right process for software development projects and Agile methods are an alternative. The theory behind these methods is that most software projects are not deterministic, they are creative (like in art) and complex (as defined by Ralph Stacey) projects and we can't predict everything. So, instead of trying to predict everything and then fighting against change, we should use an adaptive process. And this is what Agile methods are about.

Now, using an Agile method will never guarantee systematic success (and someone claiming the inverse is a liar) but they'll give you better control over the risks. And, if your project has to fail, it will at least fail fast.

Update: 1 Actually, this quotation seems to be misattributed to Albert Einstein. The earliest known occurrence, and probable origin, cites to Rita Mae Brown.

Pascal Thivent
@philippe Thanks for the edit, LOL.
Pascal Thivent
+1  A: 

Here's a successful project of mine: http://www.sky.com

  • Went live after a few months.
  • Delivered new functionality to the CMS and servers behind the site weekly - with deployments typically every week or so.
  • All done with all the extreme programming disciplines.
  • Weekly demos to the customer to go with the weekly iterations.

Here's another agile project (also done strictly with XP), also a big success: http://showbiz.sky.com/

I've also worked on two other successful XP projects:

  • Banking A system for cleaning up and distributing fixed income data across investment bank sites in NY, London, Paris and Tokyo. I believe the whole project only had one production incident over the course of a few years.
  • Mobile Data A system for configuring mobile phones and PDAs for mobile networks and handset manufacturers. We built the core product incrementally over a number of years and co-ordinated the work over three sites across the world. All done using extreme programming. Customers were some of the largest companies in the mobile business. Our apps provided global support for some of these clients.

I really wouldn't go back to the old way of doing things - and neither would the customers that sponsored the projects I've mentioned above.

cartoonfox
+1  A: 

My product (the Sophos Email Appliance) is developed using agile methods. Industrial Extreme Programming, as espoused by Joshua Kerievsky, was used for the first several years of development. Recently I have started to move the team more towards Kanban, visualizing work flow and using pull-based scheduling instead of time-boxed iterations.

Chris Simmons
A: 

I believe Doublefine just produced Brutal Legend using Scrum.

Jagerkin