What are the pitfalls for agile development methodologies?

What are the pitfalls for agile development methodologies?

+4
source share
12 answers

From @George Stocker cited list with my rebuttals ...

  • Lack of structure and necessary documentation

    • Many flexible methods very much prescribe basic practices and have a structure, although most of it is informal.
    • Determine the necessary. The large documentation required by plan-oriented methods is not used and / or hopelessly outdated. Agility focuses on producing those results that are truly needed.
  • Only works with higher level developers

    • Works better with developers who can work independently (or in pairs).
    • The combination of senior / junior developers works great.
  • Includes inadequate software design.

    • Incremental design with aggressive refactoring can lead to a better design, since most of the design is done with a better understanding of the application.
    • The real criticism may be that flexible performers may be afraid to make any design ahead, fearing not to be “mobile” - none of the methodologists would recommend completely skipping the front design.
  • It takes too many cultural changes to accept

    • It may be valid, but in my opinion it is worth it
  • May lead to more complex contract negotiations.

    • Definitely. This should change as faster successes are achieved.
  • It can be very inefficient - if the requirements for one area of ​​the code are changed using different iterations, the same programming may be required several times. While if the plan were to follow, it is expected that one area of ​​the code will be written once.

    • Only if the plan is strictly enforced due to the actual desired behavior, otherwise you will have the same problem.
    • If changes occur, agile methods handle this better than plan oriented methods.
  • It is not possible to develop realistic performance estimates needed to provide a quote, because at the beginning of the project no one knows the whole area / requirements

    • Most flexible methods give you good tools to understand your speed.
    • Scheduling is difficult for all methods. This is not unique to agile methods.
    • Flexible methods, putting the software in the hands of the client, early discover real requirements faster than strict, preliminary planning, because the client does not know what he really wants until he sees it.
  • May increase the scope creep risk due to lack of detailed requirements documentation.

    • Agile takes a completely different perspective. It focuses on volume / time trade-offs, rather than limiting the ability to maintain a fixed time.
    • Clients can choose to compile the area / time in Agile, so they have full control over the scope.
  • Agile is feature-driven; non-functional quality attributes are difficult to place as user stories

    • You can use any method by which you want to track quality attributes, including traditional methods from a plan-based practice, if you want.
+7
source

general criticisms include:

  • Lack of structure and necessary documentation
  • Only works with higher level developers.
  • Includes inadequate software design.
  • It takes too many cultural changes to accept.
  • May lead to more complex contract negotiations.
  • It can be very inefficient - if the requirements for one area of ​​the code are changed using different iterations, the same programming may be required several times. If the plan was to follow, it is expected that one area of ​​the code will be written once.
  • It is not possible to develop realistic performance estimates needed to provide a quote, because at the beginning of the project no one knows the full scope / requirements
  • May increase the risk of creep due to lack of detailed documentation of requirements.
  • Agile is a feature; non-functional attributes of quality are difficult to place as user stories.
+8
source

Using Agile as an excuse for not spending enough time and effort planning, defining requirements, and documentation.

+7
source

I think trap number one thinks that "agile methods" means that you can do or not do anything you want. I would jeopardize that most people who use agility do use ad hoc, rather than using methods that lead to agility. Agility requires work and discipline, perhaps more than plan-based development.

I get a giggle from people who say flexibility is less effective because changes can happen and you have to redo everything. The reality is that changes happen and you have to do something (or end up with an unhappy client) regardless of the method. Flexible methods simply agree that this will happen and try to use methods that will allow it to happen in the least destructive way. To be effective, you still need to be disciplined about what changes you allow using flexibility just gives you a better chance to say yes and still do it on time.

+6
source

Many of the answers here are not traps, but critics. In my opinion, pitfalls are potential problems that should be monitored, not reasons, to avoid flexibility.

Here are some of my Extreme Programming:

  • Personal hygiene, sexual comfort and intimate social skills unexpectedly matter with Pair Programming

  • It's easy to worry about Refactoring so much that you want to convert code that doesn't matter, apply advanced templates to trivial routines, and refactor right to the deadlines.

  • Practice supports each other in important ways. If you leave one, you will run into a problem in the other. For example, if you stop doing TDD, your refactoring will become more complex and risky.

  • Just because you think you are following the practice does not mean that you are doing it right. You really need talented people to understand how XP works and do it right.

  • You can still fail. Just because you are all agile, this does not guarantee that you will complete your project or that it will be the good software that your customers want.

+6
source

The idea that Agile is an excuse for the development of "flying in the shoes of your pants."

+5
source

This is a very philosophical question. There is one trap: Management, which believes that flexible development can justify a 180-degree rotation every two weeks. Another mistake is that when everything is done wrong, the workload is not balanced between team members.

+4
source

I believe the biggest risk of Agile methodologies is a reputation for being "flexible." That is, you risk that developers will start filling out their own Agile methodology definitions. If this happens, you will end up with no methodology at all.

+2
source

The biggest mistake is that people look at practice and skip one thing:

  • Verification and adaptation

If you, as a team, do not constantly evaluate your practices and find out what works, what is not, what needs to be adjusted and what needs to be adapted, then you will most likely fail.

+2
source
  • Agile can only succeed if you have requirements for at least one sprint.
  • Most clients tend not to have the right requirements or often change in the middle of the sprint, which leads to re-planning and the start of the sprint.
  • Agile can be more successful when the application is in maintenance mode, where the application is already in production, and the developer simply adds more features to the application in each sprint.
  • The management has one advantage: they can penetrate the daily life of devs / qa at work (daily at sprint meetings).
  • He could eat through the budget quite quickly if the proper planning is not in place (in most cases this is due to changes that need to be accepted).
  • Since there is less / no documentation with documents, you cannot force one person to be responsible for a function that is incorrectly edited or misunderstood.
  • This lack of accountability can lead to more problems when one of them intentionally does not fulfill his role in the team.
  • Developers may be disappointed with ever-changing demands and repetitive work. (imagine that you can configure the same function in 5 sprints that could be completed in one sprint with correctly analyzed requirements).
  • A Business / Client representative usually does not take responsibility for providing the appropriate requirements.

I have been working with Agile processes for 3 years. Prior to that, I worked at CMM Level 5, where waterfall techniques were conducted.

+2
source

I disagree with all the common critics, with the exception of “May lead to more complex contract negotiations.” It's hard to get around this if your client does not want to have anything to do with your dev process.

Other elements are true only if your dev process is violated in some other way, for example, you do not conduct unit testing or continuous integration or version control.

The main trap is trying to make a “kind of agile” approach without any reading of Agile Manifesto or to do any research.

+1
source

All Articles