9

On a debate over what Scrum is all about, I found that perhaps I totally misunderstood the agile thing. It appears to me that Scrum (which is certainly considered an Agile process) is all about managing features and sprints and roles and stuff with nothing to do with TDD, pair programming, CI, refactoring and other developer centric techniques and practices that I though (until now) are the heart of agile. Now I am facing a difficulty !

1) Is Scrum agnostic to whether developers do agile practices?

2) Can you implement Scrum in a team that does not utilize automated tests? does not perform refactoring or does not adhere to the agile programming practices?

7 Answers 7

19

It's a common mistake to think that Scrum is equal to Agile.

Being Agile is following the four principles of the Agile Manifesto. Scrum is a project management process consistent with those principles but it's not, in and of itself, being Agile. XP (TDD, pair programming) is a development process, also consistent with those principles, and consistent with Scrum, but it is not being Agile. Continuous Integration, Continuous Delivery, DevOps, all consistent with the Agile principles.

Follow the principles, first and foremost. All of these buzz-phrases are just methodologies that people have found successfully help them to follow the principles. But the main part of "being Agile" is being able to adjust your processes at will where they don't follow the principles of Agile.

11
  • 3
    agilemanifesto.org/principles.html elaborates on the manifesto.
    – user40980
    Sep 25, 2012 at 15:55
  • 1
    @ashy_32bit: Not a question anyone can answer without knowing the team and the project. Not every team or project would benefit from Agility. However, I have worked on a team that was doing Scrum and CI and nothing else (from the Agile box of tricks) and it worked better in that case than doing neither of these things. But we sought to improve our Agility over time.
    – pdr
    Sep 25, 2012 at 16:08
  • 1
    +1 Thankyou pdr, it frustrates me to no end that everyone says agile and means scrum, which ends up obscuring the good of the actual agile principles because everyone thinks agile means daily standups and sprints and never learns about the manifesto. Sep 25, 2012 at 16:08
  • 1
    @ashy_32bit I would say the scrum master will help the team become more rigorous and affective in following a good process, but the veteran XP coach will help the team become more rigorous and affective in writing good code. Based on your description of the team, I'm guessing they could use help writing better code if they have never written any tests before. They probably don't write very loosely coupled code or pay attention to design principles etc in that case. Granted your hypothetical team is also clearly bad at process too. Sep 25, 2012 at 16:19
  • 1
    Am I the only one who doesn't think "agile" should have a capital letter? I'm not just being a grammatical pedant - it's important. Understand agility as a quality: if your team is agile, it is flexible, adaptable, methodical. I always find confusion starts when they talk about "Agile" as if it's the name of a standard pattern or process to which they must adhere.
    – Tim
    Sep 25, 2012 at 16:29
6

Is Scrum agnostic to whether developers do agile practices?

Scrum is a set of guidelines that encourage a team to be agile.

Can you implement Scrum in a team that does not utilize automated tests? does not perform refactoring or does not adhere to the agile programming practices?

Very difficult, because by the end of every sprint you must have a working product. If you have to do a complete manual regression test to prove that it is working, this is likely to be unachievable.

1
5

Alistair Cockburn (one of the originators of the Agile movement) says this about Crystal Clear (one facet of his Agile methodology):

Crystal Clear can be described to a Level 3 listener in the following words:

“Put 4-6 people in a room with workstations and whiteboards and access to the users. Have them deliver running, tested software to the users every one or two months, and otherwise leave them alone.”

That is a definition of agile, admittedly for experienced development staff who know what they're doing and can be trusted to get on and do it. So does that mean you have to use CI and TDD and Pair Programming and all the other fashionable things? Put simply... No.

Agile is not about following a set of processes, its about being effective. What that means to you depends on your team and how it works, what you find useful to you. If TDD doesn't help you produce working code, then stop listening to the lesser lights who shout about it on the web and do not use it! If Pair Programming really helps your team to focus and get stuff done, then ignore anyone who says its a waste of time and organise your team like a 3-legged race at school sports day.

I did agile many years ago, so many we didn't even realize we were doing agile - we delivered iterations of the product every month, and cycled round fixing bugs and adding new features regularly. We did absolutely zero unit tests as such things had not been invented, and the refactoring book had not been written. So yes, you absolutely can do agile without any of the so-called agile practices.

Alistair also says this of Kent Beck:

Asked about XP and the five levels of the Software Engineering Institute’s “Capability Maturity Model,” he replied with XP’s three levels of maturity:

  1. Do everything as written.

  2. After having done that, experiment with variations in the rules.

  3. Eventually, don’t care if you are doing XP or not.

Eventually, don't care if you're doing XP or not... wise words that should remind you not to fall into this trap.

1
  • HAHA that trap at the bottom is hilarious and so true. Thanks for the laugh. Also +1 I can't agree more. Unfortunately the whole technique prescribed here relies completely on having good developers (or ones who want to be good at least) to begin with. Many engineers have no interest in being good when being bad is easier. Actually that applies to probably a lot of people, not just engineers. Sep 25, 2012 at 17:55
0

Scrum is a flavor of agile that follows a specific pattern to meet the goals of the agile development methodology. You can't follow Scrum and not be agile, but you can be agile and not follow Scrum.

Scrum has no bearing on the use of automated tests, agile tends to favor them but the are by no means required. Refactoring should be a goal in agile and Scrum, but its often ignored. having no intention to ever refactor isn't really agile.

0

Is agile about development or management?

Agile is a set of software development practices to meet flexibility and fast phase changing market requirements- or so called accelerated delivery. So in a big picture, it is about a flexible approach to meet the changing complex requirements of the client by splitting work in small peaces and delivering functionality in quick iterations of 2-4 weeks.

However to meet this flexibility, the development team needs to practice Agile programming practices.

Description from Wiki in regards to Agile software development:

Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle.

enter image description here

0

Infact, you can use scrum in projects that have nothing to do with software development whatsoever. It's a projectmanagement/team management method.

-2

1) NO!!!! Scrum is Agile, meaning agile dev practices (TDD, pair programming, CI, refactoring, etc.) are very important to all aspects of a Scrum project. It is going to be much harder to figure out your teams run rate, estimate work, set appropriate sprint size, etc. if you are not using these practices.

2) Yeah you can implement Scrum in a team that does not adhere to agile practices, but I feel it really limits the potential of the team. A big part of why Scrum/Agile are so successful are the performance and quality gains you get from Agile dev practices which are core to delivering front to back complete features every sprint.

If someone else in your group is trying to convince you that Agile dev practices are a waste of time I think you should spend some time to emphasize why these practices are always stressed with Scrum as well as Agile as a whole. They really do make a difference.

3
  • 1
    Please don't use terms like "Scrum/Agile", these are so very far from interchangeable terms, I think you know this but you're still perpetuating the idea that they are when you use them in that manner. Sep 25, 2012 at 16:10
  • Scrum is agile. With a lowercase 'a'. Agile is an adjective, not the name of a thing. Apart from that, I think this answer makes sense.
    – Tim
    Sep 25, 2012 at 16:22
  • 2
    @Tim agile the word is an adjective, but in this case Agile refers to the title "Agile Software Development" as defined at agilemanifesto.org and as such it is not an adjective, but a noun. This is my complaint about people referring to scrum as agile, people think "Scrum is agile" and then never learn about the agile manifesto which is where this whole "Agile" buzzwordry came from to begin with, and the real definition of "Agile". Referring to things as agile by the adjective is just ambiguous, the manifesto is not ambiguous, it's principled and specific. Sep 25, 2012 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.