Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I just re-read The Pragmatic Programmer (my third time reading it...I get something new every time, too). It seems like the tips that they mention are related to many of the various Agile methodologies. Is Pragmatic Programming just another form of Agile Development?
Much of what has been coined "Agile Development" are practices that have been used for years and you will find a lot of these ideas in "The Pragmatic Programmer" and "Code Complete", etc.. To some degree agile is a nice marketing spin that has been coined, but I do believe it has done us a lot of good to get some of these practices and ideeas into the mainstream.
Without wishing to be flippant: does it matter?
When it comes down to it, these are labels which people use in different ways, meaning a whole variety of different things. The practices themselves are much more important than the labels you ascribe to them.
But yes, fundamentally it shouldn't be surprising that many of the practices appear in both places.
The authors both were both part of the small group that started the whole agile movement (or at least gave it a name), so I would say yes.
Yes, the pragprog way is being agile. Many elements of the agile manifesto can be found in the pragmatic programmer book. Great examples of this include "there are no final decisions" and "code that glows in the dark".
Andy Hunt and Dave Thomas (Ruby Dave) signed the agile manifesto.
The main point I'd like to make is that few really experienced agile people put much stock in how "agile" anything is. Kent Beck was interviewed just a few weeks ago on the FLOSS podcast ( http://twit.tv/floss87 ) and it's clear from what he said and his tone of voice that the pioneer of extreme programming doesn't believe that the word "agile" carries much meaning these days in the industry.
I have done lots of extreme programming and have find that everybody says they're "agile" - even people who didn't know what it meant five minutes ago. IMHO the term has become meaningless. It's a lot more clear cut whether a project follows the scrum rules or the extreme programming rules... I'd say pick a specific style because the "agile" umbrella term seems to mean less and less as time goes on.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
I am new to programming and I try to research as much as possible in this field. And once I came across to this expression: "Extreme and pair programming". Pair programming is an easy term, and I found quite clear documentation about this. But extreme programming... I found some articles about it, but explanation wasn't so well. All I understood that extreme programming is an Agile development framework. But why I must use that, what is difference between this and another types of programming styles?
Can anyone explain me what is extreme programming language very clearly?
Extreme programming (often called XP) is an agile framework that was developed by Kent Beck in the 1990's.
There aren't too many people that use the whole XP framework these days, but a lot of the engineering practices it popularised are very common.
Examples include:
Pair programming
Test driven development
Continuous integration
Frequent releases
Constant refactoring
XP favours an approach of writing the minimum amount of code to solve the problem at hand. Things like optimisation and forward planning are generally a low priority. This is the 'extreme' part of extreme programming.
The idea is that you write code to solve the current requirement. If you then find you need the code to be faster, or scaleable, etc. then you refactor it.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I am trying to understand the concept of Agile. I have been reading up on Agile methodologies but keep seeing terms like Agile environment, and Agile Teams.
I thought Agile was just a methodology, but I'm not sure what is an agile environment and that agile teams actually exist!?
Think of Agile environment as the frame of a puzzle: you are given the framework and there are plenty of pieces able to be used in order to achieve your goal! Not necessarily all the pieces are to be used...
Agile Team is usually a team working in an Agile environment. Different methodologies (XP, Scrum etc) define different types of teams, of different sizes (project dependent) and so on.
The easiest way to understand Agile is to see it as the most flexible environment in which YOU need to self-organize and assume responsibility for your acts.
Once you start practicing agility in a business, especially if you have a good guide, you won't give it up ever - 'practice' is here the key word!
A summary of agile methodologies is not wasted the time with a bureaucracy process of the steps of a life cycle. Instead of a long process the agile methodologies are more flexible and they focus on the code.
Nowadays more software companies join to the agile methodogy because they can be more efficient.
You can find more information about the practices, here:
List of agile best practices
Agile is an approach to development that follows certain principles, such as responding to change over following a plan.
An agile team is one that is following the agile approach to development.
An agile environment is one where many people are following the agile approach to development and as a result the environment reflects that approach.
If you are asking not just personally for you but for introducing Agile in your team or a company, you may find this interview useful: http://goo.gl/qYDjR3
This is a Q&A with the founder of Targetprocess who started to apply the Agile methodology in 2004 and who describes the stages Targetprocess went through, how they instil an Agile culture and enable self-organizing teams, trust and obsession with learning in software development teams.
Agile is a methodology that grew from the Agile Manifesto. Everyone seems to have a different approach or theory about Agile and new buzz terms keep springing up. I have always found in companies that I work for that Agile is great in theory, but bad in practice. It gets confusing very quickly and when it isn't successful, people will just say that you are doing it wrong. What you need is a methodology that learns from Agile but doesn't include it's limitations. Digital Animal have established a methodology that they use that does just this, they wrote an article explaining it here: http://digitalanimal.com/blog/slaying-the-agile-dragon-the-game-of-thrones-methodology/
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I am taking a software development class right now and we are discussing agile methodologies. What are the most common agile methods? I need to look into several and discuss their strengths and weaknesses. Seems more useful to look into the most prominent methods.
Observations:
Scrum seems pretty popular (that is what my team used on two of my coops).
Extreme also seems to get quite a bit of buzz but I am not sure if that many people actually use it.
What does your company use and how do you like it? Does anyone use:
Agile Modeling
Agile unified process
DSDM
Essential Unified Process
Feature Driven Development
Open unified processes
Rational Unified Process
Are there other methodologies that I should investigate?
I've used SCRUM in personal projects with friends and schoolmates and my current employer uses a custom agile process that's very similar to SCRUM but with fewer meetings.
We have used Test Driven Development and Scrum.
I've been on some very successful teams which used Scrum very effectively. It really does help to keep everybody focused and constantly moving forward, and it discourages regressions.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
So as a developer I am seeking to improve not only my coding skills but my design and management skills. Because of this I'm starting to pay more attention to software engineering practices but i'm not sure where agile development fits into the picture. I can appreciate agility in projects but I wonder whether this conflicts with the traditional ways of software engineering practices and research.
If you haven't read Rapid Development, I highly recommend it. What makes it super pertinent now is how it leaves off just as it should start talking about Agile. So it gives you a thorough background of "how we got here". When you read the sections on iterative development and iterative prototyping, it will make any additional research you do on Agile that much more meaningful.
I thought that agile practices, as expressed by Kent Beck in "Extreme Programming", were merely best engineering practices turned up to eleven:
If code review is good, we'll code review all the time by pair programming.
If integrating often is good, we'll integrate all the time with continuous integration.
If testing is good, we'll test all the time with test driven development.
If this is true, I'd say that agile practices need not conflict with traditional software engineering. They're merely traditional ideas taken to an extreme.
I'd also wonder if agile is less about practices and more about mindset and ideals: see The Agile Manifesto. I think this is where the real clash lies, because most of the companies that practice traditional engineering don't embrace those ideals. It goes against traditional project management thinking.
Agile should not change your engineering practices. Agile is a way of breaking up the work into story points and giving you the ability to track the project as it progresses.
Agile has nothing to do with s/ware engineering as it can be adopted for anything. Even toasting bread.
The simple answer is "no, they don't."
Agile methodologies are ways to impose discipline on software development and hopefully get to best practices. There are other methodologies that have the same goals, and those methodologies may conflict with Agile methodologies; but the goals are similar.
After a few years of software development in several companies I must admit if cars were developed in the same way software is, I would go to work on foot. I haven't seen any software engeering yet. It's always the same. Start typing without any plan or model or concept or anything just endless refactorings and changes. Most of them could have been avoided if there were just time to think before you start. Everyone wants to see instant results but no one cares about the quality and extensibility.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
My team does some development, but is mainly involved in supprting an existing suite of applications. We now have an imbedded tester (and another on the way). So how can I apply agile practises in what is a purely reactive situation?
You could try to use Kanban. It is more suited for such dynamic situations than Scrum. The ultimate solution would be to use Kanban for support activities and Scrum for development, but in case you spend much less than 50% of your time for development this may be not worthed (overengineering).
Even though it is purely reactive, you surely have larger requests that need to be prioritized? I am using Scrum in a support situation to help prioritizing the non-emergency work that often requires hours or days of effort. I think that Scrum in some ways fits in even better in a support situation than in development.
I would start with prioritizing the issues that come in (someone from the business end should be responsible for that), making things visible (e.g. getting them up on a task board), and improving your definition of done for each task (tests, code review, etc).
Now that you have a tester with the team, it would be a good time to start some TDD and definitely start automating a lot of your tests.
Once you have some of these basics in place, you can look at either Scrum or Kanban depending on your needs. If tasks always seem to come out of the blue, Kanban is probably more appropriate as another poster suggested.
In order to be successful with Kanban, you must make sure that you have a very solid definition of done to ensure that you maintain quality throughout. Without it, you won't see the full benefit.
I would also recommend scheduling regular retrospectives to see what is working for you and where you need to improve.