Friday, 23 September 2011

Hyper-V: Creating a new virtual machine

I do a lot of debugging and am also involved in a lot of technology previews. In my experience I have best been served experiencing and debugging new technology on virtual machines. As I am about to install the new Windows 8 OS on a Virtual Machine I thought I would share the steps I follow when setting up a new VM. Below is an article from Microsofts TechNet that describes how to create a virtual machine but it lacks the detail that someone new to Virtual Machines would need:
Below are images that show how I filled out the Virtual Machine Wizard:







NOTE: how I am selecting an existing Virtual Hard Disk? You can see how I created the new disk in this blog post: http://nkeithtaylor.blogspot.com/2011/09/hyper-v-creating-new-hard-disk-for-your.html


Once you click Finish in the Virtual Machine Wizard, Microsoft Hyper-V will create your new Virtual Machine that will be our starting point for installing Windows 8 in this case but can easily accept almost any OS.

Hyper-V: Creating a new hard disk for your new virtual machine

Here is a good article that I found on Microsofts TechNet site that gives you the basic steps to create a new hard disk for your new virtual machine:
I will include some images that show the options I chose as I walked through the wizard step by step:








Once the wizard progress dialog completes the hard disk wizard closes and your new hard disk is ready for use in a Virtual Machine.

You will notice from the screens that I was creating a small debug machine which is why I did not need a very big hard disk.

Microsoft Visual Studio 2011 Express: Debugging with the Simulator

Microsoft Visual Studio 2011 Express for windows developer preview has a great feature that allow you to debug your new metro code on an emulator of a tablet device called the "Simulator". I have been asked a enough times how to do this to write about it here. Your first thoughts would be to go to the "Debug" menu on the Visual Studio tool bar which is "not" the case.

You put Visual Studio into Simulator debug mode by clicking on the small drop down arrow next to the old green start debugging arrow as shown in the below photo:


Now that you have selected "Simulator" mode you can hit the green debug start arrow or hit F5 as usual to start debugging in the device Simulator.

Once started you will see the device Simulator open up and start windows 8 in the device and then open/run the program you are debugging in the device window. This allows you to see how your program will look on the device and interact with it.


The first time I did this I naturally chose the "X" on the right side of the Simulator to close the program and was quickly looking at this dialog:

Once you have read the dialog it is clear that you can leave the Simulator up and running. You stop debugging as usual by clicking on the debug stop button or hitting "shift+F5". The next time you start debugging the Simulator is already running which saves time loading your next debug session.

Thursday, 22 September 2011

Windows 8 Developer Preview Rocks!

Windows 8

I just returned from the Microsoft Build Event in Anaheim California where I went to get the scoop on the latest information on Windows 8 and I have to say I am very impressed. Here are a few links to great information to get you started.
o   Here you can download the Windows 8 Guide which is a great preview / warm up document
·         http://blogs.msdn.com/b/b8/
o   This is a link to the Building Windows Blog
o   This is a link to “Windows Developer Preview: General OS questions”
If you are a developer then the below link will be the most useful. Microsoft recorded all of the sessions from the Build event I attended and you can find all of them on this site:
·         http://www.buildwindows.com/
Now get out there and enjoy J

Monday, 29 August 2011

Castle Syndrome Solution through Scrum of Scrums and Socializing

I have used the Scrum framework for many years now and one of the biggest challenges for me as the Scrum Master has been geographically dispersed teams. I love a challenge and worked to make this one of my specialties and wanted to share a past experience. I was working for a company in Europe that had teams and team members in 4 time zones. When I was tasked with improving the sprint team’s interactions I did some analysis on the problem at hand. While in Europe I loved the castles over there and after my analysis it came to me that the sprint teams in question were experiencing what I called “The Castle Syndrome”. Boiled down the teams were all working in their own castle / team and did not take into account that they were in fact part of a bigger castle, the Kingdome or company. Each team did a very good job and handling their user stories and did their best to ensure their solution was the best they could do to resolve their user stories. The problem was that the teams did not go outside what they perceived was their castle walls.
The first change I did was to use the Scrum framework’s Scrum of Scrums. I needed to get the teams to understand they were in fact part of something bigger. Each team elected a sprint captain and I had this sprint captain attend the Scrum of Scrums meeting to share what they were doing and more importantly learn what the other teams were doing. This change alone helped the teams work better together but did not solve another problem that was evident in my analysis of the teams. As the teams were also of different cultures I noticed that some of the teams put themselves in competition with the other teams.

Competition is usually good, but not in this case as one of the teams was working to prove they were creating the best solutions which lead to duplication of work which is bad. The biggest problems is that the team that put themselves in competition with the others stayed inside of their own castle walls and did not allow themselves to be part of the bigger Kingdome. I have been able to solve most problems with geographically dispersed teams via online methods, but in this case I needed to go onsite. The team needed a meet and greet so to speak.

Once onsite I explained what I was seeing and let them know that were all part of one Kingdome. I then started working through their issues, whether perceived or real. One of the team’s key concerns was that they were afraid that other teams would not take them seriously or not think them worthy from a coding perspective. Because of this the team in question started to rush to get the solutions to problems first or to prove their solution was better or even worse in my mind they would work to prove that any solution from other teams was not as good as their solution.

The way I helped them to get past this was through socializing. I selected the technology leads in the team and matched them with the technology leads from a team in another region(s). I then proceeded to get both parties on the phone and introduced them to each other. Next step was to select a problem that needed to be solved and asked them to work together on it. Sometime this was on Sprint and other times it was off Sprint. In either case I always worked to time box the effort. Once the engineers started communicating one on one you could see the mutual respect start to grow. I knew I was on the right track when I noticed that the technology leads on a team would start to be a spokes person for their technology lead counterpart from the other team allowing the teams to feel and work together as if from one Kingdome. The team also started using each other as resources when one or the other was stuck.

More details on handling cross time zone teams in another post…

Thursday, 25 August 2011

We can't get all Commited user stories done in this Sprint, what do we do?

While we always do our best to manage our capacity, estimates there will always be those moments when something will come up where we will not be able to complete the work we signed up for. There will also be times when we find we have under estimated the amount of work we can get done in a sprint and we will want to take on more work items.
The Scrum framework has a way for us to do this, it is called Renegotiation. Below are a few tips on how to best accomplish this;
  • The team should contact the Product Owner no later than three days before the end of the sprint to move / drop / add work items.​
  • The team needs to communicate out that the Sprint has been renegotiated and why. As the Scrum Master I have usually handled this for the team by editing our Sprint landing page on a SharePoint portal.
  • The renegotiated items should be moved out of the sprint in your tracking tool. The tracking tool I am most familiar with is Microsoft’s TFS, but have also used other tools like Jira, etc.
While on this topic I thought I would share what we do when the team is not able to completely finish a user story. When this happens the team will follow the above steps to ensure the PO is in agreement. Then the team will need to ensure that the tasks that can't be done against a user story are handled correctly. Below is how we have handled this in the past;
  • ​Clone the Sprint user story that can't be completed
  • Edit the user story that is to stay in the Sprint to reflect the work that will be completed
  • Edit the cloned story to reflect the work that still needs to be accomplished
Ideally the plan is to take on the cloned user story in the next sprint.

Wednesday, 10 August 2011

Calculating Sprint Velocity

Boiled down velocity is the measurement of how much work a sprint team gets done in a sprint iteration. It is the measurement of what is actually “completed” in a sprint, not what was committed to in the sprint. I am using story points in my example below, but when calculating your velocity, just replace story points with the unit of measure you are using to estimate the items in your backlog;
Sprint Velocity = Total story points “completed” in an iteration

For example: if the team took on 360 story point in the sprint but only finished 352 story points. Their velocity for that sprint/iteration would be 352 story points

Sprint Average Velocity = Total story points “completed” to date / number of iteration completed

For Example: You Sum up the values for the 10 sprints below to get a value of 3447.
You then divide it by the number of iterations, 10 in our case to get an average velocity of 344.7 story points

Sprint
Story Points
Sprint 1
253
Sprint 2
309
Sprint 3
357
Sprint 4
377
Sprint 5
365
Sprint 6
352
Sprint 7
360
Sprint 8
359
Sprint 9
355
Sprint 10
360
 Total  SP 3447

                         3447 Total Story Points / 10 Sprints = 344.7 is our average Sprint/Iteration velocity

NOTE: Your velocity usually normalizes after 3 to 5 sprints allowing you to use this number to project how much can be done in the next iteration and ideally how much longer a release will take to complete considering the number of estimated stories remaining in the backlog.

Example Velocity Chart


I usually do not worry about the velocity of the first iteration. I like to let a team use the first sprint to take their best shot at determining how many stories they believe they can take on in their time boxed sprint. The team can always take on more stories if they find they are moving faster than they originally estimated or negotiate items out if they are not completing items as quickly as first estimated.