Agile is more than Scrum
I have been teaching Agile methodologies for several years, and I have made a very deliberate decision not to teach Scrum certification. As a Certified Scrum Teacher (CST) I could certainly make a lot more money, but from personal experience to be “Agile” means doing a lot more than just Scrum.
What is Scrum
Lets start by defining Scrum. Scrum is an agile project management methodology which exemplifies many of the concepts of the Agile manifesto, such as short iterations, customer engagement, developer responsibility, etc. As a project management methodology, and I feel I can say this as a project manager myself, it is brilliant. However, Scrum does not help create good designs, help write good software, or ensure appropriate testing. Too often have I seen companies implement Scrum and call themselves “Agile” only to keep their traditional monolithic development processes.
Without going into detail there are a variety of agile methodologies that should be considered in conjunction with Scrum. These include Test Driven Development (TDD), Feature Driven Design (FDD), Extreme Programming (XP), Behaviour Driven Design (BDD), or Dynamic Systems Development Method (DSDM). These methodologies all address different aspects of the software development lifecycle and, with some exceptions*, you can pick and choose from the different methodologies to suit your environment. In the courses I teach we focus on Scrum, TDD, FDD and a little XP.
There are other development concepts, not directly associated with agile, that should also be considered to ensure a projects success. These include Unit Testing, Continuous Integration or Code Generation.
As an aside I once ran an Agile course for an embedded systems company, and due to the critical of their systems, each developer was spending over 2/3's of their time writing manual test cases. They had not even considered writing automated unit tests, as they thought they were only for OO Java programs.
Limiting your “agileness” to Scrum is limiting the actual agility that can be achieved. That's not to say you should apply every concept above verbatim. You need to understand your project, developer and client needs and how you can specifically improve it. One of the beautiful concept raised in Scrum in the Sprint retrospective. The opportunity, at the end of every sprint, to review your agile processes and so continuously optimise each iteration. * e.g. FDD and BDD are (mostly) mutually exclusive.
Image is CC BY-NC-SA - birgerking (via Flickr)