Agile Development Environment

Agile software development is an evolutionary, highly collaborative, disciplined, quality-focused approach to software development and delivery, whereby poten­tially shippable working software is produced at regular intervals for review and deployment. Canonical definition of agile is provided in terms of agile manifesto and principles (http://agilemanifesto.org/). Agile development environment is created with the help of several practices derived from agile manifesto and principles and building a culture. Let’s have an overview about this environment in coming text.

Iterative and incremental development

Agile development environment is primarily created by iterative and incremental approach of development. It helps to get the continuous feedback from the customer and other stakeholders. To understand the meaning of the Iterative and incremental let’s go through three different approaches for making of paining of Mona Lisa.

Image

In first approach, complete work is divided into several pieces and then each piece developed one by one. This is called Incremental development approach. In the second approach, first an outline of image is created on the basis of initial understanding of what to be done and then several refinements done in various steps, this is called Iterative development. Final approach, as you can see, is the combination of both these. Here first an outline of complete work defined, then it was broken into several pieces and in each step these pieces developed with several refinements. In software development, each piece defined here is similar to an iteration which consists of certain features which are developed first time and some features in which we have to incorporate some enhancements. This approach of development facilitate end customer to have early deliveries which help him to provide valuable feedback in advance, so that at the end he get the product which he really needed. This also helps the customer to launch the product in market at early stage and earn the profit at early stage while development of the complete product is still ongoing. In today’s competitive and dynamic environment this is real need of customer. In such kind of development approach, prioritization of features plays an important role. Development is carried out in such a manner that ‘Minimum Marketable Features’ are provided to the customer at early stages. This also helps the complete team and customer to work on ‘Fail, Fail early’ concept. Team targets to work on ‘High Value Low Risk’ features first and keep low value high risk feature for later part of development so it helps customer to end the product development at early stage if he thinks that reaming features are not of use and hence getting the product with less cost. One of the main advantage to the project team from this iterative and incremental is that focus on the quality remains throughout the project, as in every iteration, team analyze, develop, test and demonstrate working software.

Short feedback loop

 

Image

Agile team recognizes the fact that change becomes costly, if it comes at later stage. In the above figure (as per analysis of feedback cycle of various development techniques by Scott Ambler), feedback mentioned in green color are coming as per agile practices while feedback mentioned in red color are as per traditional practices. Red color feedbacks are coming at later stage so are more costly to incorporate. To support rapid feedback in order to detect and correct errors as quickly as possible agile development environment uses certain technical practices as mentioned below:

Continuous Integration:

Create daily build of the code and run all the unit tests and system test to maintain code quality on the daily basis.

Test Driven Development:

Write a “single” unit test describing an aspect of the program. Run the test, which should fail because the program lacks that feature. Write “just enough” code, the simplest possible, to make the test pass.

Automation Testing:

Automate all the functional tests and user acceptance test to reduce the qualification time. Also these tests can be run on daily basis with the help of continuous integration.

Efficient and Effective Communication:

Image

Efficient communication is one of the most important points to maintain the agility. An agile development environment can be distinctly categorized by the way of communication medium it uses. Efficient and effective communication achieved by:

Informative workspace:

Keep all the important information of the project visible with the help of big visible charts, Task/Kanban boards.

Daily Stand up:

Team meets for 15 minutes on daily basis to share progress of their work with all team members:

  • What I did yesterday?
  • What will I do today?
  • Any bottlenecks?

Delivery approach:

Delivery mindset is an important aspect of agile development environment. To make this achievable and making each delivery valuable agile team follows certain practices:

Timboxing:

A timebox is an amount of time taken before starting the work. Rather than allow work to continue until the goal is reached, timebox approaches consist of stopping work when time has consumed and evaluating what was accomplished. Timebox approach is reflected in all agile practices (where it can be applicable). Example includes Daily Stand up meeting for 15 minutes, Timebox iterations, timebox analysis of complex features (called spike in agile terminology)

Definition of Done:

Define simple points which can ensure completion of any task/feature. This is to ensure common definition of completion of any task/feature between all team members.

Continuous Improvement

As said by Kent Beck, “’Perfect’ is a verb, not an adjective”. Agile team recognizes this fact and continuously works for improvements. At the end of every iteration, agile team gathers for a retrospective session to discuss – What went well, what didn’t go so well, learning and improvement areas for next iteration. This helps agile team to be better day by day and create a continuous learning environment.

Servant Leadership

In an agile development environment project manager works differently. He works as servant leader. He is a “un-blocker” rather than a “status taker.” He works for the self-organizing team, doing whatever it takes to help them succeed. He works as a coach, mentor, and a guide. He pushes the team to do their best work, not in the traditional way of command and control. He serves as an “amplifier” to the team, by “plugging in” and boosting team’s performance. As a result, the team gets better, stronger, and faster over time. He does not sit behind a desk only, working Microsoft project plans and asking for status against those plans. He knows the status implicitly by virtue of the agile ceremonies he attends and facilitates himself.

How to Create an Agile Development environment

Creating agile environment is not just only following certain practices. It is much more than that. Agile is an idea supported by a set of values and beliefs. It is about fundamental shift in thinking. We are ‘doing agile ‘when we follow practices and we are ‘being agile’ when we act with an agile mindset. Agile is not a process – it defines a culture. A culture which doesn’t resist change rather welcomes change. We need to develop a culture of collaboration and cultivation. As per Schneider Culture Model, Collaboration is about working together and Cultivation is about learning and growing with a sense of purpose.

As discussion is about environment, so before ending, let me share an interesting post on TED – “Agile programming — for your family” by ‘Bruce Feiler’. Inspired by agile software programming, Feiler introduces agile environment and practices in family which encourage flexibility, bottom-up idea flow, constant feedback and accountability. You can go through same on http://www.ted.com/talks/bruce_feiler_agile_programming_for_your_family and enjoy this interesting talk J

Advertisements

Why team members need to understand Agile?

Image

Few days back I was doing basic knowledge sharing on Agile to a group of team members. Many team members of the group were using the agile practices from quite a long time. They were very excited to know about principles and practices while I was not able to see that much excitement on few team members. After my sessions I was thinking on this topic and also discussing with people about their feelings and expectations. I could analyze few things:

–          People who were already done or doing projects on agile methodologies were very excited and keen to learn as they have seen the practices and were able to relate

–          For some people who were not much aware about the concept were having the opinion that concept are looks good in theory but not sure about the results in real time environment

During analysis of various discussions with team members, I was thinking that some team members may have thought that why understanding of agile concepts required for a developer and tester. A normal thinking process of a developer or tester is

–          It is just another project management approach, why do we need to bother about the same. Our core task is writing code or test the software.

–          I would rather like to invest my time in learning new core concept which will help me in my routine work

–          It is the responsibility of project manager to take care whether project is going right or not.

Here are some thoughts on this question. Let’s think why we are there in an organization? We are there to write code, test cases, test scripts, manage projects, and manage teams. But is it really correct? My answer would be partially correct. Why partially? Let me explain this with the analogy of sports. In any team of sports, responsibilities of individuals are defined but when they are in the field they are there to win the match not to just perform their roles. It is correct that to win the match we have to perform our roles but we need to adopt environmental conditions. As per the situation, player has to formulate various tactics and follow them. For example, in an ODI match of cricket, if a batsman comes at second down in 5th over and team is chasing a target of 350 then he has to play differently. While in the same match, if the batsman is coming at second down in 40th over then has to play differently. That batsman role is to do batting and score as many run as possible with good strike rate but approach of batting will change as per the situation. Sometimes, scoring just 30 odd runs is much useful than scoring 100 as it helps in winning the match and are scored in a pressure situation.

We also need to understand that agile is just not another project management approach. It’s an approach where collaboration (working as one team) is core focus area. So all the team members have to understand the rules of the game and play their role accordingly. Team work can be best related with the sports. Even, name of one of the agile methodology (Scrum) comes from a sport. That’s why I also took the example from a sport to relate the need of understanding agile.

One more important point to understand is that when we are talking about need of understanding agile to all team members is – difference between adoption and transformation. Oops… it seems that I touch a big topic. Ok to keep it short here. Adoption only changes what you do while transformation changes what you are. Transformation implies change from one way of being to another way of being – Like a caterpillar changing to a butterfly. Transformation represents a fundamental shift in behaviors. It involves change in mindset and culture. To change the culture and mindset we need to change our thinking process. Agile manifesto and principles talks about are mindset and culture. This is the reason originators of agile just not create some practices and process. They created manifesto and principles which talks about mindset and culture. To understand and apply agile practices in better way we need to first understand manifesto and principles. In short we need not to just adopt but to transform.

An effective way to create an impact on a team member could be to first start adopt some small practices e.g. Daily Stand up, retrospectives, short iterations. This will help the team to identify benefits of agile practices. After this, team will be able to relate manifesto and principles in much better way. By this way, we are also demonstrating agile not only talking about it. So this approach is also closure to agile manifest point – ‘Working Software over comprehensive documentation’.

So let’s continue understanding the principles and transform ourselves accordingly to utilize our potential in more useful way.

Vision, Strategy and Tactics

Image

Vision, Strategy and Tactics – these terms are related but distinct.  In general, these terms are used in relation with Project planning, organizational planning or entrepreneurship. But these terms are also applicable achieving any targets in life whether it is professional or personal.

Let’s understand need of these terms.  To understand, let’s think how we achieved any goal or target in our life. Let’s consider any thing which we think as achievement or target whether it’s very small or big. It could be personal or professional. It could be completion of any assigned task, leading any project, coordinating any event, throwing any party, doing some social work, purchasing our own house, going for a long trip. To complete any of these works, we must have thought about – Why to do, what we want to do and How to do?  These questions are nothing but Vision, Strategy and Tactics. For normal work also – we search answer of these questions, but we don’t consider these in terms of bigger words like Vision, Strategy and Tactics. Sometime our targets may achieve without consideration of any of these questions. But in this case, there is always a big risk associated for completion. This risk may cause – delay in completion, not completion as per defined objective or in the worst case completely collapse i.e. missing objective completely which may cause de-motivation to pursue any further targets or origin of perception that taken target was complex and required much efforts to complete. In more precise words, without a strategy and vision to guide our steps, we are on the risk of taking two steps forward, three back, four to the left and two in a circle. Effort is made, but it doesn’t ends up into desired progress.

It is also required to understand these elements to enable us for effective decision making and maintain balance between these three.

Let’s be more specific about these terms in following part.

Vision

 Vision is our dream of the future. It is about to make a choice in the life. It outlines what we want to be. Some examples of organizational Vision Statements are:

–   Google: To organize the world‘s information and make it universally accessible and useful.

–   Amazon: To be earth’s most customer centric company; to build a place where people can come to find and discover anything they might want to buy online.

–   Sony: To have the world look to Sony for comprehensive entertainment

–   Samsung: To lead the digital convergence movement

–   BMW: To be the first successful premium manufacturer in the industry

These statements may sound abstract but let’s think why these are so. The vision for a company must be robust for years at a time. Technologies and trends come and go but a company must stay relevant regardless. For example, Goggle doesn’t mention search and Amazon doesn’t mention books. This is long term thinking and one can’t base his/her company around current technologies or trends. It’s about what we are doing for our customers. Vision is needed to keep us motivated on whatever we are doing and also to provide right direction. Whenever, we are in the difficult situation and decision making is not easy, it is Vision, which guides to move into the right direction and taking right decision.

Strategy

Strategy is defined as our long-range plan to make the dream happen. It executes our ideas. It is adoptions of our courses of action and the allocation of resources necessary for carrying out long-term goals and objectives. Means the answer of question – How will we do it? Strategic work requires thought and discussion.

To achieve a vision there can be multiple strategies. For example to fulfill organizational vision strategies may include – business level strategies, people management strategies etc.

Multiple strategies to build a successful team could be – Defining targets and monitor them, Team Performance Management, Continuous Improvement, and Innovation approaches etc.

In project management – defining release plan is one of the strategic tasks. Here we define the boundary of the release which is a strategic decision.

Strategic work is difficult. It requires thought and discussion. Most important part it shall be in alignment with the vision.

Tactics

Tactics are defined as the specific actions required to take to achieve our strategy. Tactics are the most flexible. If a tactic isn’t working, it can be adjusted and try again. It is often recommended to start with a vision and startegy then work down to the tactics. Tactical work mostly demands quick answer. It is very difficult to distinguish Tactics from Strategy. Most common way to explain the differences between strategy and tactics is a war analogy: a tactic is designed to win a battle and the strategy is designed to win the war.

Planning weekly meeting for collaborative improvement is a strategic task while conducting the meeting and generating useful idea is tactic. In the same way doing daily stand up meeting of the project is a strategic work while to finish it in 15 minutes only and conduct it in fruitful way is a tactical task. Doing planning is strategic but execution of the same on daily basis is tactical which includes action to handle cost and schedule variance, handling risk and uncertainties etc.

If the strategy is a hammer, the tactic is a nail.  The actual end results are accomplished by the nail.  If the nail isn’t hammered correctly then the battle is lost.  Sometimes the hammer also misses the nail.

 While strategy and tactics can and should change over time, vision is the anchor that holds the strategies and tactics together. As Tactics focus on short terms results so it must be efficient. While for Startegy, effectiveness is must.

 As Effectiveness and Efficienency are major trailts of startegy and tactics. So I would like to explain impact of  (Non)Effective and (Non)Efficient startegies and tactics in following figure:

Image

THRIVE – Highly Effective & Highly Efficient

Can meet strategic targets earlier than anticipated.

SURVIVE – Highly Effective and Inefficient

Never attain the growth that they should be capable of.

DIE SLOWLY – Ineffective & Inefficient

Delivers poor result for several times and are in a state of steady decline before dying.

DIE QUICKLY – Ineffective & Highly Efficient

Everything going very well, but due to some wrong strategies there comes a state of rapid decline.

To achieve the situation of thrive we need to have effective strategies and efficient tactics. Means to have the right direction and the right actions to bridge the gap where we are now and where we want to be.

Visual Management

If we have to remember something then what is the best trick? One obvious trick, used by most of us is to mark it as ‘To Do’ and keep it visible in front of us. This can be very easily done by write it down on a sticky note and paste it in the most visible area. The most common area to mark an official ‘to do’ is white board of our workstation, in fact, some person find it useful to paste such a note with their important ‘To – dos’ on their laptop. For personal work also, some find it useful to paste important reminders on the refrigerator door or on some other visible place of home.

Idea behind this simple trick is to keep important information visible, so that proper attention can be provided to it. When any information is in front of us then it continuously remind us about its completion and removing any bottlenecks to complete the same. In more precise words, it is a push mechanism which is hard to ignore.

Same scientific and creative measure can be applied in Project Management also. Here it is called Visual Management. To define it in more formal way – Visual management is the process of displaying critical information so that every project team member remains aware about the same. Even those who are unfamiliar with the details can rapidly see what is going on, understand it and see what is under control and what isn’t. In a nutshell, the current status of the project can be assessed, at a glance.

The value of visual management has been recognized by ‘Toyota’ long time ago. Toyota developed a system named Kanban (in English signboard) for lean and just-in-time production. Kanban is a method which uses standard units or lot sizes with a single card attached to each. A new card is “pulled” into the system only when the work represented by an “in progress” card is completed. They also attempt to minimize work in progress by limiting the number of cards which can be in given step of the process as well as how many cards each team member can work on at a given time.

Concept of this system used in Lean and Agile Software development methodologies for visual management.  In Agile methodology, visual management is popular with name “Information Radiator”. “Information Radiator” is a popular term invented by Alistair Cockburn that is used to describe any artifact that conveys project information and is publicly displayed in the workspace or surroundings. Information radiators are very popular in the Agile world, and they are an essential component of visual management. Information Radiators display information which they care about without having to ask anyone a question. This means more communication with fewer interruptions.

The essence of information radiator or visual management is ‘Information’. So let’s go through information which is useful as Information Radiator.

Most Popular Information Radiators

 Let’s discuss some popular information radiators. Here, I am not describing details of these artifacts (in terms of what, why and how) as objective of this blog is Visual Management. So provided details are in scope of visual management only.

  • Task Board or Kanban Board

Kanban can be used to organize many areas of life. There are many possible Kanban board design. Task Board or Kanban board is often large boards with various columns displaying status of the various features. The Simplest Kanban or Task board contains three columns “To-Do”, “In Progress”, “Done”. Following is one example:

Image

We can add more columns in above task board as per our needs. For example:

Image

  • Big Visible Charts

Charts like – Burn Down (Remaining estimate of the project over a period of time) and Burn Up (Consumed efforts of the iteration) are useful artifacts for visual management. As these charts represent health of the project and easy to understand. To avoid the overhead of daily update, we can update these charts on weekly basis.

Image

Image

  • Product Roadmap

High level strategic plan which provides a long term outlook of the product.

Image

  • Impediment List:

Open Points and Action items which are identified in daily stand up meeting. This can also be visible on whiteboard using sticky notes.

 

Other Useful Information Radiators

  • Unit Test Case Coverage

Percentage of Unit Test Coverage of the Code

  • Bug Status (Test Case Execution)

Total number of Bugs with their Status (Open, Close, Accepted) and Priorities (Blocker, Critical, Major, Minor).

  • Retrospective Outcomes

What went well in last iteration, Points to improve

  • Product Backlog

Features along with priority

  • Team Planned Leave Details

Team leaves in calendar format

These are some commonly used Information Radiators. But it is not mandatory to use all of these in project. Way of displaying any information can also be change as per need. Most important point to consider is ‘simplicity’ of presenting this information. If it is not easy to understand, people will not attract and not be able to appreciate its importance. To make simplicity it is advisable to use simple tools (e.g. Colorful stick notes, Markers, White Board, etc.) to convey such information. Another most important thing, don’t make data visible just because it is available. Team won’t be bothered about maintaining information if it is not used. Team is also free to choose any other information which is useful to make visible.

A Good Visual Management System

  • is large and easily visible
  • Changes periodically, so that it is worth visiting
  • is understood at a glance
  • easily kept up to date

Visual Management System can

  • Help a team to self-organize
  • Assist with organization and planning
  • Instantly understand impediments (things causing delay) and take steps to remove them
  • Inspire team collaboration
  • Control/highlight WIP (Work in Progress)

At the End

Visual Management is one of the key components for Lean – Agile Software development. An informative workspace broadcasts information into the workplace. When people take a break, they will sometimes wander over and stare at the information surrounding them. Sometimes, that brief zone out will result in aha moment of discovery.  One of the major advantages is to increase team collaboration. But it is also true that it can’t be maintained successfully without team support. As this approach is not a conventional approach, so there is a possibility of resistance for its adoption. To overcome this point, initiator of this approach shall start with simple steps not to start too many things all of sudden. We shall start to make visible what we know and useful for all. Also, we shall refer these radiators in our routine project discussions such as Daily Stand up meetings. It would be nice to do the daily stand up in front of this informative workspace, where one can refer this information in discussion.