Scrum/Kanban: how to create “desire”? – Workshop on 26 April

An Agile Mëtteg workshop took place in Agile Partner premises on 26 April 2012. The topic of this workshop was about finding the best way to convince an organization to go Agile. 11 people participated in the workshop and 3 of us, Agile Partner consultants, were there to facilitate the session.

After a brief introduction, we formed 3 groups to discuss the proposed topic and following 40 minutes of intense debate each group shared a summary of the arguments that were analyzed around the table.

At the beginning we acknowledged that Agile should be considered as a potential solution / improvement to a given unsatisfactory situation. Thus it is critical to understand that issue, which is the potential justification of the Agile transition (the “Why”).

Then it is critical as well to identify the decision makers, “Who” should be convinced. Those people have their own agenda, objectives, fears and profile, both from a personal and from a corporate point-of-view. Understanding this context is essential to define the right strategy for introducing Agile. When stakeholders have objections, it might not be really effective to try to formulate logical and objective arguments, as they can always find additional objections. Rather it may be a good idea to define a specific approach for meeting their true goals.

A typical example is when middle-managers are afraid of loosing cost control over a projet that would be managed in an Agile way. In this case it may be necessary to include additional cost indicators to the project dashboard, so that it offers also high visibility on this specific aspect.

In the end, it appears that the best way to convince of the benefits of Agile is to show it in action and to demonstrate actual results. Typically starting a pilot Agile project allows to start learning how to deliver quality software frequently, which allows to build trust between the team and its customers, which finally allows to enter into a different kind of discussion about the business requirements, their granularity and their prioritization.

In conclusion we also advised to engage the stakeholders in ”serious games” and similar activities (see our Agile Mëtteg in April 2011), which help to address the emotional side of the Agile transition process.

Based on the participants’ feedback, that session was well worth the time invested. It was highly interactive and I believe everybody could take new ideas away. We look forward to meeting you at our next Agile Mëtteg workshop!

An undercover agilist in a Startup Weekend

Logo Startup Weekend LyonRecently (13-15 April 2012) my colleague Yann and I participated in our first Startup Weekend in Lyon (France). We had multiple objectives when going there, including having fun, preparing for organizing a similar Startup Weekend in Luxembourg later this year, pitching some of our startup ideas and evaluating the spread of Agile concepts and practices amongst the community of entrepreneurs. In this post I would like to share some insights about the later aspect.

As agile practitioners we already know that Scrum in particular is very well suited for new product development and we have actually seen the benefits of Agile for such projects in both new companies and mature organizations. But Yann had the occasion a few weeks ago to discuss with a startup team that was using Scrum with only partial knowledge and understanding of the rationales behind it, hence limited benefits. So I wanted to see on the field to what extent Agile methods are understood and used by innovative teams and entrepreneurs. A Startup Weekend would be an ideal Lab for such an observation.

I had a first try on Friday evening by pitching my idea of a starter kit for new agile teams (more about this soon). I quickly realized that this was far from most participants’ knowledge area and concerns. My pitch was not a winner and I was wondering if anyone in the room had ever heard of Agile.

When I eventually joined a team, I did not want to be too pushy for Agile, but rather to see how the team would become more familiar with agile along the weekend. Actually, when discussing with other participants it appeared that some of them are already practicing some sort of Agile process, but only a few of them know what Agile and Scrum actually are.

One of the key aspects of Startup Weekends is the participation of tech and startup leaders as coaches (the “mentors”). Some of those “mentors” were the first to bring Agile explicitly on the table, as a proper framework for managing the kind of innovative product/service development projects that we were at during that weekend.

What stroke me in the team I joined was the high number of hypotheses that were taken without a structured approach to test and validate those assumptions. I believe that several mentors participated in initiating a feedback loop with the team so that we could learn and pivot from the original ideas in order to create a more appealing value proposition and business model (Yann’s team actually pivoted multiple times and quite often all along the weekend ;-) . I did not hear anyone refer to the Lean Startup movement boosted by Eric Ries’ book, but a lot of discussions were really in line with it.

At the end of the weekend, the 15 teams that were formed to work on selected ideas (selected out of 42 initial ideas pitched on Friday evening) presented their projects to a jury composed of entrepreneurs and other personalities. While the evaluation criteria were intentionally kept “secret” it appeared clearly that the jury expected to be thrilled by a great vision backed by a few hard facts & figures, rather than a full 3-years business plan. I felt a strong agile mindset in this moment when it was clearly recognised that faced with so much uncertainty, it was vital to create a learning organization that aims at a great goal, to inspect and adapt continuously along the way, instead of building a full-fledged plan based on pure guesses.

My last comment is that all 3 winning teams were not only able to present an exciting business idea but also to demonstrate tangible results (e.g. a domain name and an embryo of web application), which for me shows once again the importance of demonstrating your actual progress to build trust with your customers / investors, another key Agile concept!

Workaround the Grub installation issue in Debian Wheezy

Debian LogoThe current testing version of Debian, aka Wheezy, contains a rather annoying bug that prevents the installation of Grub, the multi-OS bootstrapper of Linux.
Although this bug will be corrected at some point in the possibly near future, it is already present for a few months, making life harder for the fresh installations. [...] Read More

Endpoint configuration in Microsoft Dynamics CRM 2011 Plugins

One thing to know when working with CRM Plugins is that there is no associated config file.

If your plugin references a web service and you need to configure an endpoint, you will have to to it by code.

Here is an example to reach Sharepoint’s Document Workspace Web service in a CRM Plugin (most are default config values).

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "DwsServiceBinding";

binding.CloseTimeout = new TimeSpan(0, 1, 0);
binding.OpenTimeout = new TimeSpan(0, 1, 0);
binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
binding.SendTimeout = new TimeSpan(0, 1, 0);
binding.AllowCookies = false;
binding.BypassProxyOnLocal = false;
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
binding.MaxBufferSize = 65536;
binding.MaxBufferPoolSize = 524288;
binding.MaxReceivedMessageSize = 65536;
binding.MessageEncoding = WSMessageEncoding.Text;
binding.TextEncoding = Encoding.UTF8;
binding.TransferMode = TransferMode.Buffered;
binding.UseDefaultWebProxy = true;

binding.ReaderQuotas.MaxDepth = 32;
binding.ReaderQuotas.MaxStringContentLength = 8192;
binding.ReaderQuotas.MaxArrayLength = 16384;
binding.ReaderQuotas.MaxBytesPerRead = 4096;
binding.ReaderQuotas.MaxNameTableCharCount = 16384;

binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Transport.Realm = "";
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

EndpointAddress endPointAddress = new EndpointAddress("http://sharepoint:1234/_vti_bin/Dws.asmx");

DwsServiceClient client = new DwsServiceClient(binding, endPointAddress);
client.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password", "domain");
client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Identification;