One of mistakes people often make when starting out Agile Development is not learning basics.  It sounds so obvious.  But people miss it very often.  Many people who are interested in Agile Development or any kind of Software Developmet Life Cycle (SDLC) improvements already have deep understanding of common issues around SDLC.  And that's why they want to improve.  Because of that, people think they can skip basics and just learn techniques.  This is a dangerous situation, especially for methodologies like Agile where complete mind-set change is needed for successful implementation.

If you are experimenting with Agile, I suggest that you choose one of well-known Agile Development methodologies such as Scrum, Extreme Programming, Feature Driven Development, etc. and FULLY learn it.  I would also suggest that you try it out with few pilot projects face-value, word-by-word, without making any modifications to the process.  As you learn and try it out, focus on why each practice exist and what values each one provides.  Print out Agile Manifesto, put it up on your wall and constantly check against it.  Once you've done that, you can start looking at your own situation and other methodologies (even water-fall stuff) to create your own process.  Adjust everything to make sure that whatever process you create fits nicely with your organization, culture, etc.  You might ask me if I am suggesting that people then also learn all different methodologies fully and try them out before adopting techniques from them.  I would say no.  All Agile Development methodologies share same values and it's values you are most interested in learning not techniques.  So, once you understand one methodology very well, you understand values of Agile Development.