Tuesday, October 23, 2012

To use Cucumber or Not to

Cucumber is fun to use. It it really cool to see plain english statements come to life and different pieces of code executed when those are english lines are executed. Gherkin syntax is great too. It has so much potential. Using a handful of simple keywords you can express any scenario and combined with cucumber you can execute them. Wonderful !

Then my developer brain came into action with all the principles around DRY (Don't repeat yourself) and WET (Write Everything Twice) highlighted. Does DRY apply to gherkins? It probably does. Take these two steps in different feature files for example:

And User A can view the message posted by User B

And User can view the message posted by the other user

These are two different lines of english meaning the same thing. These are the kind of gherkins different people would write about the same step or the scenario. If we already have the step #1 implemented we may apply the DRY principle and not implement step #2 once again. Now, how do I know if these two steps match and have the same implementation? By collaboration and by looking into the implemented step - right? Well the problem is - this takes time. Specially when the test suite is large this takes even more time. Now let's say all this collaboration and code inspection is done and it is concluded that the steps are the same we may want to edit the gherkin and replace the step #2 with step #1.

I call this whole process - "Normalization of Gherkins".

When is this done? When the step is being implemented
Who does that? Well, since this is a collaborative effort - everyone is involved.
If the developer who is implementing this does not have any idea that the step #1 above is already implemented in some other stepdef file the new (re)implementation of step #2 will be done.

So what happened here?
We are thrilled by the idea of automating any simple line of english that can be written by anyone but we still want reusability. So here comes a choice -

- Do you have people outside of your team who care about gherkins? If so, then evaluate using cucumber.
- Do you NOT have people outside of your team who care about gherkins? If so, then consider not using cucumber.

Let me get my message straight here. I am saying this about cucumber - to evaluate using it or not using it. However I think there is a lot of value in gherkins. What I am saying is evaluate the use of cucumber.

So - If you choose not to use cucumber how would you automate your gherkins then? Use unit testing frameworks to hit webdriver or something! I guess at this point I will leave this post here leaving a few questions unanswered for the next few posts. These questions are -
- How would simple junits consume gherkins?
- Could I get the same kind of report from junits the way I get it from cucumber?

Stay tuned for some thoughts around these.

Friday, October 19, 2012

What do you like about it?

My new interview pattern these days is turning out to be very interesting. The simple question is - "What do you like about it?". Tell me a technology / process and my question is simple - "Why do you like it?"

The important part here is "Why". You may have used a technology for many years and you are now an expert at "using" it. However in the process you should have developed opinions, hatred and / or love for the technology. You should be able to see the good and bad parts of the technology. You should be able to critique and defend the technology. This is very important as this shows that your thought process has evolved.

It is surprising to see how many candidates don't have a good answer to this. These are still good candidates who can get the work done but it does give an impression about someone.

Saturday, October 13, 2012

Thought Leadership

I came across the terms - Thought Leader and Thought Leadership - several times now and I am intrigued enough what this means. I wonder
  • Who is a Thought Leader? 
  • What makes someone a Thought Leader? 
  • What does a Thought Leader do that Business Leaders do not do? 
  • What do Business Leaders do that Thought Leaders do not do? 
  • What are the characteristics of an Individual Thought Leader? 
  • What are the characteristics of a Organization as a Thought Leader? 
  • What skills a Thought Leader should have?
  • How did one become a thought leader?
  • How did an organization establish themselves as a Thought Leader?
Finally I decided to spend some time researching what this is and I tapped our friend - Google. I got a bunch of websites offering explanations around these terms. The pointers are:
  • Forbes indicates that a thought leader is "a foremost authorities in selected areas of specialization" and "that significantly profits from being recognized as such". It also indicates that such thought leadership "brilliance is a function of acclaim, created where others bestow the accolades". 
  • The Forbes article also indicates that a thought leader has a "selected areas of specialization"
  • Leaders Direct site indicates that a thought leader may not need to have "inspirational influencing skills" that may be necessary for a senior executive. It also indicates that they may actually have "weak interpersonal skills and an indifferent character" and what really counts is the "credibility of the idea"
  • CEO Online indicates, contrarily, that Thought Leaders need to have good "communication, positioning, pitching" skills along with 6 others
  • The How Matters site indicates a quote "proprietary command over a challenging industry issue".
  • It also indicates the 3 R's of Thought Leadership - "Results, Rhetoric, Relationships"
  • The OpenViewPartners blog places emphasis on "bold ideas that are new and noteworthy" and "high quality (preferably original) research"
  • The Thought Leadership Leverage article lays out the how "changing mindset" is more effective than "building skills"