23
Dec
Posted by ShriKant Vashishtha in Agile, BDD, Distributed Agile. No Comments
Question: How do you think we can handle Agile approach with a worldwide distributed team (Latin America, US, France, UK, Germany & Hungary) ?
I can have developers at one location, but not Product Owner nor QA team. Any experience to share ?
Answer: Try using ATDD where QA creates the acceptance tests at the beginning of Sprint. ATDD which is based on FitNesse or BDD. QA/BA along with Product Owner writes the test cases and developers have to implement their code in order to satisfy the acceptance criteria. This QA sits along with product owner. Apart from that have regular testers also on each distributed location.
Use Skype group video or Google+ hangout for distributed meetings. Use sync.in to write stuff simultaneously from distributed sides within the meeting.
Have collocation between the distributed teams which are going to collaborate together. That is required to have a good personal bonding. As you said, you can have developers can be at one single location - that's a good idea. Otherwise multiple distributed teams and then multiple time-zones are very difficult to handle.
Have local as well as distributed standup. Make sure that the entire team is working on shared user-story, shared code-base and people use distributed pair programming.
23
Oct
Posted by ShriKant Vashishtha in Agile, Agile Adoption, People Management, Project Management, Scrum, TDD, Traditional IT, XP. 15 Comments
It's pretty usual to see people from Agile world keep on bashing the Waterfall methodology because of its inherent problems. To be honest, a big majority of the organizations still work in Waterfall mode. So sometimes I used to think, why can't people in Waterfall world do improvement in the way they do things. Though organizations are switching to Agile, you can't deny that people have delivered a lot of successful projects in Waterfall too.
In this blog, I am not into bashing mode but would like to ensure that people in Waterfall world benefit with some of Agile practices without changing the inherent nature of methodology.
Read more »
21
Oct
Posted by ShriKant Vashishtha in Agile, Patterns, People Management, Scrum. 2 Comments
Motivation and demotivation are huge factors when it comes to effectiveness of Scrum based project execution. Irrespective of whether Scrum Master/Project Manager came from Scrum developer background, it's important to understand what motivates the Scrum team.
Instead of talking from top-down approach, I will rather talk about what demotivates the Scrum team. If we are able to fix the problems mentioned below, I see no reason why people are not happy in the team. Below mentioned points are based on experience while working with multiple project as developer, Scrum Master and Agile Coach. Please feel free to add more based on your own experience.
Read more »
17
Oct
Posted by ShriKant Vashishtha in Agile, Developer. 2 Comments
Before moving to Agile I worked with Waterfall for around 10 years. Throughout those years I could see people working day and night in development phase. Sometimes teams used to work from 9AM-8PM rhythm non-stop even without knowing why are they doing so.
Whenever product was shipped to customer or whenever any critical production problem occurred, it was quite usual and at the same time pitiful to see team staying entire night to fix the issue.
I heard the word burnout many times. I could see the signs of fatigue on the faces of some people but apart from that I never could understood what burnout actually means.
So here is a story.
Read more »
27
Sep
Posted by ShriKant Vashishtha in Functional Testing, Grails, QuickTip. No Comments
These days I am looking at Grails functional testing part. For recording Selenium scripts, generally the best thing to use is Firefox IDE plugin. It's possible to convert the Selenium scripts to a test-case in the related programming language (Java, PHP, C# etc). I was looking for a similar formatter for Grails also which is available at github.
I tried to install it but it complained with an error "Firefox extension not compatible with browser" which simply means that the plugin has not been tested with related FireFox version. As Firefox versions are progressing like anything, people are having hard time to find suitable plugin version. As I said earlier, though the plugin is not tested with relevant Firefox version, it doesn't mean that it won't work with latest Firefox version.
For Grails Selenium IDE formatter issue, I looked at a blog which provided the solution to my problem. I edited the Grails IDE formatter source code based on the directions mentioned in this blog and it worked like a charm.
21
Sep
Posted by ShriKant Vashishtha in Agile, ATDD, BDD, Distributed Agile, Functional Testing, Grails, Patterns, Testing. 2 Comments
For Web Application development Selenium is a defacto tool for functional testing with its click and capture capability through browser plugin. At the end of recording, Selenium script can be converted in a test-case in almost any programming language.
Immediately after you begin talking about functional testing people jump on the tools and would like to know what tools you are using or going to use.
And in practice that's how it works. Somebody will say let's use Selenium and somebody else will come up with a suggestion to use Xebium or FitNium. In some projects which-tool-to-use becomes very clear within a day but unfortunately fewer understand the business-case of using Xebium or FitNium instead of pure Selenium.
This post tries to answer following questions:
- What's the need to cover Selenium with FitNesse to begin with?
- In practice does FitNesse + Selenium work any better compared to pure Selenium, based on the reasons mentioned in last question?
Why Selenium + FitNesse (Xebium or FitNium)?
Read more »
20
Sep
Posted by ShriKant Vashishtha in ATDD, BDD, Functional Testing, Grails, Patterns, Testing. 2 Comments
In one of my posts (Agile Testing – Incremental Functional Test Approach) I discussed about the impedance mismatch between developers and tester in Agile team. The basic issue is - testers receive the user-stories at the end of sprint when you definitely won't have sufficient time to test it. To resolve that problem, we came up with an idea of splitting the user-story in functional tasks so that at the end of each functional task, tester could test it. That way tester can test in incremental way rather than waiting endlessly for a Ready for Test user-story.
Moving a step further, how about getting away from breaking user-story into functional sub-tasks and just write acceptance tests at the beginning of sprint itself? Developers then have to make sure that they develop the code to satisfy those functional test cases. Here acceptance test cases are not written in English prose but in a DSL structured in English (understandable to anybody).
Read more »
18
Sep
Posted by ShriKant Vashishtha in Agile, Distributed Agile, Patterns, Tools. No Comments
While working in distributed Agile, one of the repeated patterns is "2-dimensional (2D) communication". Distributed communication generally happens with Skype video and Mikogo desktop sharing tools. Skype kind of video-chat solutions help in bringing distances closer as team members can look at body language of their distributed partners while talking. At the same time, distributed desktop-sharing tools (Mikogo, yuuguu, Skype screen share etc) enable distributed pair programming as developers from both sides can look and use their own machine. Sitting posture is much more comfortable than collocated pair-programming.
Initially communication mode works well but after a while (say after 2+ months) it becomes monotonous, technical in nature and less focused on soft-nuances of communication. People talk when they need to and only to fix technical issues. Human touch goes down as time elapses which is a usual phenomenon of distance communication. Discussions on personal life, things beyond project scope and fun talks cannot happen in an environment in which your sole purpose of talking most of the times is resolving a technical issue.
Read more »
29
Aug
Posted by ShriKant Vashishtha in Cygwin, Grails, QuickTip, Tools. No Comments
Installing new version of Grails is easy. However it's quite a pain to make it running on Cygwin. The problem is as follows:
Jdk 5 introduced "javaagent" as one of the JAVA_OPTS and it has been used in running Grails 2. Shell scripts convert $GRAILS_HOME in cygwin format for running grails. So for instance if $GRAILS_HOME is c:/grails, it becomes '/cygdrive/c' in cygwin format. This makes
AGENT_STRING=-"-javaagent:$GRAILS_HOME/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-0.8.4.jar
to something like this:
$ echo $AGENT_STRING
$ "-javaagent:/cygdrive/c/grails/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-0.8.4.jar
which JRE doesn't understand while executing 'java'. It expects -javaagent value to be something like 'c:/grails/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-0.8.4.jar'.
To make it work, following changes need to be done in $GRAILS_HOME/bin/startGrails script:
Introduce a new variable something like GRAILS_HOME_FORWARD_SLASH before making any change to environment based $GRAILS_HOME.
# For Cygwin, ensure paths are in UNIX format before anything is touched
GRAILS_HOME_FORWARD_SLASH=`echo $GRAILS_HOME|sed 's/[\]/\//g'`
Also change the way AGENT_STRING is defined as follows:
AGENT_STRING="-javaagent:$GRAILS_HOME_FORWARD_SLASH/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-0.8.4.jar -noverify -Dspringloaded=profile=grails"
This change lets you work with Grails 2 now on Cygwin
27
Aug
Posted by ShriKant Vashishtha in QuickTip, Tools. No Comments
I like tree command on linux which provide you the snapshot of the directory structure and files in a tree view. Something like this:

As most of the times I use CygWin on Windows, I wanted to get 'tree' working here too. I could fine the source of it at which I compiled and installed based on the instructions mentioned.
Though it worked but I started getting problems because of non-ASCII characters used in the 'tree' output. For that I installed . 'mintty' is even cooler to use on top of cygwin. At the same time I got 'tree' command working the way I wanted.