Agile Methodologies

Another kind of methodology is Agile software development. It help groups of developers build software using a "work smart not hard"  as-you-go philosophy: efficently and effectively delivery pieces of the site as they're completed.

 

This set of principles encourages the site owner and the development team to work together. It promotes team development. The Following are AGILE MANIFESTO’S 12 PRINCIPLES that you will embrace if adopting this method.

1. Customer satisfaction by rapid delivery of useful software.

2. Welcome changing requirements, even late in development.

3. Working software is delivered frequently ( in weeks rather than months).

4. Working software is the main measure of progress.

5. Sustainable development, able to maintain a constant pace.

6. Close, daily cooperation between business people and developers.

7. Face-to-face conversation is the best form of communication (co-location).

8. Projects are built around motivated people and those people should be trusted.

9. Continuous attention to technical excellence and good design.

10. Simplicity.

11. Self-organizing teams.

12. Regular adaptation to changing circumstances.

 

The principles are a kind of variation on the waterfall methodology in which there is a logical progession of development, each step being built on the groundwork you've already laid down... but with the waterfall method you don't say that anything is done until EVERYTHING is done. Agile software development promotes iterative and incremental development as a way to deliver features of the site as soon as they are done,instead of when the entire site is done. Iterations are short production sessions.In iterations the software team works through requirements, design, development, and testing for the site features. If the feature isn't good for some reason (users don't like it, it doesn't DO what it's supposed to), another iteration of development is performed. When you finish one feature, you start another, completing the process in increments.

There are several methodologies that support agile software development. For instance, the Drupal community often uses Scrum, an iterative and incremental methodology for managing software development. One practice of the scrum process is the sprint.

A sprint is a short period of time (up to 30 days) during which your team's goal is to develop specific site functionality. The goal is to plan AND execute your development in a specific time frame; finish your functionality in the time frame you set at the begining of the sprint. Depending on where it fits into the site, the completed functionality could be implemented.

Extreme Programming is an enother software development methodology coming out that fits in with the agile principles. Its focus is on frequent releases in short development cycles while tailoring the features to customer requirements- which can change-.  

 

 

Advantages: It's a pretty quick way of getting your site live.You can see if the original requirements will work as you'd expected and wanted before the whole site is finished. It's a good approach when your requirements are more vague- if you've got a goal statement or "vision" that needs to be explored so that you can get details. Instead of having a large block of time devoted to planning you'll have a series of mini planning/development sessions. How many sessions you need depends on how long your list of features is and how easy it is to get time with the decision makers. This method cuts down on the planning time (requirements and design) which makes the site features/code deliverable more quickly.

 

Disadvantages: It's harder to make a fixed price agreement with a vendor since the requirements aren't always well known yet. Vendors who offer fixed-price proposals under an agile methodology should  include the assumptions they are making regarding the effort they are estimating (like, if their bid includes custom modules or a custom theme.) That will help avoid any miscommunications and you're less likely to hear things like “that is out of scope. I'll rewrite our contract. We need to reassess.” etc.

Another disadvantage to incremental planning involves the possibility losing work. If you need to add in a requirement and that ends up changing strategies that are already set up then you're going to have to undo and redo some work. It isn't guaranteed to happen on your project but it's goood to know that it's possible. To be on the safe side you can put some more weight on the upfront planning - not completely as you do in the waterfall method- but enough to help you decide the important attributes associated with your features.