Showing posts with label scrum. Show all posts
Showing posts with label scrum. Show all posts

Monday 11 April 2016

Distributed Teams Challenges And Agile Advantages

Distributed Teams Challenges And Agile Advantages


Part 1 - Project management methods and Agile


With dynamically changing market scenarios dominating the outsourcing markets, it has become imperative to remain conversant with emergent technologies and use them for developing projects. New platforms and technologies have a lot to offer in terms of reduced development time and targeting a wider range of client-centric requirements, however, while reaping the benefits they offer, they also impose a few constraints regarding their applicability. Offshoring businesses can increase the productivity levels and generate higher profits but often face problems in finding technical teams familiar with the usage and implementation of new technologies. For most organisations, it is more profitable to find technical talent in other countries and outsource their projects depending upon the nature and scope of the project on hand. 

It is very important to manage projects in an effective manner to make them profitable. Several project management frameworks and methods aim to make project management easier and more effective. Some of the popular methods used in the past, and even now are:

  • Critical Path Method (CPM)
  • Critical Chain Project Management (CCPM)
  • PMI/PMBOK Method
  • Event Chain Methodology (ECM)
  • Extreme Project Management (XPM)
  • Adaptive Project Framework (APF)
  • Lean Development (LD)
  • Six Sigma/Lean Six Sigma
  • PRINCE2
  • Dynamic Systems Development Model (DSDM)
  • Feature Driven Development (FDD)
  • Rapid Application Development (RAD)
  • Systems Development Life Cycle (SDLC)
  • Waterfall (Traditional)



Each method proposes to make project management easy and more accurate. Often, it is difficult to choose which method one ought to adopt for developing a project since every management technique has its own pros and cons. While a particular organisation may offer a positive feedback regarding a method it is following, consultants might consider it a bad choice and speak against it. There are no postulates or rules which define a “successful” project. Also, there are no rules which can help in deciding whether a particular methodology is more effective as compared to the other. It is based more upon personal experience, understanding how a methodology works and what it has to offer, and how well it can be implemented. Perhaps, the most important aspect to understand is whatever methodology you choose, what is more important is how well you use it to your benefit to make your project successful.

Projects may vary in terms of their scope, size, complexity, and nature. However, regardless of that, offshore or distributed teams have to be properly coordinated and managed. Agile project management framework offers several options for managing remotely developed projects.

Agile frameworks
Scrum
Recommended for developing small to medium sized projects using a team of 7 to 12 cross-functional and multi-skilled individuals. The Scrum framework is characterized by its clearly defined events, artefacts, roles, and process which have to be followed by the entire team. The error correction and retrospection activities take precedence over documentation and delegation of authority. The client is actively involved in verifying the development carried out by the team. The Scrum team delivers the business value in the project through successful product increments developed through periodic cycles known as sprints.

Extreme Programming (XP)
Extreme Programming (XP) offers a practical approach to program development and focuses primarily upon the delivery of business results. It follows an incremental, start-with-something approach towards product development, and makes use of continued testing and revision processes. XP is generally recommended for short-term projects, and development teams typically follow code-test-analyse-design-integrate process. XP is known for “paired” programming i.e. two developers engaged with code development and testing simultaneously. One programmer creates the code while other tests it on the spot.

Kanban
Based upon the concept of Toyota production model, Kanban offers a pragmatic approach to development by matching the actual amount of work in progress to the development teams capacity in delivering it. The framework provides more flexibility in terms of planning options, quicker output, a clear focus pertaining what needs to be developed, and maintaining total transparency throughout the product development cycle.  

Scaled Agile Frameworks (SAFe)
Scaled Agile Framework (SAFe) is a structured and prescriptive method to help large organisations and enterprises to get started with adopting Agile. It is a popular and efficient Agile framework successfully used by many companies covering various industry verticals. It is specially recommended for large sized software based projects where teams can function interdependently.

Nexus
Nexus is an Agile framework focusing upon cross-team dependencies and team integration issues. It facilitates Agile implementation in complex and large scale projects. It functions as an exoskeleton and helps multiple Scrum teams to integrate and pursue a common goal of delivering valuable product increments through sprints. Each team delivers a certain business value to the client through each product increment cycle, and the teams achieve this by following Agile principles and process. Nexus is recommended for development teams consisting of over 100 individuals.


Part 2 – Agile for distributed teams


While executing your very first remote project, the most logical thing to do is to document the project vision and figure out how the team will deliver the project goals. Proper and effective communication is of paramount importance while explaining the goals and objectives to team members. It is a simple and straightforward process most of the times, but while working with distributed teams, the cultural differences and varying language proficiency levels may often create constraints and lead to miscommunication as well as confusion. This can be a common scenario in case of teams located in countries across different time zones and possess limited ability to communicate using a particular language. Individuals may find it difficult to understand and capture the exact project requirements and deliver code or functionality that does not fulfil end user requirements. Projects often fail because of these and other such technical and non-technical reasons.

Using Agile it may be possible to simplify these types of problems. Agile is not a silver bullet that can rectify all issues and problems faced during project execution. Agile is a framework, therefore It depends upon how well the team understands its principles and how effectively it implements them in the project. However, the framework is designed such that issues can be dealt with in a more proactive and effectual manner.

Part 3 – Dealing with issues using Agile


Businesses opt for remote or distributed teams mainly to segregate the development activity from the main organisation body by trans-locating the team and development activity to some other location for management or financial reasons. The team is directly employed by the organisation and each member is an employee. In case of offshoring, the entire project is outsourced to a development vendor who executes the project on behalf of the client, or develops it as a part of client contract. This discussion does not try to differentiate between whether the remote team is a part of parent organisation or it belongs to an outsourcing vendor. Some common issues faced while working with both types of teams are discussed and how those issues can be properly targeted using Agile. It is worthwhile to know that Agile is not the only project management platform to develop IT or software projects. Neither does it offer a guaranteed way of dealing with issues faced while working with or employing remote teams. However, the framework is uniquely designed, and is flexible enough, to deal with such issues in a more effective manner, and more easily.

Project vision and documentation
The project vision explains the goals and project deliverables. The primary aim of the team should be to deliver work supporting the vision so meaningful business value can be delivered to the client. Often, development teams put in efforts and deliver work, but when reviewed by the client, it is discovered that the features developed don’t exactly support what the client actually wants. This can be a very common scenario when teams are unclear about what the project aims to achieve and why it exists in the first place. Common reason why teams may fail to understand the vision could be language barriers (In case of distributed teams located in different countries and speaking different languages) or a lack of proper communication from the client’s or management’s side explaining the objectives.

Agile does not emphasize upon extensive documentation. In real life scenarios elaborate or extensive documentation often remains locked away in filing cabinets or resides on shelves for future references - teams rarely bother to read them thoroughly since they can be large in size and a lot of time is spent in reading and understanding them. The attitude of most development teams (Don’t mean to disrespect them in any way) is to get started with work so deadlines can be met. Teams are generally pressed for time so they don’t bother, or can’t afford to spend hours reading comprehensive documentation. Paperwork is greatly reduced in Agile, and if you choose to follow Agile, you need to create just enough documentation to get started with work. More importance is given to understanding client-centric requirements and delivering business value, rather than creating elaborate reports and documents. Moreover, one of the responsibilities of the product owner in Agile is to ensure that the team understands the deliverables and project vision properly before it starts to work. The PO also makes sure that the business value delivered from the sprints is useful and matches the project vision.

Maintaining quality standards
Quality and deadlines are two most important factors associated with, and affecting, the success levels of a project. Quality features fulfilling end user requirements have to be developed within the decided time so it can be properly marketed and business returns availed from it. In the IT market segment it is not just important to build quality software, but to release it in the correct manner at the correct time and at the correct place (targeted market audience i.e. the geographical boundaries within which end users are likely to buy your product. With online marketing these boundaries remain virtual but nevertheless play an important part in deciding the “target audience” when the project is planned and incepted). When outsourcing work to remote teams, the quality aspects could get compromised upon if a QA or testing process in set up as a part of development process. Fewer development teams actually bother to test the code for regression after it is developed unless it is a pre-decided activity and integrated with the development process.

The Agile manifesto states "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software." It emphasis upon “early and continuous delivery of valuable software” i.e. useful and valuable product features should be developed and delivered to the client on regular basis. Agile focuses upon the delivery of “shippable” features. Each feature should be properly tested for errors and made bug free before its development can be considered as complete and deployable. Developers and programmers often double as testers to carry out the QA part during sprint cycles. Agile fails if “workable” features are not developed. Remote teams trained in Agile have to fulfil the test conditions stated in the acceptance criteria defined for each development task created in the product backlog (ideally).

The supervisor or project manager’s role
Every project needs a manager to oversee its execution and completion. It is important for the supervisor or the project manager to remain available to the team and resolve problems and issues as and when they occur. When teams are located on-premises it becomes easy to resolve technical problems since face-to-face interactions are possible and the manager is always available when you need him or her. That is not always the case with remote or distributed teams. Owing to time differences, the manager could be ending the day while the remote team would be just about to start with work. Teams may be required to wait for some time before problems are resolved, and this could delay work further. Deadlines and commitments may therefore not be met.  

The Scrum Master’s role is very clearly defined in Agile framework. The SM often plays a servant-leader role, and mentors and facilitates the Agile process. The SM ensures that he or she is always available to the team and resolves glitches whenever the team gets stuck. In Agile, the Scrum Master is a specific role played by a person, rather than a designation or responsibilities given to a single individual. The role can be played by anyone in the team. In case of distributed teams, a responsible team member can be taught to play the Proxy Scrum Master’s role and provided with quick-access channels to communicate with the actual SM or PO in case of urgent issues. The person also functions as a team representative and creates daily feedback reports which can be studied by the client, PO, and the SM as per their convenience.

Ownership and team empowerment
Traditional project management methods differentiate between senior and junior level individuals, and have a clear hierarchical structure defining authority levels and who reports to whom. Even today, most organisations still follow this traditional hierarchical model, and individuals belonging to different levels of authority remain concerned about their responsibilities and reporting status. Even though the model is organised, it takes a lot of time for issues to get resolved as the escalation process involves several individuals starting from the junior level to senior levels. Moreover, people have a tendency to “pass on” issues to senior levels personnel and let them decide what to do next. Technical staff and junior level employees may prefer not to get involved with decision making since they often become scapegoats to bureaucratic procedures. In case of distributed teams the scenario can become even worse because you don’t have to deal with just bureaucratic attitudes but the language and distance factor may further make the team even less accountable for the success or failure of the project.

Agile does not believe in shifting responsibilities or escalating issues. As per the model, teams are cross-functional and self-managing. Each team member often takes up additional tasks other than his or her particular skillset thereby reducing the total numbers of skilled members required in the team. There are no senior-subordinate levels – just three primary roles of product owner, scrum master, and the development team. Rather than assigning tasks, each team member voluntarily takes up work based upon his or experience and skills. One of the most important aspect about Agile is that the team has to “own” the project on behalf of the client. It means each person is responsible not just for the work done by him or her, but the overall contribution of all members at the team level is even more important. The entire team is accountable for the success or failure of the project – not just the product owner but each and every member of the team.

Moreover, the three roles of PO, SM, and the team are empowered in Agile to decide on their own what course of action to take to best fulfil their objectives. The development team is not required to follow orders or take permissions in deciding how a particular feature should be developed, and in what manner. It has to deliver work as decided in an event – the sprint planning meeting – held before each product incremental cycle known as a sprint starts.

Thursday 7 January 2016

Types Of Agile Coaches And What Do They Do?

Agile Coach

People may or may not have heard about the word “Scrum”, but for those who have, a question most commonly asked by them might be “What can Scrum do for me to improve my business?” or “How do I use Scrum to grow?” – A topic most discussed by CEOs, CTOs, project managers, and other senior level executives in a development company or organisation when they are faced with choices of adopting a framework to better their work processes and increase the investment returns for their organisation. It is important to understand that for a business new to Agile and Scrum a lot depends upon what type of Agile or Scrum coach it hires, and how successfully the coach can help the organisation to adopt Agile principles.



Agile can work wonders for you provided it is implemented in an effective way. Agile coaches ensure that business implement the framework in a proper manner. Therefore, a lot depends upon what type of Agile coach do you actually need? You may feel unsure about Agile adoption but serious enough to “give it a try” and see if it can benefit you. On the other hand, you may be aware about the benefits of using Agile but not certain how to start. It’s worth considering about the level of Agile coaching you actually need to get started.


What is an Agile coach?



What is an Agile coach? When the question is asked to different people you’re sure to get different types of answers depending upon whom you’ve asked. The perception of Agile coaching changes from individual to individual, and from company to company. Perhaps the main reason why this happens is because there are no standard definitions explaining Agile coaching, and people have the liberty to interpret the terminology in a manner they deem correct.

So, rather than trying to define exactly what an “Agile coach” is, it would be more worthwhile to comprehend what activities Agile coaching includes, and what does an Agile coach do when he/she is appointed by an organisation to facilitate or implement Scrum in their business processes. Coaching needs and activities vary from businesses to businesses based upon the type of product to be developed. However, in a typical organisation, there are three main areas where managements often decide Agile coaching is needed.

Agile Team Facilitator

An Agile facilitator may or may not possess a coaching certification from a reputed or known Scrum body. His/her primary role involves facilitating Scrum activities and mentoring Agile teams in achieving Scrum agility. The person usually engages with one or two Scrum teams – not more – and may lack experience or skill sets required for adopting and implementing Scrum to the fullest extent in the entire organisation.

Small organisations, or businesses having a limited Scrum budget but still interested in implementing Scrum may opt for Agile team facilitators to introduce Scrum in their organisations before deciding upon a concrete Scrum adoption plan. Usually, the objective of hiring an Agile team facilitator is to familiarise managements and development teams with the Scrum process and get an idea about how to go ahead with Scrum adoption, or, at times, to decide whether Scrum adoption is needed or not.

Agile Coach

An Agile coach can have one or more certifications from a well-known Scrum certification body. Unlike getting certified as a chartered account or a medical practitioner in a particular state or country, there are no formal or authorized “government recognized Scrum certification issuing authorities. Certification availed from a few Scrum entities like Scrum.Org, Scrum Alliance, Agile Coaching Institute, etc. carry value in the Scrum market, and employers generally search for coaches who have qualified or hold certifications from these type of institutes.

Agile coaches have a sound and relevant experience in at least one Agile discipline – Scrum, XP, or Kanban. They are certified Agile professionals who have achieved a high level of proficiency in their respective fields. They possess sufficient domain knowledge and coaching skills to facilitate and mentor the Scrum process in an organisation. An Agile coach trains the development team and the management in Agile principles and practices.  He/she contributes at both macro and micro levels, and in addition resolves all Scrum related issues. Often, Agile coaches promote and act as Scrum ambassadors in organisations which appoint them.

Businesses appoint Agile and Scrum coaches when they decide to go “all the way” with Scrum, and want to make sure they benefit from Scrum principles. Coaches are also consulted to discuss ways and means to develop better products, increase the ROI, and improve the current business processes.

Enterprise Agile Coach

An Enterprise Agile coach is a person who has achieved some additional skills such as advanced systems coaching, understanding work culture, training organisations in specialized business processes, implementing change management, and creating collaboration and leadership qualities amongst individuals which “regular” Agile coaches may not possess.

An Enterprise Agile coach may work at all levels in an organisation and help managements in using Agile as a strategic asset for generating consistent and reliable business value by improving current processes through Agile.

Tuesday 28 October 2014

Salient Features Of Scrum

Agile - The base of Scrum

Agile, and the path to Agility is now becoming a much sought after norm for many businesses across the world. There is a huge demand for understanding, and implementing, Agile based frameworks. Perhaps one of the main reasons why Agile is becoming increasingly popular is because consumer demands are changing radically and people now desire more. And, people are not ready to wait. They want products which offer good value for money, and that too with enhanced features. This has created a need to develop products which are:
  • Competitive
  • Feature rich
  • Quickly available
  • Fulfil specific end user requirements
Agile proposes to satisfy these requirements without adding on to the product costs.
The basic issue with all Agile frameworks is that they are – frameworks. They offer guidelines how the Agile process can and should be implemented in a project. For that, it becomes imperative to understand what a framework is, and how it differs from a methodology. Many individuals still feel Agile is a methodology and they could not be more wrong.

Agile methodology misconception

There is still a misconception regarding Agile – some people still tend to refer to Agile as a methodology. This is not true. A methodology offers a set of rules, principles, tools, or practices that can be used to conduct processes and achieve certain goals. A framework, on the other hand, is a loose structure that leaves enough room for other tools and practices to be included, and only provides the process required. In simple terms, a methodology is like a doctor’s prescription – you have to “take” it as per instructions provided, while a framework is like trying out home remedies – you know what can be done to achieve a particular objective, but it is up to you how to implement the remedy, and when to implement it. An Agile framework has to be implemented in a project to be successful, and there are no specific rules about how to do it. You have to follow certain guidelines and configure your project to function as per the rules specified in the framework. This is very much the case with Agile. Agile is a framework.

Agile Scrum salient features

Of all Agile frameworks, Scrum and Extreme Programming “XP” are the most popular. Even though Scrum framework is more generally used for developing software projects, it can also be used for developing non-IT projects. Scrum constitutes a collection of ideas and rules pertaining to effective project management. The framework supports collaboration and self-organisation. The team members work jointly and develop the project. They collaborate and share their ideas and findings. Scrum teams self-manage their activities. The most important aspect of Scrum is that all activities are time boxed. The client receives working versions of the product features on a continued basis through product incremental cycles – sprints – at regular intervals ranging from a week up to a maximum of one month. Cycles keep on repeating until all product features are developed and the product is ready.  

A unique aspect about Scrum is that the framework has a capability of adapting itself to changing market conditions, and incorporates those changes in the product development cycle even late during the development process. The Scrum process focuses upon responding quickly and efficiently to changing environments and assimilating those changes in the product design. The client benefits though the development of a product that is in tune with the most recent market demands. Moreover, participation from the end users and incorporating their suggestions while developing the product features further ensures that the product developed is most likely to assume a high business value or worth.  
  • Scrum - an agile process – focuses upon delivering high business values to the client in the shortest time possible.
  • It supports rapid and repeated inspection of the actual working software.
  • The product is developed in stages through the product incremental cycles known as sprints.
  • The client benefits from shippable product releases at the end of incremental cycle.
  • Frequent and consistent product increments should be delivered to the client.
  • The client, and the business, sets the priority.
  • The working process responds quickly and efficiently to the changes occurring in the market conditions, and in incorporating those changes into the product features in the least time possible.
  • Scrum teams self-organise and self-manage to determine the most efficient and quick way of delivering high priority features.

Scrum principles

Scrum functions as per certain rules or principles which are very important for its efficient working:
Individuals and interactions over Process and tools
Working software over Comprehensive documentation
Customer collaboration over Contract negotiation
Responding to change over Following a plan

Tuesday 21 October 2014

Breaking Down The Agile Manifesto And Understanding It

The popularity of Agile frameworks, especially XP and Scrum, is increasing by the day, and more and more organisations are deciding in favour of using these frameworks to execute their projects. Agile proposes many advantages – frequent and reliable product increments, delivering product features having high business values, and above all – delivery of shippable product features even while the development process is underway. However, a major issue with Agile, and all Agile based frameworks is that the framework has to be properly understood and later implemented in the project. Moreover, the implementation should be carried out keeping Agile principles in mind. More than often, businesses fail to benefit from Agile simply because the management has not understood the basic principles behind the framework, or has failed to implement those principles in a proper manner.

The Agile manifesto

Since it was developed in 2001, thousands of individuals including project managers, software professionals, and C level executives have endorsed the Agile manifesto. Hundreds of books and references have been written to discuss what the guide has to say, and how it should be interpreted. The manifesto has drastically changed the way in which organisations and individuals develop software projects. The manifesto packs a lot of punch for its 68 words which have been written by 17 software professionals over a two days meet at a ski resort.

The principles of Agile are stated in the official guide written by Ken Schwaber and Jeff Sutherland. The guide functions as a bible for all Agile groups and Agile professionals. People refer to the guide when in doubt, or when they wish to clarify a particular point during Agile framework implementation. For individuals interested in Agile, it is very important to understand the guide and interpret what it has to say.


We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
 
We
To start with, the manifesto states “We” i.e. it emphasis that Agile is not a solo endeavour. It involves group activity and people have to collaborate while working, at every level, and at every instant. Development teams, project teams, and organisation have to work jointly as a composite unit, and rely upon each other for completing work.
 
are uncovering 
Here, the guide suggests that Agile does not offer one-size-fits-all type of solutions. Agile cannot be standardised and implemented in a project. People involved with Agile processes have to put in efforts, and strive to seek answers through discussions and collaborations. Answers have to be discovered through experimentation, and the “adapt” and “inspect” principles which are... Read more

Tuesday 7 October 2014

Scrum Product Owner’s Role

Agile professionals have often discussed what the exact role of a product owner should be in Scrum. What virtues should a product owner possess to be considered a “good” PO? The answers are many. And this is not surprising because Scrum is a framework, and its implementation in a project depends upon the requirements specific to the project. When requirements change, the role of the PO also changes. Therefore, it may not be possible to standardise the exact role a PO should play in a Scrum project.

A certain process flow remains common to almost all Scrum projects. The role of a product owner can be thought about in terms of what POs actually do in a typical Scrum project. Here are a few suggestions:


 Scrum Tool
Common role or activities of a Scrum product owner

· Creating the product backlog as per the product vision seen by the stakeholders. Defining user stories having high business values in the backlog so the project “value” is constantly maintained.
· Monitoring and tracking all Scrum activities. The role of a product owner may be difficult to act since a project might be demanding, and the product owner may have to cater to market related issues and still monitor the work carried out by the team. Balancing both the aspects can prove to be trying.
· Make sure that the product backlog is kept refined at all times. Moreover, the product backlog should be accessible by the entire team.
· Each product backlog item “PBI” should be properly stated and defined in the product backlog. The story description, appropriate business value, and the acceptance criteria should be stated precisely in the story card and explained to the entire team so the team members can develop effective stories and develop shippable product features.
· To be available whenever needed, to remain present, and share information, knowledge, as well as expertise with other team members.
· The PO responsibility should also include defining productive sprint goals just before a sprint commences.
· A product owner’s responsibility should also include... Read more at Scrum Product Owner's Role

Thursday 24 July 2014

Is Agile Scrum suitable For Software Development?

The scope of development in the software/IT field
People and individuals associated with software development and the IT field like to use the term “software development” to describe their particular field of work and professional involvement. The term “development” is very widely used to describe a host of activities catering to the IT field. It can range from developing code for applications and systems, to developing mobile applications for mobile operating systems such as Android, iOS, Symbian, Windows OS, etc. (visit http://en.wikipedia.org/wiki/Mobile_operating_system), “manufacturing” gaming software using scripting languages like Ruby, AGSScript, Lua, Marathon markup language, Ada, C++, C#, D, Lisp, Mercury, Pascal, Perl, Python, Scheme, JavaScript, Java, VBscript, EDL, etc., (visit http://en.wikipedia.org/wiki/List_of_programming_languages) carrying out web development using HTML, CSS, PHP, Joomla, DotNetNuke, Java, etc., and even developing entire operating systems for tablets and PCs  (visit http://en.wikipedia.org/wiki/List_of_operating_systems, to know more about operating systems). The fact is as on today, the terminology “software development” is extensively used to mention almost any type or activity associated with the programming and development of “computerizable” code of any type, in any way, or manner. When a particular methodology or framework is used to develop computerizable code and create software projects, it is important to ascertain whether the scope of development includes the specific activity you’re currently involved or associated with. Software development and projectmanagement frameworks such as Agile have the potential to develop successful IT related projects involving the vast majority of development platforms and operating systems.

While explaining Agile in a simple and straightforward manner, it can be best understood as a collection of project development methodologies and frameworks, of which any framework or methodology can be used in a successful manner to dynamically develop projects of almost any type and nature, including software development projects. The framework is based upon iterative and incremental development, in which self-organised and self-managing development teams understand, plan, and develop projects under the supervision of a project leader, and offer productivity in the form of short bursts of development cycles (iterative development) known as sprints. A unique feature of all Agile frameworks is that the development carried out by the team is “shippable” in nature i.e. the code developed during the product development cycle is independent, testable, verifiable,  documentable, and ready for deployment after it is stringently checked for any “manufacturing” defects.

A second, highly important feature of Agile development is that individuals “owning” the project are closely linked with the approval of development carried out by the team. A particular “code” or “piece” of functionality is checked for regression after it is developed, and subsequently presented to the stakeholders and project owners. They ascertain the development carried out, and clear it as “OK” for future integration into the actual product. This leads to a successful development of software projects, since the management is always aware about what functionality is currently being developed by the team, and up to what extent it satisfies the project objectives. If the project owners feel the productivity offered by the team is not up-to-the-mark, or fails to satisfies them in terms of business value (how much important the code or functionality is from the market point of view, and how much it is worth from the financial point of view) offered by the functionality, they can reject the entire functionality and instruct the project manager to redevelop the particular script or code, based upon a new set of inputs and requirements recommended by them. This ensures that the software project always “maintains” its business value at all times, even while the product is being currently developed.     

A third important feature of Agile framework is that all activities in the project are “time boxed”, and therefore, have to be completed within a predetermined time period. In an Agile project, each activity is time bound. All development related activities are “configured” to suit the unique project needs, and a duration “affixed” to them so they can be completed within a stipulated time. This ensures that the project does not “drag-on” and extend indefinitely. The development costs incurred while the project is being developed can be properly and “profitably” controlled, so that the project does not become “too” expensive and difficult to afford financially.

Agile framework differs drastically when compared to traditional linear or Waterfall methodology. In Agile, project development is carried out in short bursts of activities rather than in stages that have to be “completed” one after the other.

The main Agile features include:
·  Cross-functional development teams consisting of developers, programmers, testers, QA personnel, technical writers, system analysts, etc. all work together as a single composite team through collaborative efforts, offer and share ideas, and help each other during the development process.
·   Working in short, fast-paced development cycles, with focused objectives – Iterative development.
·  Shippable productivity at the end of iterative development cycles – Incremental development. The functionality keeps on “growing” through development cycles until the entire application, system, or product is developed.
·   Human communications and involvement takes precedence over management authority and delegation of work.
·   Total transparency and visibility of the team progress to project owners, stakeholders, and end users.
·    Feedback and suggestions help to self-correct and offer new ways and means to carry out quicker, more efficient, and reliable development.

An important feature of all Agile frameworks is that the frameworks are independent of the nature of project to be developed i.e. the framework is not dependent upon the platform or environment used to develop the particular software project. The architecture or design can vary, and could be anything. The important aspect is that an Agile framework has to be implemented in the project first, and its benefits availed subsequently. Please visit http://en.wikipedia.org/wiki/Agile_software_development.

Scrum, briefly, is a “light weight” Agile framework, used extensively for developing and delivering “workable” software products, very often, and on a consistent basis. The software products can range from the development of new web processes and systems, gaming solutions, plugins, mobile apps, ecommerce websites, corporate portals, development of WordPress themes, RAD (Rapid Application Development) projects, OOPs (Object Oriented Programming) projects, CAD/CAM drafting solutions, port programming and configuration utilities, web development and platform interfacing solutions, etc. Scrum adheres to all Agile principles and features discussed above since the framework is “inherited” from Agile itself.

Scrum offers a new, and a better way of managing software projects. There are many technical reasons why Scrum is popular and why many Fortune 500 companies prefer to use the framework for their project development purposes. While being introduced to Agile Scrum, a question that inadvertently comes to one’s mind is why is Scrum so popular? Why is there so much “hype” about Scrum? Does Scrum offer a magic formula, which can work wonders for your project and software development? Why should an organisation that has been following a particular development methodology, and feels comfortable doing so, should change over to Scrum? There is a separate article which deals entirely with why you should opt for Scrum. The point is, this article focus upon explaining Scrum to individuals who are new to the topic, and have absolutely no idea what the framework is all about, and what it can “do” for you. Efforts have been made to explain that Agile Scrum is applicable to almost any kind of software development, and possesses certain features which make the framework very popular as well as “powerful”.    


The actual Scrum process can prove to be difficult to understand, at first, for Scrum beginners. Even though Scrum implementation is not difficult, people need to understand and familiarize themselves about what is product increment, and how it actually occurs during the Scrum process. The second aspect is getting to know about Scrum events. The special meetings, known as “events” are important for monitoring the development activity, and analysing the reliability and effectiveness of the functionality developed by the team. They also help to solicit feedback from the team members as well as the project owners so that the business value of the project is not affected, and maintained at all times – even while the product is being developed. It is worthwhile to get an “overview” of the process first.  

Quickscrum- Scrum tool


1.    Project conception - An idea!
All projects, whether involving software development, or otherwise, start with an “idea”. Projects are developed out of needs. A project is planned to fulfil a particular requirement or achieve a certain objective. Moreover, each project results into “something” within a specific time frame – a project cannot extend indefinitely. It is important here to differentiate between a “project” and a “program”. Programs are generally long termed, and can even last for years, unlike projects which have a relatively short life span and last for a brief period, ranging from a couple of months to even a year.

Typically, a person, or a group of individuals realise it is worthwhile to put in efforts and resources, and develop “something” so that “another thing” can be easily fulfilled or availed. The “something” is the product, and the “another thing” is the solution that the project is supposed to provide. This stage of project development involves a lot of discussion and brain storming sessions, where the product is envisioned and “though over”.

Scrum does not figure during this stage. However, the vision seen by the project owners, can, or may, affect the manner in which Scrum is implemented in theproject, in the future. This is because the nature of product to be developed may require Scrum to be configured in a certain manner to obtain positive results from the project. 

2.    Project release – Getting started with the software project
Once the project is “thought about” the next logical step is to work out the nitty-gritty concerning the project dynamics – the objective of the project, the product definition, how the project should ideally deliver the product, in what manner, what should be the “strength” of the team, how many team members, etc.

Scrum development process does not come into the picture even during this stage. The documentation pertaining to the project is created and “everything” concerning the product to be developed is finalised – in black and white. Scrum does not advocate extensive documentation. You do not have to prepare detailed system flow diagrams and extensive design structures to get started with Scrum development. A basic idea will suffice, and you should only spend that much time and efforts which can get you “started” with the actual development activity. Just enough information and specifications to develop some of the most important product features.     

The project release is attended by the “Product Owner” – the person who functions as a project manager in the Scrum project, the Scrum Master who overseas that Scrum is properly implemented and followed by the team while the project is being developed, and the stakeholders or project owners who actually sponsor the project. 

3.    Creating the product backlog (Product Features List) – Defining the product features and functionality
The Scrum development process starts with the creation of a master list containing all features and functionality required to create the product in totality. In simple terms, the entire product, currently existing on paper as “imagined” by the stakeholders and project owners, is “broken down” into its constituent parts, consisting of individual features and functionality. The product is thoughtfully, and systematically, broken down such that each individual component can be individually developed, tested, and eventually integrated with other software components or functionality developed by the team over the days. Individually developed features and functionality can eventually “give birth” to a working product when integrated or assembled later on.

Each individual feature or list item is known as a “Product Backlog Item” or a “user story” in simple language. Therefore, the product backlog or the master list is fundamentally composed of product backlog items or user stories. The user story represents a product feature, and is individually developed by the team members during the development process – the daily sprints. Each story can be minutely defined. The description, acceptance criteria (Points which need to be “fulfilled” or satisfied before which the story can be considered as successfully developed), its importance in the project, and the manner in which it is supposed to be integrated into the final product, etc. are mentioned for each user story.

Once the feature list is created, it is arranged depending upon the importance of each user story in the product backlog. Important user stories are arranged in the “top” portion of the list, lesser important stories in the middle, and the least important features and functionality in the bottom portion.    

4.    Sprint planning meeting – Planning how to develop the product features
The product backlog functions as the main “backbone” of all development related activities in Scrum. Once it is “developed” by the product owner and the stakeholders, the actual development activity can start. A special meeting known as a “Sprint Planning” meeting is held to initiate the development activity. The meeting is attended by the entire development team, in addition to the product owner “PO” and the scrum master “SM”.

The meeting is held in two parts. In the first part, the product owner selects some of the most important user stories or product features from the top of the product backlog, and transfers them to a temporary list known as a “Sprint Backlog” for development purpose. During the meeting, the product owner takes the opportunity to explain each user story in details to the team members – how user stories should be ideally developed, and what activities the team should carry out so that each story can be marked as successfully completed.

During the second half of the meeting, the development team analyses the sprint backlog and distributes each story to individual team members. In practise, the team members unanimously decide as to who should take up which story depending upon their development skills and experience levels. Simple and easily developable items are given to less experienced or “fresher” while difficult, or more complex stories are taken up for development by more experienced and senior programmers or developers.         

5.    The daily sprints – Developing the product features
This is the main area of activity in Scrum. The entire product is developed in “bits” and “pieces” through the daily sprint cycles. A sprint cycle is nothing but a collection of working or “development” days during which the team members actually sit in front of a PC and develop the functionality or product features. The sprint cycle is time boxed and should not extend its deadline.

Each item included in the sprint backlog during the sprint planning meeting should be developed while the sprint is currently underway. A brief meeting known as a “Daily Scrum Meeting” is held for a maximum of 15 minutes each day before the team members start with their work. The purpose of the meeting is to get an idea regarding how much work has been completed by each member the day before, and what each member proposes to do “today”. If a team member is facing any issues or problems, it can be mentioned during the meeting, and the scrum master will ensure that the issue is quickly resolved.   

In Scrum, the daily sprints can typically last from 2 weeks up to a maximum of one month. The duration of the sprint is decided during the second stage - the project release - and it should not be extended under any circumstances - even if any of the user stories in the sprint backlog have not been developed, or whose development is incomplete.  

6.    Sprint review – Checking and verifying productivity (Is the development OK?)
Scrum emphasises upon the development of “shippable” functionality at the end of daily sprint cycle. Each user story developed during the daily sprint is checked by the product owner and verified for its reliability, acceptance levels, and whether it is “bug free”. In Scrum, it is very important to deliver error free features – each user story should be properly tested for any regression, and whether it satisfies the acceptance criteria linked with its development. 

Just after the daily sprint cycle ends, a meeting is immediately held to review the development carried out by the team. It is important to differentiate between the daily sprints and the sprint cycle. The daily sprint is the development activity carried out by the entire team on one particular working day. Many such “daily sprints” combine to form the “Daily Sprint Cycle”, also known as the “product incremental cycle” in Agile. The meeting is held at the end of the product incremental cycle – the daily sprint cycle. It is primarily attended by the product owner, the scrum master, and the team members. It is not mandatory for the stakeholders to attend this meeting. They can chose to attend it if they so desire.

The main objective of this event, or rather the meeting, is to check whether the features have been developed by the team as per the production plan, and if the functionality has any “manufacturing” defects. Each feature should be fully tested for any flaws by the team before presenting it in this meeting. The product owner verifies if the feature is error free and checks if it satisfies the acceptance criteria linked with it. It is a kind of “final” check carried out before presenting the development to the stakeholders and the project owners in the subsequent sprint retrospective meeting. During the meeting, the product owner instructs the team how it can improve its working and offer even better productivity by employing more efficient programming practices and standards.

7.    Sprint retrospective – Finalising product functionality and contemplating about further improvement
Agile Scrum advocates client participation. The client is a very important entity in Scrum, and has the final say as far as the development of product features is concerned. The Agile manifesto primarily stresses upon client participation and delivery of time bound product increments because these two aspects are very important for developing successful projects. A “satisfied” client often “comes back” to develop more projects since successful projects help the client to earn higher profit margins.

The retrospective provides an opportunity for the entire team to demonstrate its productivity in front of the stakeholders and clients. In addition to the product owner, scrum master, the development team, the meeting may also be attended by end users, technical staff personnel, vendors, distributors, and even other employees since the main purpose of the meeting is to avail feedback from individuals and entities closely linked with the market, and who have sound knowledge regarding what product features are likely to “score” in the market once the product is launched, and what can aid the product in “selling”.

The retrospective also offers a chance for the entire team as well as the client to reflect upon the development process, and discover what more could be done to make the product better. Discussions are carried out to ascertain the rate at which user stories are currently being developed by the team, and what new processes or methods need to be introduced to quicken the process.


Wednesday 23 April 2014

Seven Unique Ways To Breath In New Life In Your Sprint Retrospectives

Sprint retrospectives are an important part of scrum methodology. For Agile practitioners, retrospectives hold a special significance, and offer an insight into the self-learning capabilities supported by scrum.

The primary objectives of a sprint retrospective meeting are:
·       Display the user stories to the stakeholders, which have been developed by the team during the daily sprints  
·       Have the user stories accepted by the investors as “shippable”
·       Discuss and review the entire sprint, and analyze it to find how the sprinting process can be improved upon
·       Find what lessons can be learnt from the sprint, and how the team can benefit from prior findings and experiences
 
One of the issues faced by the scrum team is the team members end up discussing the same issues and problems in most of the retrospective meetings. The team feels it is discussing the same topics again-and-again, and therefore it is redundant to hold retrospectives. In all aspects, the retrospectives seem to be going “stale” and the team might be just holding it because scrum advocates it. The learning and self correction process stops in such cases, and the retrospective loses its importance and functionality.

So how can you pump in new life in the retrospectives? A few pointers may help you improve your meetings.

1. Rotating the leadership
Instead of the scrum master facilitating the meeting, invite the team members to temporarily assume the role of a scrum master and conduct the meeting. Each member takes turns and facilitates the meeting in his or her own particular way and manner. The members can be asked to experiment with newer adaptations and ways of holding the meeting.

2. Changing the questions
The two standard questions most commonly asked during the meeting are:
1.     What did we do well this time?
2.     What can be possibly improved upon in the next sprint?
Instead, try asking the question:
·       What actually happened during the sprints, and how did it occur?
Individuals tend to look at things from their own perspectives, and at times, they might fail to comprehend the true situation if they are forced to look at issues from a different point of view which they are not familiar with. Asking questions which they find easy to answer can go a long way in making the retrospective more interesting and useful.

3. Varying the process
Each scrum team has its own method of conducting the meeting. While some teams prefer group discussions during the retrospectives, a few of the teams follow the traditional pattern of having one member demonstrate his or her work to the stakeholders. Whichever process you follow, try to change it by including variations into the meeting pattern. A recommended method is to use histograms indicating member satisfaction levels. The survey can be conducted anonymously and the findings presented to the entire team. Suggestions can be availed from the team members as to what new aspects ought to be incorporated to make the meeting interesting. 

4. Thinking about unique perspectives
Individuals and people who are not directly connected with the scrum project, but are still attached to the project somehow can be invited to attend the meeting. Vendors and system deployment personnel have different insights to offer since they are directly connected with the market and have a “working knowledge” about consumer psychology and requirements. Their participation can help the scrum team to avail a broader perspective regarding how the development of user stories should be ideally carried out.

5. Changing the focus
Every team has a certain focal point, which it concentrates upon while developing the project. Switching the focus can also prompt the team to come up with new ideas about how the scrum process can be improved upon. If the team is concentrating too much upon the engineering practices, the focus could be changed to collaborative working and solving technical issues by sharing out the problems.Read more on http://blog.quickscrum.com/post/2014/04/09/Seven-Unique-Ways-To-Breath-In-New-Life-In-Your-Sprint-Retrospectives.aspx


         "Please visit http://www.quickscrum.com to Free download the Quickscrum tool"