I know several agile techniques like XP, scrum or kanban, although I'm focusing on scrum right now since it's the most popular one. However, I also know several agile practices like TDD, ATDD and BDD. What's the difference / relationship between the two? are they the total opposite of each other, or do they need each other ? thanks
Scrum is an agile process framework. This simply means that it provides a structure around which you can build your agile process. Scrum deals mostly with process management concerns. XP is another "flavor" of agile development that has a heavier focus on engineering practices such as TDD/xDD, Continuous Integration, Pair Programming, and refactoring among others. Kanban is another "flavor" that emphasizes creating "flow" of work and eliminating waste.
If you're going to focus on Scrum, that's fine but don't forget that no matter how much process you put around crappy code and designs, you're still not going to be very agile. Make sure you take care of the engineering practices as well. I don't think any of the flavors are necessarily mutually exclusive. That is, it's perfectly fine to add XP practices to a Scrum-based agile process. Scrum co-creator, Ken Schwaber, said something to that effect in a keynote a few years ago. The trick is to know where these flavors may clash and where they blend synergistically.
under agile methods, scrum, XP and kanban belong in "agile framework" group, while TDD, BDD, ATDD belong to "agile practices" group. I'm assuming that the agile practice (xDD, pair programming and backlogs) are a part of agile framework? so scrum and XP may consist of xDD, pair programming and backlogs and any other of those agile practices and each of those agile practices may be present in multiple different agile frameworks?
I might explore XP a bit. Anyone know any good (preferrably recent) good books on XP?