Friday, July 18, 2014

Today I am Speaking at Agile Day Conference in Pune

I thank KnowledgeHut & the selection committee for giving me the opportunity to present my paper "AGILE! Who cares - Tell Me What To Do". This is about Agile Transformation Strategy, where I will be highlighting areas which often go wrong, will discuss change management in general and list out strategies to overcome them.




Hoping to see a very enthusiastic audience and looking at this as great networking opportunity. 

Note: Those who are attending the conference is taking home 7 PDUs from PMI, 8 SEUs from Scrum Alliance and this means conference is heavily backed by PMI & Scrum Alliance.




Saturday, May 31, 2014

Sprint Review

WARNING: On the surface, this Scrum activity appears to be both simple and straightforward. But be warned: without careful preparation, this session can lead to riotous table-thumping and streams of tears.

Just show the stakeholders what was completed over the sprint (past 2 weeks) — sounds simple right? Well, based on my experience, a sprint review is rarely simple, and in fact, I consider it to be the most delicate session to facilitate.

The core issue is aligning the expectations of a disparate group of stakeholders. These people are often more senior in the business relative to the team, they most certainly have less familiarity with the project compared to the team.

Scene Setting

Before you show any output during demo please explain why we are doing this. I am not saying you have to start from the beginning from envisioning phase of the product but definitely try explaining where you were left last sprint and what you are planning to achieve this sprint. Also it doesn’t hurt to explain the definition of done. This should help to set the stage.

Here is great video which explains why often "why" (http://goo.gl/yjmdNO) is so important

The Main Event - Sprint Review

To ensure the main event goes smoothly here are few recommended steps which you may consider to take to provide better experience for everyone.

Remember preparation is the key for the sprint review meeting and that should happen prior to the sprint review meeting. Identify user stories you are planning to demonstrate before the sprint review.

   1. Prepare a demo workflow script
   2. Prepare some basic demo data.
   3. Ensure the demo environment is working as expected. We don't want to be stuck during demo.

You don’t want the team to spend too much time on these tasks, as the sprint review shouldn’t be turned into a dog-and-pony show, but these tasks certainly need to be acknowledged. There are also a few important points to stress to the team during sprint planning.

Instead of a one-way showcase, the demo of the sprint’s completed work should act as a prompt to encourage a two-way conversation between the business and the Scrum team. It should be an open and honest discussion focusing on what was completed and what is coming up next.

Remember that this session should not become a smoke-and-mirrors slide show presentation to impress the attending stakeholders. I assure you that misleading demonstrations will only come back to bite everyone.

Preview at the Review

It is a fundamental tenet that during the sprint review, the team should demonstrate only stories that meet the definition of done. It makes sense, but it can be very frustrating for some stakeholders, and the reality is that the team will possibly receive pressure to still show what has been worked on (even if it is not quite finished).

In this situation, instead of being a stubborn mule, I recommend creating an additional agenda item labeled “Coming Soon.” This way, much like a movie preview, there is acknowledgment that the work isn’t complete, yet the stakeholders still get a sense of work that’s on the boiler and is coming soon to a sprint review near you!

Impediments

Following the show, it can also be a good idea to discuss any impediments that impacted the sprint, including why they occurred and how they were dealt with. This is an opportunity to lobby for greater assistance if there are any systemic impediments. An example might be the physical environment—perhaps a problem dealing with the facilities department in your mission to get larger desks or more breakout space.

In addition, I recommend using this segment to briefly make a point of key process improvements that were implemented to help achieve the sprint goal. Don’t go into detail here, as this session is about reviewing the product, but a quick mention won’t hurt and is a great opportunity to demonstrate to the stakeholders that the team is constantly improving.

So-Called Suggestions

There will no doubt be a range of questions and suggestions that surface throughout the session. I recommend that questions be controlled and kept on topic. The team should answer any and all questions that surface in relation to what is being demonstrated; however, questions that are tangential or completely off topic should be taken “offline” in a separate meeting.

Acknowledge any suggestions made (no matter how outlandish they might sound) by writing them down somewhere. Any valuable suggestions which is related to the product should of course be added for further discussions under "Discussions" list and in future you may consider to discuss the item with Product Owner and after approval move it to "Product Backlog".

Picnics or Battles

Sprint reviews can be akin to turning up for a picnic or, alternatively, turning up for pitched battle! It comes down to taking the necessary precautions and treating each session seriously while still having some fun. Don’t assume that everyone has the same level of background as the team, and ensure that all attendees are made to feel comfortable by always explaining what is happening and why.

Aligning everyone’s expectations is the name of the game, and achieving this objective is critical if you prefer picnics to battles!

Friday, April 4, 2014

Exam tips for PMI ACP Certification from PMI Agile Certified Practitioner

Recently I have passed PMI-ACP exam :-) with highest band and yes I am now an PMI-ACP Certified Practitioner. This post is about my experience, preparation strategy and also I am trying to cover exam's prerequisites and requirements.  
I have noticed I found many follow forums or professional networking sites LinkedIn to find out if they want to be certified or not and it is always a hotly debated topic. With valid arguments on both sides, my personal decision was Yes, I wanted to get certified. Looking back, I have to say that I didn’t regret it. Not only it opened but some interesting ones too. In-fact I learned a lot (and started to actively use my knowledge) just by studying for the test and going through cases. 

According to PMI, The PMI-ACP recognizes knowledge of agile principles, practices and tools and techniques across agile methodologies. In order to be certified, you need to demonstrate the following and pass 3 hours exam by answering 120 questions.

My preparation strategy

First of all, the below reflects my personal experience only. Everybody’s story is different. You may already be an agile guru by experience or may be fairly new and need extra effort to prepare.
My first advise would be to join one of the PMI-ACP study groups on LinkedIn. In my case, I have been an Agile Coach for past 6 years but still the information I got from these groups was instrumental in my preparation. 
In order to satisfy the 21 educational PDU requirements, I opted for classroom training at simplilearn and also had access to there online course materials and exams. I wouldn't recommend just sticking to these notes of any tutorials rather read the main preparation book and it was Mike Griffin’s Exam Prep Book. I loved it! Really great summary at the right level of details. Overall for the exam I spent 4 weekends (i.e. 4x2=8 days) of studying because apart from weekends I was busy with my work with Red Hat. But this may vary from person to person and probably in my case since I have implemented agile practices across teams it was not extremely difficult to pass the exam. However, keep one thing in mind you need to cover the entire book and I recommend you to not skip any material. 

Take Mock tests for real exam

For final exam I have taken mock tests from quite a few sites. But mainly I have subscribed to agileexams.com for $49 which comes with 30 days membership and taken multiple short exams(25 questions in each exam) and two full exams (120 questions in exam). Fun with agileexams.com  you can take as many as exams you like and remember to review answers understanding why something is incorrect or even for that matter correct is very important because in real PMI-ACP exam you will be tested based on your understanding. Apart from that you may also take exams from following:

  1. Free Full test 120 Q @ http://www.simplilearn.com/free-resources/pmi-acp-agile
  2. Sample 20 Questions @ http://www.ucertify.com/exams/PMI/PMI-ACP.html
  3. Free 30 Questions / exam simulator @ http://www.gr8pm.com
  4. http://agiletraining.com/2011/09/24/pmi-acp-agile-certification-exam-study-tips/
  5. http://pmiacptraining.com/
  6. http://whitewaterprojects.com/pmi-acp-sample-exam/#
  7. http://www.agiledream.com
  8. http://www.proprofs.com/quiz-school/story.php?title=pmiacp
  9. http://www.rmcproject.com/pmi-acp/pmi-acp-FreeContent.aspx

Exam experience

I took the exam at the Prometric center which was about 9kms from my home.
Overall my experience wasn’t very much different from what I have learned by reading other task takers comments. I had a balanced set of questions with most of them related to Scrum,XP, Lean,few risk management & Kanban questions, a good portion of situation questions, some questions on the manifesto / agile values, and some tricky ones on agile portfolio management, EVM, and costs.
I wouldn't call the test very difficult but it was challenging enough to keep me thinking very very carefully about my answers. It was more focused on testing the understanding and practical applications of the core agile values rather then on simply testing how well you remember the definitions. In other words, I encountered more “why”, “how”, and “when” then simple “what is ..” questions. Usually out of 4 answers 2 were obviously wrong but I had to choose carefully between the remaining 2. I managed to finish all 120 questions in 2 hours (120 minutes) and spent another hour reviewing my answers. The results are known immediately once you finish the test and you get a temporary certificate on the spot. Also you will be able to down the certificate from the PMI website. Few weeks later you’ll get the proper certificate by mail and waiting to receive it.

Thursday, February 27, 2014

An overview of Test Driven Development (TDD)

It is also known as test-driven development (TDD) or test-first programming (TFD).

Test-first development, or test-driven development, is a rapid cycle of testing, coding, and refactoring. When adding a feature, a pair may perform dozens of these cycles, implementing and refining the software in baby steps until there is nothing left to add and nothing left to take away. Kent Beck, who is credited with having developed or 'rediscovered' the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.

It is an evolutionary (iterative and incremental) approach to programming where Agile software developers must first write a test before they write new functional code. It is one of the Extreme Programming(XP) practices.

Steps:
  1. Quickly add a test, basically just enough code so that the tests now fail.
  2. Run the tests, often the complete test suite, although for sake of speed they may run only a subset to ensure that the new test does in fact fail.
  3. Update the functional code so it passes the new test.
  4. Run the tests again.
  5. If the tests fail return to step 3.
  6. Once the tests pass the next step is to start over (agilists may also want to refactor any duplication out of their design as needed).


Advantages of TDD:
  • TDD forces developers to do detailed design just in time (JIT) before writing the code.
  • It ensures that agile developers have testing code available to validate their work, ensuring that they test as often and early as possible.
  • It gives developers the courage to refactor their code to keep it in the highest quality possible, because they know there is a test suite in place that will detect if they have “broken” anything as the result of refactoring.
  • Research shows that TDD substantially reduces the incidence of defects.
  • It also helps improve your design, documents your public interfaces, and guards against future mistakes.
I will write more into TDD practices in upcoming posts.

Thursday, January 23, 2014

Installing & configuring Git on Fedora


First thing first - Let's install git. There are two major ways we can install git 

  • install from an existing package
  • install it from source or
installing from an existing package: Easy, Open up Terminal and type the following command:

$ sudo yum install git-core ~/.ssh
$ sudo password for username: type your password here 

installing from source: It’s generally useful to install Git from source, because you’ll get the most recent version. Each version of Git tends to include useful UI enhancements, so getting the latest version is often the best route if you feel comfortable compiling software from source. It is also the case that many Linux distributions contain very old packages; so unless you’re on a very up-to-date distro or are using backports, installing from source may be the best bet.

To install Git, you need to have the following libraries that Git depends on: curl, zlib, openssl, expat, and libiconv. For example, if you’re on a system that has yum (such as Fedora), you can use the following command:
$ sudo yum install curl-devel expat-devel gettext-devel\
openssl-develzlib-devel

Once the installation is done you can do

$ git --version

this will show the version of Git you are using.

Now that you have Git on your system, you'll need to configure Git to use it. Following step you need to follow for configuring but before we start I am assuming that you already have a github account, if not please create an account in github.

Step 1: Check for SSH keys

First, we need to check for existing ssh keys on your computer. In the Terminal, type:
cd ~/.ssh
ls
# Lists the files in your .ssh directory

Check the directory listing to see if you have a file named either id_rsa.pub or id_dsa.pub. If you don't have either of those files go to step 2. Otherwise, you already have an existing keypair, and you can skip to step 3.

Step 2: Generate a new SSH key

To generate a new SSH key, enter the code below. We want the default settings so when asked to enter a file in which to save the key, just press enter.
ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/you/.ssh/id_rsa):
ssh-add id_rsa
Now you need to enter a passphrase.
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]
Which should give you something like this:
# Your identification has been saved in /home/you/.ssh/id_rsa.
# Your public key has been saved in /home/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

Step 3: Add your SSH key to GitHub

Run the following code to copy the key to your clipboard.
sudo yum install xclip
# Downloads and installs xclip. 

xclip -sel clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard
Alternatively, using your favorite text editor, you can open the ~/.ssh/id_rsa.pub file and copy the contents of the file manually.
Now you to open the Browser and perform the following steps 
  1. Go to Github Account Settings
  2. Click SSH Keys in the left sidebar
  3. Click Add SSH Key
  4. Paste your Key into the Key field
  5. Click Add Key
  6. Now Github will prompt you for your github password to Confirm the action.

Step 4: Test everything out

To make sure everything is working you'll now SSH to GitHub. When you do this, you will be asked to authenticate this action using your password, which for this purpose is the passphrase you created earlier. Don't change the git@github.com part. That's supposed to be there.
ssh -T git@github.com
# Attempts to ssh to github
You may see this warning:
# The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?
Don't worry, this is supposed to happen. Verify that the fingerprint matches the one here and type "yes".
# Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
If that username is correct, you've successfully set up your SSH key. Don't worry about the shell access thing, you don't want that anyway.
Well we are done! Hope this helps.