Thursday, 20 March 2014

Business Analyst Vs Agile Business Analyst - Role of a BA in agile environment

How the role of the BA would change in an agile environment?

Transition form a Waterfall methodology to an Agile methodology often have difficulty in clearly defining roles and responsibilities of the team members. This is especially true for the role of BA, as agile teams include a business owner who plays a more involved role than in a Waterfall process. 
The role of a BA is extremely important in organizing the business needs and creating the roadmap for the team. They must closely work with business owner and at times they must take the role of product owner.
Business Analysts serve a critical role in understanding the problem domain and dive in deep to the root cause of the problem or business need.
 Business Analysts must adapt the agile process and understand not just the template of the artifacts that needs to be produced (Epics and User Stories) but the real spirit of the agile methodology. This will help the team dynamics and will help avoid user stories written like functional requirements.
The following table tries to compare how the role of Business Analyst changes in an agile environment.
BA
Agile BA
Requirements are documented in Use Cases, Business Requirements, Functional requirements, UI Specifications, Business Rules.
Requirements are documented in Epics, User Stories and optionally Business (or Essential) Use cases.
Focuses on completeness of requirement and spends time in ensuring the requirement is unambiguous and has all the details.
Focuses on understanding the problem and being the domain expert so that s/he can answer questions from the development team swiftly and decisively.
Focuses on getting a ‘sign off’ on the requirements.
Focuses on ensuring the requirements meet the current business needs, even if it requires updating them.
Often there is a wall between the BA/Business and the Development team.
Agile BA/Product Owner is part of the team.
Tends to dictate solutions.
Has to remain in the problem domain, leaving the development team ‘space’ to explore different solutions.
Long turnaround.
Quick turnaround.
Focus on what the requirements document said. In other words, output (Artifact) is a well written thorough requirements document.
Focus on the functionality of the developed software. In other words, output (Artifact) is the software that meets the business needs.

Needs the ability to look at the big picture (with fewer details) but also needs the ability to break the big picture into smaller pieces, so that the development team can execute on it in two to three week intervals.
Focus on being very specific in the requirements (construed as inflexible)
Leave room for negotiation (and be flexible) as long as the problem is solved.


Tuesday, 18 March 2014

Geese Vs Team Work

Teamwork Stand by each other

 
When you see geese flying along in "V" formation, you might consider what science has discovered as to why they fly that way. As each bird flaps its wings, it creates an uplift for the bird immediately following.
By flying in "V" formation, the whole flock adds at least 71 percent greater flying range than if each bird flew on its own.
People who share a common direction and sense of community can get where they are going more quickly and easily because they are traveling on the thrust of one another.

When a goose falls out of formation, it suddenly feels the drag and resistance of trying to go it alone — and quickly gets back into formation to take advantage of the lifting power of the bird in front.
If we have as much sense as a goose, we will stay in formation with those people who are headed the same way we are.

When the head goose gets tired, it rotates back in the wing and another goose flies point. 
It is sensible to take turns doing demanding jobs, whether with people or with geese flying south. Geese honk from behind to encourage those up front to keep up their speed.

What messages do we give when we honk from behind? Finally — and this is important — when a goose gets sick or is wounded by gunshot, and falls out of formation, two other geese fall out with that goose and follow it down to lend help and protection. They stay with the fallen goose until it is able to fly or until it dies, and only then do they launch out on their own, or with another formation to catch up with their group. 
If we have the sense of a goose, we will stand by each other like that.


Sunday, 9 March 2014


Why agile is struggling in India - Complete Article


There are too many failures in agile development in India. It is way too far to measure the failures.

Though some projects looks “complete” there are some “but” expressions can be identified.

· What was built was not the customer wanted

· The quality of product what we built was poor

· They took far too long to build

Here is the big question. How can one approach work magic for one group and fail miserable for others?

I tried to probe deep into this issue.

Fake Agile:

In most of the projects, the outfit looks like an agile but the person inside the outfit is really not. Agile has its fair share of skeptics and detractors. These are people who have a much different Agile experience – one characterized by chaotic processes, lower quality, miscommunication and numerous other problems. As you might expect, these people tend to have extremely strong opinions on what they consider to be the shortcomings of Agile.

Here is the example from the software testing blog:

“This system is bloated with meetings, excel spreadsheets and anemic of any real documentation. Agile and the people who support it are full of themselves and their aversion to documentation is detrimental to real active communication. The disinterest to documentation presumes humans will retain meeting to meeting barrage of verbalized ideas. Agile is full of egotistical self congratulating ideologies over used buzz words like “flexible” and “living”. People can’t remember what they said from one over stated meeting to another.”

Old habits die hard:

Based on my observation, agile seems to “fail” whenever it is forced on a team or organization that is accustomed other methods. In India, the transition from conventional method to agile is not smooth. Many people assume that agile is faster, better, and cheaper, actual results vary greatly. Many organizations are diving into the Agile movement without a clear understanding of what it is, and what the consequences of adoption may be. There was a survey conducted with 200 participants. 64 % participants said that Agile development was harder than it was initially seemed. 40% of participants found no obvious benefit to the practice.

The process of “going Agile” must be clearly explained and outlined (more on this shortly), otherwise your development practices will change, but in name only.

Many projects are attracted towards the idea of frequent delivery. It is basically a waterfall behaviour hiding behind the new suite ‘Agile”

It is not enough to change the jargon but is really required to change our way to collaborate.

The deep down objection to agile in India is, it challenges our hidden assumptions which we cherished as “best practice”. A developer may cherish his best practice by delivering stable & testable code to QA on time. So from his perspective, it is tester’s job to efficiently find all the bugs which is considered best practice by a tester.

But agile development is challenging these “best practice” assumption. On agile teams, we prevent those bugs by specifying the feature as a team using testable examples, and then we build those behaviours in small slices. Now the developer must break the best practice what they conserved for years together. When he/she fails, agile development fails miserably.

Mind set and culture:

An another reason why agile is struggling in India is because of unrealistic expectation. What we believe commonly is that agile is a process, a set of practices & tools. But in fact, it is really more of a mind-set and culture

Process is depends on the company, the product & the personnel. So it is expected that when it misapplied, it will fail whereas mind set & culture can transcend those factors.

Would we take a same approach to develop a web page & a complex scientific application? Certainly not. Would we take a same approach in a team of 6 members that we would with team of 60 or 600?, Likely not. Different situations obviously call for different approaches.

It is easy to see that we need to take different approach developing a web page as compared to developing a complex scientific application. We must recognize that there is a difference & must follow 2 different approaches. A very simple process is sufficient to develop a web page whereas more complex & rigorous methods could be appropriate for scientific application.

· A team new to iterative development commits to finishing 5 stories in 2 weeks. At the end of the 2 weeks only 3 are done. But instead of confronting the failure and learning from their mistake they congratulate themselves on completing 3 and then have the next 2 automatically go into the next iteration. Or perhaps they decide to add a week to the sprint to claim success because failure is too painful and unsafe to accept and confront. The opportunity to learn from their failure is lost and one of the main feedback loops in iterative development is disabled.

· A team in a meeting are sharing what they are working on, and one developer shares a block that it has been difficult. Another one scoffs at this and says “I can’t believe you’re stuck on that; it would have taken me five minutes.” That team member and many others now are emotionally unsafe and will hesitate to share in the future and cover up their difficulties and failures. Little learning and innovation can happen on this team.

Developers on a team are working on multiple tasks and doing their best to reduce work in progress by working on one thing at a time. Their manager is in a hurry and keeps asking them for status on different tasks. If it were safe, they would have a conversation with their manager describing their situation and continue on their path. If they were not, which is often the case, they will drop what they are doing and work on whatever the manger is focused on now. The inability of the manager to experience a perceived failure in lack of progress on multiple issues has led him to pressure his team. And their lack of safety with their manager has kept them from performing the most effective actions for the team.

A team fails to improve the quality of their software in an iteration and many defects escape. In the retrospective, many on the team are blaming each other or justifying that they can’t do the right thing because it would take too long. Their lack of personal safety in admitting failure of a task is keeping them from examining the failure together and learning from it.

So to crystallize,

· Teams new to agile methods need to be safe enough to be able to learn from failure.

· Agile methods throw failure in our face at every single turn giving us the potential for accelerated learning.

· That failure itself makes us feel unsafe and inhibits our ability to learn from our failure.

· Agile doesn’t come with built-in safety mechanisms.

· And if we want better results we need to find ways of creating safety as a platform for agile adoptions.

If we expect agile to perform, miracles, or instantly transform our software development process, then we might likely to see the major failure

Department Fragmentation:

Team is more powerful part & most essential part to have successful agile development. It is completely wrong to say that “We have an agile test team”. If all they do is test, then it is really not agile. The team factor is fragmented here.

What if the agile principles are followed by team of all but not by QA? What if the testing team member wants to participate in early development process & what if the technical team resist?

Agile teams frequently deliver high quality software, and that includes testing. An agile ‘feature team’ needs all the skills it takes to deliver software, and that includes programming, analysis, and testing skills, regardless of who performs these tasks

Mature agile teams know there isn’t a sharp line between ‘my job’ and ‘your job.’ There are just tasks we need to complete, and everyone brings different skills to the table, so that we can complete them as a whole team.”

As mentioned previously, Agile is not a playbook. It’s not a set of directions. It’s not a checklist. It’s a mindset and a culture – and it needs buy-in across an entire organization in order to succeed.

Not Iterating:

Iteration is the key value that the agile development brings to the software development. What we think of iteration, we break the project into 2 weeks of sprints or iteration. It can facilitate the iterative development but we are not actually iterating.

The key of iterating is developing a product a little bit at time. It would be accurate to describe the process of iterating on a product as evolution of a product. It is universal fact that things change gradually over a time. Those small changes add up to a result in a big change.

How drastic it would be if the evolution worked the way most agile software built? Imagine, if you will, a fish that swims in the ocean and has some little fish babies that are born with fully functional legs. Then, those legged fish babies grow up and have fish babies that have wings. The additional features would not do any good to them nor would they be designed properly, because instead of adapting and changing over time, they just suddenly appeared.

Features should not be built in a single sprint or iteration. It is as silly as legs showing up on a fish in a single generation.

Instead, features should be evolved and grow over time. A feature shouldn’t be pushed into a single sprint or iteration and then be done. A feature should start out small and develop and evolve over time as feedback is received and customers or the product owner tries it out.

Far too many times, I see Agile development projects mistake having iterations with actually iterating the development of the product.

Don’t try to ship a completed feature at once, let it evolve over time.

Fat logs:

It is very important to breaking things down into small, easily digestible pieces.

The main reason why this is so important is because it prevents procrastination. Procrastination usually occurs when either we dread some large task that will be difficult or we don’t know what to do next.

If we can break a big project up into small parts, it will seem easier to accomplish and will have clear steps of progression.

In some software projects where the person creating the backlogs or work items is not considering the work enough before giving it to the team.

Fat logs are backlogs that are not broken down small enough and often are very vague in what needs to be accomplished.

Fat logs are notoriously difficult to estimate and waste time when trying to explain and understand them. It is critical that fat logs be broken down into smaller actionable backlogs before being given to an Agile development team or a large amount of time will be wasted.

Not letting the team to be a team:

There are many dynamics that affect how teams act and interact. There are many ways to foster a healthy team and many ways to create unhealthy teams.

A healthy motivated team has synergy; a unhealthy gaunt team can be less effective than all of its members are on their own.

The key to having a healthy motivated team is letting them be mostly autonomous. Regardless of your political persuasion, you would probably agree that when a country invades another country and sets up an unelected government to oversee the people, there are going to be problems.

The same thing happens in agile development.

It does not mean that they shouldn’t have accountability. But if you want to run a software project in an agile way, you have to let teams self organize and self manage to some degree.

When big brother is always watching and interfering, team dynamics become very different. Naturally, teams usually develop their own cadence, leadership and roles which is called norms. However, when outside forces directly interfere with how the team does things, and they don’t have the power to decide their own fate, team members begin to realize that they need to look out for themselves.

Conclusion:

The struggle of agile in India can be changed if we are ready to accept the transition; if we are ready to be really agile by changing our mind set and culture; if we are ready to acknowledge and learn from agile failures; if we are ready to increase the synergy by working as a true agile team!

Abstract:

There are too many failures in agile development in India. It is way too far to measure the failures. Though some projects looks “complete” there are some “but” expressions can be identified. Here is the big question. How can one approach work magic for one group and fail miserable for others? I tried to probe deep into the struggle and identified that we are not really agile. I coined the term fake agile. We are hidden waterfall in a new jargon “Agile”. We are attracted towards the jargons “Frequent delivery” without understanding what is real agile. We expect agile to perform magics. When we consider agile as a process or set of directions then it is obvious that it will fail when misapplied. The true agile is really a mind set and culture of people. This factor will transcend the other factors such as the company, the product and the personnel. It is more interesting that agile is actually challenging what we cherished as our “Best Practice” for years together. Agile throws failures right on our face. We are not really to learn from past agile failures. Another major factor which causes major struggle in agile development is that we are not really iterating. What we assume iteration is breaking down project into 2 weeks of sprints or iterations. But we forgot that agile is gradual and incremental as evolution. We actually create fat logs. Fat logs are backlogs that are not broken down small enough and often are very vague in what needs to be accomplished. We are trying to ship a completed feature at once. The team is the vital force in agile. When someone says “We have agile test team”, the fundamental of agile synergy is fragmented. What if all team members follows agile principle but not the QA? What is the QA wanted to be a part of early development process but the technical people resist? The struggle of agile in India can be changed if we are ready to accept the transition; if we are ready to be really agile by changing our mind set and culture; if we are ready to acknowledge and learn from agile failures; if we are ready to increase the synergy by working as a true agile team!



Why agile is struggling in India? - A comprehensive thought.



Why agile is struggling in India? 

Abstract:
There are too many failures in agile development in India. It is way too far to measure the failures. Though some projects looks “complete” there are some “but” expressions can be identified. Here is the big question. How can one approach work magic for one group and fail miserable for others? I tried to probe deep into the struggle and identified that we are not really agile. I coined the term fake agile. We are hidden waterfall in a new jargon “Agile”. We are attracted towards the jargons “Frequent delivery” without understanding what is real agile. We expect agile to perform magics. When we consider agile as a process or set of directions then it is obvious that it will fail when misapplied. The true agile is really a mind set and culture of people. This factor will transcend the other factors such as the company, the product and the personnel. It is more interesting that agile is actually challenging what we cherished as our “Best Practice” for years together. Agile throws failures right on our face. We are not really to learn from past agile failures. Another major factor which causes major struggle in agile development is that we are not really iterating. What we assume iteration is breaking down project into 2 weeks of sprints or iterations. But we forgot that agile is gradual and incremental as evolution. We actually create fat logs. Fat logs are backlogs that are not broken down small enough and often are very vague in what needs to be accomplished. We are trying to ship a completed feature at once. The team is the vital force in agile. When someone says “We have agile test team”, the fundamental of agile synergy is fragmented. What if all team members follows agile principle but not the QA? What is the QA wanted to be a part of early development process but the technical people resist? The struggle of agile in India can be changed if we are ready to accept the transition; if we are ready to be really agile by changing our mind set and culture; if we are ready to acknowledge and learn from agile failures; if we are ready to increase the synergy by working as a true agile team!

Complete article will be posted soon....