Friday, October 11, 2013

Agile Methodology: For nOObies

     Project management is a very important facet in any software development. We have many different approaches to achieve the desired results in SD. Since I was myself a novice in understanding this terminology I thought I would delve deeper into it and make some sense out of it. And hence, this blog-post

So why do we need a Software development framework ?
Wouldn't you like your things to be kept in a systematic way yet organized way ? Likewise, in software development right, from SDLC, the idea is "to pursue software development information systems in a very deliberate, structural and methodical way, requiring each stage of the life cycle right from the inception of the idea to the delivery of the final system, to be carried out sequentially and rigidly".
Well, comparing it at an individual level with maintaining stuffs (being organized, clean..Blah blah...Don't we hear this so much from our seniors) it does make sense right ? 

What is it?
Software development as a  framework, is used to structure, plan and control the process of developing an information-system this includes the pre-definition of specific artifact and deliverable that are created and completed by a project team to develop or maintain an application. Several approaches typically used by people for software development today are viz., 
  • Waterfall model
    Agile development
  • Spiral model 
  • Incremental 
  • Prototyping 
  • Rapid Application development (RAD)
Don't you think if the objective of all of them is to achieve the same result, then why the hell on earth do we need so many models (Grrrr...) Don't worry :) you will soon realize that like I did.
Since, it is not necessary that all the projects have similar requirements, likewise different framework also have their own strengths and weaknesses. Let's put it this way, for different project requirements we have different frameworks.

   To give a brief summary of the past, Software development in the 1990s was shaped by 2 major influences: internally, object-oriented programming replaced procedural-programming as favored by some experts; externally, the rise of the internet and the dot-com boom emphasized speed-t-market and company-growth as competitive factors. Rapidly changing requirements demanded shorter life-cycle , and were often incompatible with traditional methods of software development.
Didn't I assure, that you will soon realize the need for different software development frameworks!

What is Agile ?
Agile is a group of software development methods used based on iterative & incremental development. This methodology provides opportunities to assess the direction of a project throughout the development life-cycle. This is achieved through regular cadences of work, known as sprints or iterations, at the end of which teams must present a potentially shippable product increment. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental.” In waterfall, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development — requirements, design, etc. — is continually revisited throughout the life-cycle. When a team stops and re-evaluates the direction of a project every two weeks, there's always time to steer it in another direction.

The results of this “inspect-and-adapt” approach to development greatly reduce both development costs and time to market. Because teams can develop software at the same time they're gathering requirements, the phenomenon known as “analysis paralysis” is less likely to impede a team from making progress. And because a team's work cycle is limited to two weeks, it gives stakeholders recurring opportunities to calibrate releases for success in the real world. Agile development methodology helps companies build the right product. Instead of committing to market a piece of software that hasn't even been written yet, agile empowers teams to continuously re-plan their release to optimize its value throughout development, allowing them to be as competitive as possible in the marketplace. Development using an agile methodology preserves a product's critical market relevance and ensures a team's work doesn't wind up on a shelf, never released.

Well that's about it from Agile methodology. But you also must have heard a lot about Scrum. 

Like in SDLC we have many different methods. Likewise, for Agile we have many different methods:
  • Scrum
  • Extreme Programming 
  • Adaptive software development (ASD) 
  • Dynamic system development method (DSDM)

What is Scrum ?
Scrum is the most popular way of introducing Agility due to its simplicity and flexibility. Because of this popularity, many organizations claim to be “doing Scrum”, but aren't doing anything close to scrum's actual reference. Scrum emphasizes empirical feedback, team self-management, and striving to build properly tested product increments within short iterations. Doing Scrum as it's actually defined usually comes into conflict with existing habits at established non-Agile organizations.

Scrum has only three roles: Product Owner, Team, and Scrum Master. These are described in detail by the scrum training series. The responsibilities of the traditional project manager role are split up among these three Scrum roles. Scrum has five meetings: Backlog Grooming (aka Backlog Refinement)Sprint Planning, Daily Scrum (aka 15-minute standup), the Sprint review Meeting, and the Sprint Retrospective Meeting

To know more about scum many books and classes are available from a variety of competing sources of varying accuracy and quality. One place to start would be the Scrum Training Series, which uses an entertaining approach to cover the most popular way of introducing Agile to teams. You can also download the 6-page illustrated Scrum Reference Card.

I hope after reading my blog you never make a (what's that huh ? expression) , hearing/talking about Scum or Agile to anyone. 

Stay tuned for more!

2 comments:

  1. Hello Akashay! Your post on Agile software development is very informative! It is a very good introductory post on the topic. And I really like that you included some informal phrases here and there, which makes the post not as dull.
    There are some minor issues through the post. Some of the punctuation marks are not used consistently. You were missing a couple periods and misusing parentheses. Besides, this post is really long (at least for me). You want to write your post with a shorter length, so it is a blog post instead of a full article.
    Overall, I really enjoyed it! Good Job!

    ReplyDelete
    Replies
    1. Thanks! Eve for your comment. While introducing Agile, i realized that it was important for me to include what ever i have, to understand Agile and how it's used today. I myself had never known about Agile before this post.
      Anyways if you read my other posts, you wouldn't find them lengthy.

      Delete