Here I will post problems I and my colleagues met and solutions we found.

Thursday, March 24, 2011

The order in Xaml is important

Today I had one more chance to notice that the order in XAML is important.What I had was a button with code like this:



<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>

Notice that I assigned Command before CommandParameter. When I was doing it, I din't even think about it. I just added support for CommandParameter at some point so I naturally added this line at the end. However, CanExecute method from ICommand was triggered immediatelly after Command was assigned to the control, even before CommandParameter was assigned. Obviously, it didn't work.

When I changed the order, it's all started to work.

Tuesday, March 22, 2011

TFS Sidekick

Nice tool. UI for all these commands from tf.exe command line. Free.


Wednesday, March 02, 2011

Offshore development

During my career I have seen several offshore teams and project. Some of them were quite successful, some of them failed.

There are numerous articles about offshore development, but I would like to write about my personal experience. Partly, to analyze what makes it work.

Generally, we can identify two different approaches. One, is where the whole project being outsourced to the offshore team. The offshore team would need to cover everything, design, architecture, development and QA.

In one of my previous companies such approach failed. Thinking about it, I would identify following problems:
1. The management of the team could not be trusted. At some point we found about money being just stolen.
2. Our company did not set requirements and priorities properly. In result we had very flexible architecture with terrible performance.
3. The team did not work in our domain before. In result, what they were doing was pure abstraction for them. Which is related to previous problem, they could not identify priorities properly.
4. Sometimes you may have problems with quality of the developers, but this wasn't the case. The developers were not worse than those in our company, which demonstrate the importance of project management.

At the same time I have seen successful offshore project developed with such kind of teams. My friend work in one of such offshore team. The team is working for the same company for more than 15 years now. The product became their own product. And they have managers visiting them regularly.

In my previous company we started working with another offshore team, and that company now outsourced all their development. Their secret is that product designs are still done here in US. The architecture, development and testing are done offshore, but release cycles are short, so the product is verified against design constantly. And the team is monitored by person with development experience.

And then there is my current company. We have few developers helping us. So, we actually have team combined from developers here and offshore. And it works! Now, what is our secret?
1. Designs are done here, with the people who knows our product and our customers
2. Since our offshore team speaks Russian and I speak Russian, we don't have language barrier.
3. And we talk often. This way I always know what the team is doing and if developers interpret design incorrectly, I can clarify things immediately, before it's too late
4. I am present at design meetings and know not only what will be in the design, but why, even though I am not subject expert myself. So, I can deliver that information to the developers. In fact, currently I am writing the design, but this is something I would love to delegate :)

In other words:
Either offshore team must have domain expertise and work in the area for a few years, or the team should actually include people from your company who knows the business. In both cases, don't let development go unsupervised. Make sure the team is on the right track. To do this, talk with them at least few times per week.
Also, have some forms of the designs. My friend uses Word or Excel documents attached to the TFS tasks, we use links to wiki.