views:

728

answers:

8

I've been hearing a lot of buzz recently about "Agile Development", to the extent that a lot of job postings even list experience with it as a requirement. Now, I've read the Wikipedia article, and some of the other questions asked here, but I'm still not exactly clear on what employers are expecting when they say "2 years of experience with Agile Development".

If I've coded a project without having a 10-page design document when I started, does that constitute "Agile Development" experience? If I launch an app with a few core feature and then add more later, 37 Signals-style, is that "Agile Development"? What are employers really expecting of developers when they say that?

EDIT
This question shares many similarities with:

+1  A: 

Here is a thread breaking down the term "Agile Development" into common terms.

http://stackoverflow.com/questions/233599/agile-programming-for-non-technical-people

JTA
+6  A: 

I reckon Agile and Iterative provides an excellent overview of the subject.

There are a number of agile processes out there:

An agile process tends to focus on iterations, and client feedback, to allow for the inevitabilty of changing requirements.

A waterfall process tries to define all requirements up front, and tends to be more inflexible to changing requirements.

In fact, the book gives an interesting account into why the fallacy of waterfall was perpetuated for so long.

I definitely recommend having a skim through this book if you can find it.

Also, IMHO what employers tend to be looking for when asking about Agile experience:

It pays to be aware of the following, but I wouldn't go on about these unless the company in question really has bought into agile. These disciplines are not always universally appreciated (which is a shame, as they are just as vital to preventing an agile project from accumulating cruft)

toolkit
If someone wanted to read a book on a given subject, I find it hard to believe they would be posting their question to an Online community.
Jim Fell
A: 

Above all else, agile is about people, so I guess the requirement is that your are a teamplayer and know how to behave in an agile team.

Kasper
+1  A: 

Specifically addressing "2 years of experience with Agile Development":

In my experience, a lot of employer's subjective checklist requirements are trying to find people who will fit in with their team. 'Agile' is a buzzword that a lot of people are just reading as 'efficient', so the chances are your prospective manager is trying to hire people who work fast and will make them look good...

You may have to lie to get the job; Agile methodology was not popular 2 years ago anyway, and there is not much they can do to prove you didn't do Agile. I'd normally recommend honesty in all things, but in checkbox job applications, honesty is unfortunately a disadvantage.

Being on the other end of these things, we have grown to expect all our applicants to lie, past the point of absurdity, so simply doing a little research and bending what you were doing anyway to look more Agile should get you past that checkbox, if they bother testing you.

(That came across as negative; hopefully you will find a company who really are looking for top quality developers and will reward them, and really are using Agile methodologies in the right places - such places do exist.)

Colin Pickard
+7  A: 

Firstly, "Agile Development" is a loose term. There is an "Agile Framework" that is a collection of principles and ideas on how should software projects be managed. For details on the framework, you can visit http://www.agilemanifesto.org

Very broadly, Agile framework contrasts itself from earlier, traditional software development practices and methodologies. Main principles are:

  1. People across functional areas (programmers, testers, technical writers, sales, services, product managers) all work together as one team rather than different groups working in 'stages'.
  2. Iterative development (work in short development cycles with focused objectives)
  3. Incremental development (frequent releases to client)
  4. Focus on human communication
  5. High visibility of team's progress to management, stakeholders, clients
  6. Continuous feedback from customers and stakeholders

Based on these main principles, different methodoligies have been implemented. For example, Scrum, Extreme Programming, RUP etc. Note that Agile framework is a set of principles and guidelines, Scrum and Extreme Programming are concrete implementations of these principles that can be applied.

Agile methods are methods to manage teams and projects - these dont have anything to do with what software is developed or its architecture or design.

There are lots of details about Scrum and Extreme Programming available. Everything those processes define, you should be able to see one of the agile principles in effect.

So when it is said "Agile Development", it presumably means you have experience in working on a team or company that uses one of the methods implementing Agile framework.

Ather
I think you mean "loose term" not "lose term" in first para!
Tony Andrews
I like this explanation. It explains terms before it uses them. Most explanations of Agile do not do this, so they are impossible to understand.
Peter Ajtai
+6  A: 

The Great Pyramid of Agile

Dana
interesting article :-) +1
toolkit
That's a great website! I added it to my RSS reader.
Jim Fell
+1  A: 

Any time you see "X years of Y experience" on a development job posting, think "buzzword compliance." Good technical managers don't think in terms of "years" of experience, they just think in terms of "experience." It's especially a give-away when the Y being sought is a newer concept and insanely specific ("GPGPU programming using CUDA").

"Experience with agile" to me means no more than an understanding of the philosophy of the Agile Manifesto (http://agilemanifesto.org/) and hands-on experience in a team trying to adhere to that philosophy. Agile Development" is not a specific methodology. There are certainly similarities, but Scrum, Crystal, and XP (to name just 3 methodologies) have differences in their processes and artifacts.

Larry OBrien
A: 

See http://agileinaflash.blogspot.com/2009/08/12-principles-for-agile-software.html

Agile development is a style or process which adheres to these principles. The most popular varieties are SCRUM (management-focused) and XP (dev team focus). There is a joke that SCRUM is just the box XP comes in.

Also note that Lean Software Development (unfortunately abbreviated) is Agile software development in line with lean principles which are already aligned with agile principles.

I would recommend "The Art of Agile Software Development" by James Shore and Shane Warden as a pretty good practitioner's guide to agile development. Also, you could read the Kent Beck books on XP.

My own little writeup explained Agile as "the art of the short reach": http://blog.objectmentor.com/articles/2007/04/23/short-reach This may be helpful, but there is no guarantee.

agileotter