Skip to content


Agile Baltimore Unconference Reflection

Leading Agile - Mike Cottmeyer - Wed, 10/21/2015 - 15:54

Agile Baltimore Unconference 2015


On October 12th, Hillel Glazer and I hosted our first Agile Baltimore Unconference. Sure, there are other Agile events in the area but I really wanted to create something that was independent and “felt” like Baltimore. The result? The first Agile Baltimore Unconference! I wanted to organize an event that would provide value to both the sponsors and the attendees, at a reasonable price. With less than five days remaining, the event was sold out with 100 attendees.

t-shirtsAs part of the registration, we provided an event t-shirt (thank you smartlogic for the t-shirt design and sponsorship). The t-shirts came out great. The Agile Baltimore logo was on the chest and the event sponsors were proudly displayed on the back, with a skyline of Baltimore. It was top-notch design work and printing.

Food was supplied by Sunshine Gille. They provided, breakfast, lunch and cocktail hour. I’m sure others would agree, the Greek lunch was pretty damn good. If you’re local to Baltimore, I recommend you look them up for your next event. They were really friendly and easy to work with.


So, what is an unconference?

A loosely structured conference emphasizing the informal exchange of information and ideas between participants, rather than following a conventionally structured program of events.

Unconference Schedule

You might have read my blog post back in August, titled Divergence at Agile2015. If I wanted to structure a traditional conference, there would have been a ton more time spent planning the tracks and schedule. For this event, I wanted to focus on getting people to share ideas around the themes of Lean, Agile, Startups, and Technology. I honestly do not believe anyone could say what the most important topics could be 1-3-6 months out. Having the attendees plan out the schedule the day of the event would ensure we would have the more relevant topics.

Never underestimate the power of self-organization. In the first hour and a half of the event, we took somewhere between 300 and 500 ideas and narrowed it down to 9.  If you want to see some great pictures of this in action, click on the picture links below.


Agile Baltimore SponsorsWhen putting this event together, I had a choice. I could charge attendees a lot more money or get some sponsors. After doing some quick math, I realized that we needed sponsors. That’s a blog post all on its own. Get too many sponsors and too few registrations and I could forget ever having another event. My goal was to have sponsors who I personally like. I did not want sponsors who would create a local turf war. Of course, I wanted Agile Alliance on board. Done. ETC Baltimore was helping us with the space. Done.  Smartlogic approached us about doing the t-shirt designs and printing. Done.

What was left? Breakfast, lunch, the after-party, lanyards, and enough post-it notes and sharpies to satisfy the needs of a small army of Agilists. Thank you very much to Rally Software and Leankit, both of which had booths and gave product demos.

To underwrite the event, LeadingAgile was there every step of the way. When we needed to write a check for food and not all of the sponsor checks had arrived, it was great to know LeadingAgile had my back.

Photos and Videos Photos

Photos were saved to the Agile Baltimore Facebook photo stream.  You can see even more out on the Agile Baltimore Lean coffee meetup site.  If you were at the event and took pictures, please send me a copy!  I’ll get them posted.


This was my first real attempt at videography at an event. I used Periscope to do some live streaming on Twitter.  I then saved the videos out to the [Derek Huether YouTube channel]. Periscope won’t let you record with a landscape orientation yet so you’ll just suffer through the black bars on either side of the videos.  In the video below, you can see an exchange between Mike Cottmeyer, Paul Boos, and others about buy-in techniques when trying to go Agile. Paul Boos is heard saying “Something that promotes individual heroes is an impediment” [YouTube Video]


Never be afraid to try something you’ve never done before. I have a newfound respect for those who put on events. It can be exhausting! My heart goes out to the Purple Shirts that I see each year at the Agile20xx events of the Agile Alliance. I wasn’t wearing a purple shirt but I was super busy doing behind-the-scenes work. Upon doing a retrospective at the end of the day, I would consider some changes next time around.

  • I would like to see lightning conversations or maybe an entire track dedicated to Lean Coffee
  • I would like to offer a coaches corner, where attendees could go ask a qualified coach for some help
  • Lastly, ironically, I would consider adding a planned track.

Keep your eyes open for the next event. I doubt I can wait an entire year to do this again. Maybe we can do this in Denver or Atlanta? Maybe we can do a half-day Lean Coffee event?

What are your thoughts?

The post Agile Baltimore Unconference Reflection appeared first on LeadingAgile.

Categories: Blogs

Fun With Higher Order Functions In JavaScript

Derick Bailey - new ThoughtStream - Wed, 10/21/2015 - 13:30

JavaScript is often referred to as a language with functional programming capabilities because of it’s “higher order functions” – a term that may sound fancy, off-hand, but turns out to be simple in practice: A higher order function is a function that can return another function.


It’s a bit like a opening a present and finding another present inside… if you’re not expecting it, it can be a bit jarring. But if you know how to work with this idea, it can be fun and exciting!

Common Examples

There are a lot of great uses for higher order functions, including many common functions like “debounce” or “throttle” found in the underscore / lodash libraries.

In this example, a throttle function is used to prevent a window resize event in a browser, from constantly re-working the layout of the screen.

Chances are, you’ve seen other examples that are built into JavaScript, as well. Ever use the “bind” function on a function?

This is a higher order function built in to JavaScript.

There are plenty of common examples around in our everyday JavaScript code. It’s also easy to write your own.

Build Your Own Bind Function

Prior to the ubiquity of ES5 based JavaScript in browsers, it was common to have to write your own “bind” function. Sure, you could use the one build in to underscore / lodash, but not everyone wanted to do that.

The basic idea is to pass in a function and a context object to represent “this” within that function.

Notice that the “bind” function itself doesn’t do anything more than return another function. Some higher order functions will do some calculations and setup some other code before returning the inner function, and others won’t. The important thing is that the bind function returns another function.

The inner function – the one that gets returned – is where the real magic happens in this case. When this function is returned, it will be assigned to a variable of your choosing. That variable is now pointing to a function that will:

  1. split the current arguments object into a proper array
  2. call the original function (passed as the “fn” parameter), and
  3. apply the “ctx” variable as the context (“this”) for the original function

For example:

This very simple example creates a “foo” function that logs “”. The bind function is used to create a function with an object literal specified as the context. Calling the resulting function will produce the expected “this is a test” console message.

Dynamically Constructing Object Methods

Higher order functions can do a lot of things for JavaScript developers, including reducing the amount of code that you have to write, when you want common behaviors in methods.

In a single page app, for example, you may have some code to render specific views onto the screen when someone clicks a link or a button in a menu. Each of the menu items produces a different view, but all of them must be shown within the same basic layout.

When the app is already up and running, you would render the new view in to the proper part of the layout. But, if the user hits the refresh button on their browser, you want to make sure the layout is in place before putting the view into it.

To manage this, you could have a “showLayout” function that returns a promise. Inside each method that shows a specific view, you can call this method and wait for the promise to resolve.

This works, but it starts to get ugly with all the .then calls. Also, if you need to change how the showLayout method is called, you have to change it in every one of these methods. Maybe that’s not a big deal, maybe it is.

Using higher order functions, though, this code can be simplified. Instead of putting the showLayout().then() code in every single function, use a higher order function to construct that behavior at runtime:

Here, the showLayout code is encapsulated in a single location – the “useLayout” function. This function returns functions that know about the MyApp object and assume they will be attached to that object.

The useLayout function may be less than re-usable outside of the MyApp object, but that’s ok. The purpose was to encapsulate the call to showLayout so that this call can be changed quickly and easily, as needed.

Reducing the amount of code duplication is nice, and it’s also allowed a reduction in the amount of code for each of the methods. They are easier to read and easier to modify.

But what happens if you need to pass additional parameters to the methods on MyApp at runtime? Say, an ID from a router?

Passing Args From The Function Call

If your app needs an ID or other data passed from a router, the useLayout function will have to account for this. It will still need to pass the layout along to the destination function, but it will also need to pass the id or any other parameters along as well.

To do this, modify the function that is returned from useLayout and have it track the arguments (using the …rest operator from ES6). Then, just before fn.apply is called, add the layout object to the args array – prepend or append doesn’t matter.

Now when the method on MyApp accepts a parameter, you will still get the layout and the parameter specified in the call:

The layout is injected as the first parameter to the editThing method implementation, but this is done behind the scenes. When calling editThing, only the ID needs to be specified. The rest of it is handled by the implementation of useLayout.

Put The Fun In Higher Order Functions

Higher order functions are an incredibly powerful aspect of JavaScript. And as common as they are with methods like bind, throttle, debounce, etc, they can be more useful still. With the ability to return functions from functions, reducing code duplication on objects can be achieved fairly easily.

With a combination of functions returning functions and a fair understanding of arguments, “this”, and .apply, you can easily compose objects out of re-useable behaviors with very little code. This means less code to write, less code to maintain, and easier changes to the implementation of the common behaviors.

Categories: Blogs

Guest Post on Retrium on Facilitating Effective Retrospectives

Ben Linders - Wed, 10/21/2015 - 10:26
The Retrium blog published my blog post on facilitating effective agile retrospectives. Continue reading →
Categories: Blogs

Link: It’s Time to Kill Performance Reviews

Learn more about transforming people, process and culture with the Real Agility Program

For many years, folks in the Agile community have been recommending that performance reviews be eliminated from the corporate world.  In 2005 while coaching at Capital One, I remember many discussions on the awfulness of performance reviews.  This was really my first understanding of the depth of culture change required to be Agile.

Now, this concept of eliminating performance reviews is gaining traction outside the Agile environment.  Here is a great LinkedIn Pulse post by Liz Ryan in which she explains in depth about killing performance reviews.

From her article:

A little voice in the back of my brain nagged at me: “Despite your efforts to make them more compassionate and less uncomfortable for everyone, performance reviews are stupid from the get-go, Liz!

“How does one human being get to evaluate another one, when their personalities and perspectives may be radically different?

Consider using other techniques to help with improvement efforts among your staff.  Lean has Kaizen.  Agile has Retrospectives.

Real Agility means that learning is inherent in the culture of an organization.  Performance reviews establish extrinsic motivators for learning… and all the research points to the idea that learning is much more powerful when it is intrinsically motivated.

Consider some other tools that might help your team to work more effectively, while maintaining intrinsic motivation:

Finally, consider that, at least in Scrum, the concept of a self-organizing, self-managing team makes it very difficult to do performance reviews.  It is hard to apportion “blame” or “praise” to individuals.  Each team member is dynamically deciding what to do based on the needs of the team, their own skills, and their interest.  Team members are often collaborating to solve problems and get work done.  Traditional roles with complex RACI definitions are melted away.  Performance reviews are very difficult under these circumstances.

Learn more about our Scrum and Agile training sessions on WorldMindware.comPlease share!

The post Link: It’s Time to Kill Performance Reviews appeared first on Agile Advice.

Categories: Blogs

Why Isn’t Remote Work Common in the Bay Area?

As working remotely especially as a developer has become easier over time, I still see a lack of any real remote work in the Bay area. Despite a very expensive living expenses, office space, and almost zero unemployment among developers, companies rarely seem to consider remote work. I assumed as the demand for developers intensified we’d see a corresponding interest in adding remote workers to teams or even going fully remote, especially with companies like 37 Signals and others paving the way.

The typical Bay area company is looking for on-site talent despite the cost and difficulty of recruiting. With over 20 years of experience now I acknowledge it’s nice to have a team co-located, but certainly not at the expense of having a good team. There are some incidental communication and collaboration benefits of working side by side in a room with a team, but many of these same benefits can be mimicked using technology. Some of the tools that are commonplace, cheap, or free are:

  • Remote Pairing Tools (ScreenHero, tmux, VNC, Skype in a pinch)
  • Hosted Project Trackers (Pivotal, Trello)
  • Source Control with built in Code Reviews (github, gutbucket)
  • Issue Trackers (ZenDesk, Redline)
  • Video Calls (Skype)
  • Shared chat platforms (Slack, HipChat, Campfire)

So why are we still largely living in the working experiences of the 1990s?

Categories: Blogs

RMIT Case Study Update: Net Promoter Scores Soar

Agile Product Owner - Mon, 10/19/2015 - 17:58

RMIT blog At last week’s Scaled Agile Partner Summit, I enjoyed catching up with Em Campbell-Pretty—an SPCT from our  Gold Partner in Australia, Context Matters.

Chatting with her reminded me of my recent visit to Australia. The Context Matters team had invited me to sit in on the session they sponsored at Agile Australia featuring a presentation by RMIT University’s Catherine Haugh (SPC/RTE). Even more fun, I had the opportunity to visit their development site in Melbourne to help celebrate their accomplishments (and to see the biggest Feature kanban I had yet to lay my eyes on!).

Her presentation built on the existing RMIT SAFe Case Study, adding video testimonials from the teams and the ART stakeholders, as well as some new data showing significant improvements in team and stakeholder NPS scores.

For example, in May 2014, before they launched their “Student Administration Agile Release Train” their stakeholders gave them a -90 Net Promoter Score. They launched the train in June, and by April, 2015, their NPS score had increased to +13! Now that’s measurable business results.

The update is definitely worth viewing, especially for those interested in the realm of education administration. You can view the presentation and embedded videos here.

Many thanks to Em and Catherine for keeping the community up to date with their journey.

Stay SAFe,

Categories: Blogs

Agile Board Hacks in 3D

TV Agile - Mon, 10/19/2015 - 17:47
Agile teams use big visual indicators a lot, and often invent little temporary hacks to make what’s really going on in the team visible, or to solve a particular problem. These little hacks exist for a while then fade away as other problems become more pressing to the team. We love these little hacks. This […]
Categories: Blogs

Reinventing Organizations for Agility

Agilitrix - Michael Sahota - Mon, 10/19/2015 - 16:44

Excited to share slides describing the latest evolution of my story (at the Toronto Agile Conference). I talk about how we may dare to create environments where Agile may flourish so we have Organizational Agility. This requires reinventing organizations. My message is really simple: If you want Breakthrough Results Cultivate Culture to Create Places People Love […]

The post Reinventing Organizations for Agility appeared first on - Michael Sahota.

Categories: Blogs

Clean Up Node App Initialization w/ nanit

Derick Bailey - new ThoughtStream - Mon, 10/19/2015 - 13:30

Code organization – both the code in a file, as well as the way the files are organized – is an important aspect of maintenance. It’s no surprise, then, that larger frameworks have very strong opinions on the subject. Unfortunately, though, many smaller frameworks and libraries lack this organizational guidance. This doesn’t mean we should ignore code and file organization – it just means we have to do it ourselves. 

Code cleanup

When it comes to organizing the code of Express apps, I’ve written and recorded extensive materials around this idea… but until recently, I never had a good way to organize application initialization. 

The Problem

When you run the Express generator command-line tool, it gives you a good starting point for an app. There will always be things you want to change, but it sure beats having to create the core structure on your own. 

One of the problems, though, is figuring out where to initialize external services and connection. You’ve got a database? You want to connect to a message queue? Oh, that mail server configuration? Yeah, sure… you just… umm… well…

The app.js file tends to become the garbage collector of initialization code for Express apps. This file shouldn’t be used as the garbage collector of all things initialization. It is meant to setup Express, not the rest of your app.

But even if you take the initialization code out of the app.js file and put it in the bin/www file (which is a better place – more suited to initializing all the parts of the app), you end up with a giant mess of configuring libraries:

Anything and everything is thrown into this file, and it becomes a nightmare that no one wants to touch. Each additional service requires yet one more layer of waiting for another service to start. Sure, this can be cleaned up with promises and other techniques, but I want to get rid of the ugly list of require statements and simplify the entire initialization process.

Enter ‘nanit’ – Node Application Initializers.

Cleaning Up w/ nanit

Nanit is a small library that moves application initialization into a series of small files in specific folder. It allows you to write initialization code focused one thing per file, and provides a single API call to run all of the initializers!

For example, a project might need MongoDB and AWS before the web service starts. To handle this, create an “initializers” folder in the project and add these two files:

When you need to add more initializers – RabbitMQ and other things – you don’t need to update either of these files. Add a new file for each thing that needs to be initialized:

Once all of the initializers are in place, run nanit from the bin/www file:

Now, when the callback for initialize is fired, all of the initializers will be run. Once they have completed, the callback to nanit will be fired. If there’s no error, then the main web server can start!

Clean Code Starts With File Organization

Cleanliness in code improves readability, understanding and maintenance. But cleanliness in code also starts with good file organization. If you can’t figure out what files you need to look at, it’s hard to find the code you need. If you can’t find the code you need, it’s hard to modify the right thing or keep the code clean when adding and changing. 

Application initialization is no different than any other code in this respect. Keep your initializer code clean and organized. Ensure it is all tucked away nice and neat in a folder where it belongs, and use a single API call to execute them when you need them.

Check Out nanit On Github

If you’d like to know more about the API for nanit and how it works, check out the code on the Github repository for nant

I’ve been using nanit in my production applications for a while now, and it has helped me immensely, in keeping my application initialization nice and clean.

Categories: Blogs

Can you help us translating our book?

Ben Linders - Mon, 10/19/2015 - 08:28
The successful book Getting Value out of Agile Retrospectives is being translated to many languages. We are starting up new teams and looking for people who want to help us translating our book to Turkish, Greek or Romanian. Will you help us? Continue reading →
Categories: Blogs

How can Portugal be a Technology and Business Leader on IT thru Agile practices?

The following is an article written based on an interview with Mario Moreira:   

Portuguese Companies have to combat risk aversion and rediscover their Vision of Discovery

This perspective is by Mario Moreira who specializes in Agile.  He was the keynote speaker during the first ScrumDay held in Portugal.  The initiative focuses on Agile and Lean approaches, where it promotes a philosophy of continuous adaptation to accelerate the ability of organizations to respond to change, as did the Portugues in the time of discoveries.  

Author of the book Being Agile: Your Roadmap to Successful Adoption of Agile, a blog on Agile Adoption, broad experience in this area, and a Vice President of Client Engagement at Emergn, he argues that Portuguese companies have to change their risk averse culture and improve adaptation strategies toward constant changes of the market, in order to maximize the opportunities for success in a global competitive landscape. And this is Agile, a concept which includes a set of adaptive concepts and software development methodologies that Mario Moreira came to Lisbon to help publicize and demonstrate at this event where in the morning featured presentations and afternoon joined the participants in a think tank.  

"At one point in history the Portuguese were the greatest explorers in the world and this was because we had the right mindset. We did not just go to India like everyone else," he stresses. "We decided to take some risks, to try something new with the awareness that we could bring great benefits. We need to recover that mindset," adds Mario Moreira."
To get there, we need to circumvent the risk averse culture constraining the Portuguese, because "the market is increasingly competitive and customers are demanding changes every day," said this expert, "considering that companies - in Portugal and the world - must increasingly be prepared to face these changes, trying to adapt to them, and this is where Agile can help."

The method gives flexibility to organizations to adapt to new inputs in the course of projects and promote the involvement of various actors, such as the client. Scrum fits this universe, as a framework for organizing and managing complex processes.  It is an alternative to traditional models, which are guided by a budget, a deadline and a chain of rigid decisions, together with a set of initial assumptions that are maintained throughout the project.

Mario Moreira argues that a market dominated by small and medium enterprises, as the Portuguese, the Agile philosophy makes even more sense because they are smaller companies who feel more pressure to respond on time to market requirements and its customers. They have less room to fail in terms of resources and too much competition.   

The original Portuguese version can be found at

Categories: Blogs

Exploring (potential) data entry errors in the Land Registry data set

Mark Needham - Sun, 10/18/2015 - 12:03

I’ve previously written a couple of blog posts describing the mechanics of analysing the Land Registry data set and I thought it was about time I described some of the queries I’ve been running the discoveries I’ve made.

To recap, the land registry provides a 3GB, 20 million line CSV file containing all the property sales in the UK since 1995.

We’ll be loading and query the data in R using the data.table package:

> library(data.table)
> dt = fread("pp-complete.csv", header = FALSE)
> dt[1:5]
                                       V1     V2               V3       V4 V5
1: {0C7ADEF5-878D-4066-B785-0000003ED74A} 163000 2003-02-21 00:00  UB5 4PJ  T
2: {35F67271-ABD4-40DA-AB09-00000085B9D3} 247500 2005-07-15 00:00 TA19 9DD  D
3: {B20B1C74-E8E1-4137-AB3E-0000011DF342} 320000 2010-09-10 00:00   W4 1DZ  F
4: {7D6B0915-C56B-4275-AF9B-00000156BCE7} 104000 1997-08-27 00:00 NE61 2BH  D
5: {47B60101-B64C-413D-8F60-000002F1692D} 147995 2003-05-02 00:00 PE33 0RU  D
   V6 V7  V8 V9           V10        V11         V12
3:  N  L  58    WHELLOCK ROAD                 LONDON
4:  N  F  17         WESTGATE    MORPETH     MORPETH
                            V13            V14 V15
1:                       EALING GREATER LONDON   A
2:               SOUTH SOMERSET       SOMERSET   A
3:                       EALING GREATER LONDON   A

For our first query we’re going to find the most expensive query sold for each year from 1995 – 2015.

The first thing we’ll need to do is make column ‘V2’ (price) numeric and convert column ‘V3’ (sale date) to data format so we can do date arithmetic on it:

> dt = dt[, V2:= as.numeric(V2)]
> dt = dt[, V3:= as.Date(V3)]

Now let’s write the query:

> dt[, .SD[which.max(V2)], by=year(V3)][order(year)][, .(year,V9,V8,V10,V12,V14,V4,V2)]
    year             V9               V8                   V10            V12            V14       V4       V2
 1: 1995                  THORNETS HOUSE       BUILDER GARDENS    LEATHERHEAD         SURREY KT22 7DE  5610000
 2: 1996                              24             MAIN ROAD MELTON MOWBRAY LEICESTERSHIRE LE14 3SP 17250000
 3: 1997                              42        HYDE PARK GATE         LONDON GREATER LONDON  SW7 5DU  7500000
 4: 1998                              19     NEW BRIDGE STREET         LONDON GREATER LONDON EC4V 6DB 11250000
 6: 2000         UNIT 3     JUNIPER PARK            FENTON WAY       BASILDON          ESSEX SS15 6RZ 12600000
 7: 2001                              19        BABMAES STREET         LONDON GREATER LONDON SW1Y 6HD 24750000
 8: 2002                              72        VINCENT SQUARE         LONDON GREATER LONDON SW1P 2PA  8300000
 9: 2003                              81          ADDISON ROAD         LONDON GREATER LONDON  W14 8ED  9250000
10: 2004                              29   HOLLAND VILLAS ROAD         LONDON GREATER LONDON  W14 8DH  7950000
11: 2005 APARTMENT 1102              199         KNIGHTSBRIDGE         LONDON GREATER LONDON  SW7 1RH 15193950
12: 2006                               1     THORNWOOD GARDENS         LONDON GREATER LONDON   W8 7EA 12400000
13: 2007                              36         CADOGAN PLACE         LONDON GREATER LONDON SW1X 9RX 17000000
14: 2008             50                         CHESTER SQUARE         LONDON GREATER LONDON SW1W 9EA 19750000
15: 2009                       CASA SARA     HEATHERSIDE DRIVE VIRGINIA WATER         SURREY GU25 4JU 13800000
16: 2010                              10   HOLLAND VILLAS ROAD         LONDON GREATER LONDON  W14 8BP 16200000
17: 2011                WHITESTONE HOUSE       WHITESTONE LANE         LONDON GREATER LONDON  NW3 1EA 19250000
18: 2012                              20           THE BOLTONS         LONDON GREATER LONDON SW10 9SU 54959000
19: 2013   APARTMENT 7F              171         KNIGHTSBRIDGE         LONDON GREATER LONDON  SW7 1DW 39000000
20: 2014                  APARTMENT 6, 5          PRINCES GATE         LONDON GREATER LONDON  SW7 1QJ 50000000
21: 2015                              37       BURNSALL STREET         LONDON GREATER LONDON  SW3 3SR 27750000
    year             V9               V8                   V10            V12            V14       V4       V2

The results mostly make sense – the majority of the highest priced properties are around Hyde Park and often somewhere near Knightsbridge which is one of the most expensive places in the country.

There are some odd odds though. e.g. in 1996 the top priced property is in Leicester and sold for just over £17m. I looked it up on the Land Registry site to quickly see what it was subsequently sold for:

2015 10 17 22 06 03

Based on the subsequent prices I think we can safely assume that the initial price is incorrect and should actually have been £17,250.

We can also say the same about our 2000 winner in Juniper Park in Basildon which sold for £12.6 million. If we look at the next sale price after that it’s £172,500 in 2003 so most likely it was sold for £126,000 – only 100 times out!

I wanted to follow this observation and see if I could find other anomalies by comparing adjacent sale prices of properties.

First we’ll create a ‘fullAddress’ field which we’ll use as an identifier for each property. It’s not completely unique but it’s not far away:

> dt = dt[, fullAddress := paste(dt$V8, dt$V9, dt$V10, dt$V11, dt$V12, dt$V13, dt$V4, sep=", ")]
> setkey(dt, fullAddress)
> dt[, .(fullAddress, V2)][1:5]
                                                                                  fullAddress     V2
2:                         'FARRIERS', , FARRIERS CLOSE, WOODLEY, READING, WOKINGHAM, RG5 3DD 790000
4:                            (AKERS), , CHAPEL STREET, EASINGWOLD, YORK, HAMBLETON, YO61 3AE 118000
5:                                       (ANNINGS), , , FARWAY, COLYTON, EAST DEVON, EX24 6DF 150000

Next we’ll add a column to the data table which contains the previous sale price and another column which calculate the difference between the two prices:

> dt[, lag.V2:=c(NA, V2[-.N]), by = fullAddress]
> dt[, V2.diff := V2 - lag.V2]
> dt[!,][1:10][, .(fullAddress, lag.V2, V2, V2.diff)]
                                                                                   fullAddress lag.V2     V2 V2.diff
 1:                                       (ANNINGS), , , FARWAY, COLYTON, EAST DEVON, EX24 6DF 150000 385000  235000
 2:                  (BARBER), , PEACOCK CORNER, MOULTON ST MARY, NORWICH, BROADLAND, NR13 3NF 115500 136000   20500
 3:                      (BELL), , BAWBURGH ROAD, MARLINGFORD, NORWICH, SOUTH NORFOLK, NR9 5AG 128000 300000  172000
 4:                      (BEVERLEY), , DAWNS LANE, ASLOCKTON, NOTTINGHAM, RUSHCLIFFE, NG13 9AD  95000 210000  115000
 6:                        (BOWDERY), , HIGH STREET, MARKINGTON, HARROGATE, HARROGATE, HG3 3NR 140000 198000   58000
 7:                  (BULLOCK), , MOORLAND ROAD, INDIAN QUEENS, ST. COLUMB, RESTORMEL, TR9 6HN  50000  50000       0
 8:                                   (CAWTHRAY), , CAWOOD ROAD, WISTOW, SELBY, SELBY, YO8 3XB 130000 120000  -10000
 9:                                   (CAWTHRAY), , CAWOOD ROAD, WISTOW, SELBY, SELBY, YO8 3XB 120000 155000   35000
10:                                 (COATES), , , BARDSEA, ULVERSTON, SOUTH LAKELAND, LA12 9QT  26000  36000   10000

Let’s find the properties which have the biggest £ value difference in adjacent sales:

> dt[!][order(-abs(V2.diff))][, .(fullAddress, lag.V2, V2, V2.diff)][1:20]
                                                                fullAddress   lag.V2       V2   V2.diff
 1:     , 50, CHESTER SQUARE, LONDON, LONDON, CITY OF WESTMINSTER, SW1W 9EA  1135000 19750000  18615000
 2:         44, , LANSDOWNE ROAD, , LONDON, KENSINGTON AND CHELSEA, W11 2LU  3675000 22000000  18325000
 3:      24, , MAIN ROAD, ASFORDBY VALLEY, MELTON MOWBRAY, MELTON, LE14 3SP 17250000    32500 -17217500
 4:           11, , ORMONDE GATE, , LONDON, KENSINGTON AND CHELSEA, SW3 4EU   250000 16000000  15750000
 5:     2, , HOLLAND VILLAS ROAD, , LONDON, KENSINGTON AND CHELSEA, W14 8BP  8675000 24000000  15325000
 6:          1, , PEMBRIDGE PLACE, , LONDON, KENSINGTON AND CHELSEA, W2 4XB  2340250 17000000  14659750
 7:     10, , CHESTER SQUARE, LONDON, LONDON, CITY OF WESTMINSTER, SW1W 9HH   680000 15000000  14320000
 8:        12, , SOUTH EATON PLACE, , LONDON, CITY OF WESTMINSTER, SW1W 9JA  4250000 18550000  14300000
 9:     32, FLAT 1, HOLLAND PARK, , LONDON, KENSINGTON AND CHELSEA, W11 3TA   420000 14100000  13680000
10:       42, , EGERTON CRESCENT, , LONDON, KENSINGTON AND CHELSEA, SW3 2EB  1125000 14650000  13525000
11:   36, , CADOGAN PLACE, LONDON, LONDON, KENSINGTON AND CHELSEA, SW1X 9RX  3670000 17000000  13330000
12:        22, , ILCHESTER PLACE, , LONDON, KENSINGTON AND CHELSEA, W14 8AA  3350000 16250000  12900000
13:                3, , BOLNEY GATE, , LONDON, CITY OF WESTMINSTER, SW7 1QW  5650000 18250000  12600000
14:        JUNIPER PARK, UNIT 3, FENTON WAY, , BASILDON, BASILDON, SS15 6RZ 12600000   172500 -12427500
15:           10, , WALTON PLACE, , LONDON, KENSINGTON AND CHELSEA, SW3 1RJ   356000 12750000  12394000
16: 84, MAISONETTE C, EATON SQUARE, , LONDON, CITY OF WESTMINSTER, SW1W 9AG  1500000 13400000  11900000
17:          3, , CHESTERFIELD HILL, , LONDON, CITY OF WESTMINSTER, W1J 5BJ   955000 12600000  11645000
18:   39, , ENNISMORE GARDENS, LONDON, LONDON, CITY OF WESTMINSTER, SW7 1AG  3650000 15250000  11600000
19:       76, FLAT 2, EATON SQUARE, , LONDON, CITY OF WESTMINSTER, SW1W 9AW  3500000 15000000  11500000
20:                            85, , AVENUE ROAD, , LONDON, CAMDEN, NW8 6JD   519000 12000000  11481000

Most of the entries here are in Westminster or Hyde Park and don’t look particularly dodgy at first glance. We’d have to drill into the sale dates to confirm.

What you might also have noticed is that our Melton Mowbray and Juniper Park properties both show up and although they don’t have the biggest £ value difference they would probably rank top if calculated the multiplier instead. Let’s give that a try:

> dt[, V2.multiplier := ifelse(V2 > lag.V2, V2 / lag.V2, lag.V2 / V2)]
> dt[!][order(-V2.multiplier)][, .(fullAddress, lag.V2, V2, V2.multiplier)][1:20]
                                                                            fullAddress   lag.V2       V2 V2.multiplier
 1:                  24, , MAIN ROAD, ASFORDBY VALLEY, MELTON MOWBRAY, MELTON, LE14 3SP 17250000    32500     530.76923
 2:                          LEA HAVEN, FLAT 1, CASTLE LANE, , TORQUAY, TORBAY, TQ1 3BE    38000  7537694     198.36037
 4:                    JUNIPER PARK, UNIT 3, FENTON WAY, , BASILDON, BASILDON, SS15 6RZ 12600000   172500      73.04348
 5:                           9, , ROTHSAY GARDENS, BEDFORD, BEDFORD, BEDFORD, MK40 3QA    21000  1490000      70.95238
 6:       22, GROUND FLOOR FLAT, SEA VIEW AVENUE, , PLYMOUTH, CITY OF PLYMOUTH, PL4 8RU    27950  1980000      70.84079
 7: 91A, , TINTERN AVENUE, WESTCLIFF-ON-SEA, WESTCLIFF-ON-SEA, SOUTHEND-ON-SEA, SS0 9QQ    17000  1190000      70.00000
 8:     204C, , SUTTON ROAD, SOUTHEND-ON-SEA, SOUTHEND-ON-SEA, SOUTHEND-ON-SEA, SS2 5ES    18000  1190000      66.11111
 9:            PRIORY COURT, FLAT 3, PRIORY AVENUE, TOTNES, TOTNES, SOUTH HAMS, TQ9 5HS  2226500    34000      65.48529
10:      59, , ST ANNS ROAD, SOUTHEND-ON-SEA, SOUTHEND-ON-SEA, SOUTHEND-ON-SEA, SS2 5AT    18250  1190000      65.20548
11:                                    15, , BREWERY LANE, LEIGH, LEIGH, WIGAN, WN7 2RJ    13500   880000      65.18519
12:                       11, , ORMONDE GATE, , LONDON, KENSINGTON AND CHELSEA, SW3 4EU   250000 16000000      64.00000
13:                         WOODEND, , CANNONGATE ROAD, HYTHE, HYTHE, SHEPWAY, CT21 5PX    19261  1200000      62.30206
14:                 DODLESTON OAKS, , CHURCH ROAD, DODLESTON, CHESTER, CHESTER, CH4 9NG    10000   620000      62.00000
15:         CREEKSIDE, , CURLEW DRIVE, WEST CHARLETON, KINGSBRIDGE, SOUTH HAMS, TQ7 2AA    28000  1700000      60.71429
16:                              20, , BRANCH ROAD, BURNLEY, BURNLEY, BURNLEY, BB11 3AT     9000   540000      60.00000
17:             THE BARN, , LEE WICK LANE, ST OSYTH, CLACTON-ON-SEA, TENDRING, CO16 8ES    10000   600000      60.00000
18:                           11, , OAKWOOD GARDENS, KNAPHILL, WOKING, WOKING, GU21 2RX     6000   357000      59.50000
19:                              23, , OLDHAM ROAD, GRASSCROFT, OLDHAM, OLDHAM, OL4 4HY     8000   475000      59.37500
20:                  THE SUNDAY HOUSE, , WATER LANE, GOLANT, FOWEY, RESTORMEL, PL23 1LF     8000   475000      59.37500

This is much better! Our Melton Mowbray property comes in first by miles and Juniper Park is there in 4th. The rest of the price increases look implausible as well but let’s drill into a couple of them:

> dt[fullAddress == "15, , BREWERY LANE, LEIGH, LEIGH, WIGAN, WN7 2RJ"][, .(fullAddress, V3, V2)]
                                        fullAddress         V3     V2
1: 15, , BREWERY LANE, LEIGH, LEIGH, WIGAN, WN7 2RJ 1995-06-29  13500
2: 15, , BREWERY LANE, LEIGH, LEIGH, WIGAN, WN7 2RJ 2008-03-28 880000

If we look at some other properties on the same road and look at the property’s features it seems more likely that’s meant to say £88,000.

I noticed a similar trend when looking at some of the others on this list but I also realised that the data needs a bit of cleaning up as the ‘fullAddress’ column isn’t uniquely identifying properties e.g. sometimes a property might have a Town/City of ‘London’ and a District of ‘London’ but on another transaction the District could be blank.

On top of that, my strategy of looking for subsequent prices to spot anomalies falls down when trying to explore properties which only have one sale.

So I have a couple of things to look into for now but once I’ve done those it’d be interesting to write an algorithm/program that could predict which transactions are likely to be anomalies.

I can imagine how that might work if I had a labelled training set but I’m not sure if I could do it with an unsupervised algorithm so if you have any pointers let me know.

Categories: Blogs

Digital PM Summit 2015 – An Agile Retrospective – Summary Report

Leading Agile - Mike Cottmeyer - Fri, 10/16/2015 - 15:37

2015 Digital PM SummitBackground

Earlier this week in Philadelphia, 300+ Digital Project Managers gathered for the 2015 Digital PM Summit. This is a two-day event focused on PMs who work in Digital Agencies.

I was fortunate enough to be invited to present at the conference and the workshop I led was called, “A Digital PM Agile Retrospective”. My intent with the session was to gather information that would help provide clarity around the following questions:

  1. To what extent are Digital PMs using Agile practices? Are these practices being employed in a “pure” form or being modified in order to make them more valuable to the Digital context?
  2. Are Agile practices helping Digital PMs (and their organizations) get their work done and deliver value for their clients. If so, which ones and how?
  3. Are Agile practices failing to help Digital PMs (and their organizations) get their work done and deliver value for their clients? If so, which ones and how?
  4. Are the current forms of Agile suited to working in a Digital context, or is there something missing?

The workshop was attended by 50+ participants. My assumption is that by the fact that they self-selected the session, they had some level of interest or degree of familiarity with Agile. While most responded to most questions, the number of responses was not consistent across all questions.

The time available for the session was limited to 45 minutes. Due to the time constraints, the number of questions I was able to ask was limited. It would have been advantageous to have been able to ask more questions and to have included more participants in the survey, but this was an opportunity to engage with a group of them all at once, even if only for a short time. My hope is that the information shared here will be the beginning of a discussion that will continue to evolve over time.

I should state up-front that in my analysis of the results, while I have tried to keep my commentary focused on the numbers, there are places where my own assumptions and opinions do creep in.

During the first part of the session, attendees were asked to respond to certain questions in a “dot voting” method by placing post-its on flip chart sheets organized around the room indicating their response to the question posed. Each question/topic was presented with an explanation intended to ensure all participants were at a point of shared understanding, For example, when I presented the question about self-organizing teams, I offered a definition of the term and asked the participants to use that definition when responding. Following the session I counted up the totals of all responses.

In the second part of the session, participants were also asked to work in small groups to discuss and provide information which specifically addressed the following questions:

  1. What Agile practices work well for your teams?
  2. What Agile practices don’t work well for your teams?
  3. How does Agile fail to meet the needs of working in a Digital context?

Details on these responses are included in this post. You can also find a slide deck of the actual results on slideshare.

Retrospective Results


Approaches to Managing Work Method Response Percentage Waterfall 10 20% Agile 5 10% Conscious Hybrid 16 31% Unconscious Hybrid 19 37% Not Sure 1 2%

An interesting thing to note here is that 68% of the participants are using a mix of waterfall and Agile practices. Of those 31% indicated that their mix of waterfall and Agile was a Conscious Hybrid, meaning that it evolved out of first practicing a disciplined form of Agile (like Scrum) and that after introducing Agile, their organization made a conscious decision to move to a blended approach that they determined would be more effective. 37% of the participants indicated that within their organization they practiced an Unconscious Hybrid and that decisions about blending waterfall and Agile were made at the onset of the adoption of Agile for one reason or another, but without having first made an attempt at a disciplined approach to adopting a form of Agile.

In comparing this to the 2015 State of Scrum Report issued by the Scrum Alliance, only 4 % of the respondents indicated that “Scrum or Waterfall Scrum was introduced and integrated into our Waterfall method” but 63% of respondents said they were practicing Scrum and waterfall in the same organization.

Cross-Functional Teams

Participants indicated that the majority of them (70%) were working with teams that could be described as cross-functional. This was defined as teams that are “…comprised of people who collectively have all the skills needed to build the product, and each team member is willing to do more than just their own thing.”

We have those 30 70% We Don’t Have Those 8 19% Not Sure 5 11% Self-Organizing Teams

Teams that are self-organizing were described as teams that are “…empowered to estimate, plan and manage their own work in whatever way they feel makes the most sense for them as a group.” I was pleasantly surprised to see that 48% of the respondents indicated that they had self-organizing teams in place.

We have those 20 48% We Don’t Have Those 19 45% Not Sure 3 7% Daily Standup

A daily standup meeting was defined as an event in which the following are true:

  • Teams meet once each business day for not more than 15 minutes.
  • The focus of this event is for the team to sync up and plan their work for the day.
  • This is NOT a status meeting for a PM/SM/PO/Manager.
We have those 15 37% We Don’t Have Those 26 63%

What is interesting here is that if only 10% of the respondents are using Agile, that means there are another 27% who are using a hybrid method, but have found that Daily Standups are valuable in that way of working.

One interesting question raised during this portion of the session was (paraphrased) “What if you do a Daily Standup, but only during certain parts of the project?” This highlights something I had concerns about but did not have time to truly test out in the session. If an organization is using an Agile practice like Scrum, in a disciplined way, then they are having Daily Scrums (or Daily Standups) every working day. Not having them everyday would indicate that either they had not been trained properly (or learned on their own) why we do Daily Scrums every day, or that the team did not see the value in maintaining that ceremony. In my experience working with teams, that latter is normally an indicator of a poor understanding of Scrum or poor implementation of the practices.

For example, some teams decide doing them everyday is wasteful because things don’t change that much day to day. This is usually an indicator that the work has not been broken down into small enough pieces for incremental progress to be made each day.

Definition of Done

One of the most important factors in making Agile work is having a clearly defined definition of done. This is something that should be documented and understood across the teams and business. Ideally, the definition of done and definition of potentially shippable are the same, but in some organizations this is not possible. When they are not the same, the clarification of both becomes even more critical.

For example, if a team doing two-week Sprints has a definition of “done” that actually means, ready for the offshore three-week manual integration testing, then done is not equal to potentially shippable. Everyone on the team and the business has to understand this and prepare for the fact that technical debt may come back two Sprints down the road for work we are declaring done when we show it to stakeholders in the Sprint Review. From a strict sense, this is not ideal, but it is a reality in some cases.

The bottom line, and this may be even more relevant for the digital space, is that if you do not have a definition of done that is clearly understood by the organization and the client, you are unprepared for the risks that come with it. This risk may be from technical debt that comes back to haunt you or from clients who are “unhappy” and want free work from you to make things right. Unfortunately, 76% of the respondents indicated they did not have a definition of done.

We have that 10 24% We Don’t Have That 32 76% Potentially Shippable Work

Only 29% of the respondents stated that the work their teams do in iterations results in potentially shippable work. This may occur for a variety of reasons including teams comprised of silos of expertise who deliver to other silos, teams which do not understand their capacity and cannot plan effectively, or frequent interruptions from stakeholders trying to push work into a Sprint after planning is complete. 71% of the respondents in the room are working with teams that are not reaching a potentially shippable state at the end of the iteration. Given the importance of this to Agile in general, it is a fairly concerning number, but it does seem aligned with the response to the question about the definition of done.

Yes 12 29% No 19 45% We don’t work in iterations 11 26% Retrospectives

45% of the participants practice retrospectives, 55% do not. While that may simply indicate a preference for a traditional Project Review or Post Mortem at the end of a project, it may also mean that 55% of the teams are not taking the time to meet and reflect on how to work better together. Regardless of whether they are practicing waterfall, some form of Agile, or a hybrid approach, this is a very concerning number.

We do those 19 45% We don’t do those 23 55% Results of Group Work

The Good

When asked what Agile practices worked well for their teams, the participants came up with the following list:

  • Daily Scum
  • Breaking things into Sprints
  • Time boxes – predictable work and commitments
  • Quick QA
  • Clients like the backlog
  • Good for team focus, manageable pieces
  • Prioritize work daily
  • Sprint planning – people actively engage – collaborate within the team
  • Regular work schedule, people show up
  • Weight off of PM “control”
  • Demos to show progress and keep the client engaged
  • Shippable work
  • Self-organizing has created leaders
  • Under promising and over delivering
  • More retrospectives, more learning and process iteration and continuous feedback
  • Learning from the end of the sprint helps the team improve as they go
  • Cross Team Communication
  • Scrum improves issue resolution
  • More frequent feedback highlights new scope

Some of these responses (like Shippable work and Weight off PM “control”) seem to indicate a sound practice of Agile, or understanding of the value it can provide. Others, like “Under promising and over delivering” point towards a lack of clarity on how Agile practices like Scrum are designed to work.

The Bad

When asked what Agile practices do not work well for their teams, the participants came up with the following:

  • Daily Scrums don’t last 15 minutes – too many tangents – more of org. stats and just one more meeting to deal with
  • More stress on teams
  • Some want traditional direction
  • Takes “longer”
  • Agree to do more than can be accomplished
  • Developers/Clients don’t understand
  • Don’t know when you will be done
  • Hard to sell clients on the true benefits of Agile
  • Learning curve, adaptation
  • Difficult to know where we are
  • Manage expectations/manage budgets
  • UX Research – where does it fit
  • Learning curve – not everyone is on the same page
  • Keeping scrum short with large teams
  • No Product Ownership
  • Using a Scrum Board
  • Backlog Management
  • Estimation
  • User Stories

This list is not out of the norm with teams and organizations (Digital or not) that are trying to adopt an Agile process, especially Scrum. But it does indicate that something is amiss with the actual disciplined practice. It is possible that in the organizations where these problems are present, a remedy might be as simple as training or coaching. But it is also possible that the types of relationships Digital Agencies have historically had with their clients makes resolving many of these issues more complicated and requires further adjustment to an out of the box model of something like Scrum.

The Ugly

When asked how Agile failed to meet the needs of working in a digital context, the participants came up with the following list:

  • UX-Research doesn’t fit
  • Requirements gathering
  • Digital teams aren’t fully dedicated to one project
  • Need for certitude
  • Client Comfort
  • Need to educate the client
  • Service vs. Product
  • How to Sell It
  • Time spent in meetings is expensive
  • Getting buy-in with a fixed budget
  • Where does the bid process/proposal fit in

In many ways, this list echoes what is offered above and indicates that there may be either a poor understanding of how Agile (or Scrum) is designed to work or simply a poor practice of the chosen approach.

Following the session I had a discussion with one participant who initially expressed a concern over how to fit the research UX has to do into the context of Scrum. In walking through how they had resolved it, however, what he explained was a completely reasonable and Agile way of handling it. There was a concern that perhaps they were not doing it “right”. In considering all the information that was provided by the participants of the session, I believe it is important to keep this anecdote in mind. In some cases, yes, Agile practices are being misused and not delivering value. In some cases, there is a perception that Agile is being practiced in a disciplined manner even when it is not. The other side of that coin however, is that in some cases the practices in play are either Agile or complimentary to an Agile approach, but there is a perception that it is not being done “the right way”.

Wrapping Up

While my goal with this session was to gather information that would help provide insight on whether or not current Agile practices were helping with Digital work, the results do not give a clear answer to that question. What does seem to be highly likely though is that within the Digital context, there may be gaps in the understanding and practices of Agile which results in challenges for those trying to implement. Because so many Digital Agencies need to maintain the capabilities necessary for both Agile and Waterfall to meet the needs of their clients, this may be understandable as an accepted risk.

My two biggest questions coming out of this are:

1. How do we get more Digital Agencies (Agile or not) to begin doing  Retrospectives on a regular basis.

2. What can be done to help more Digital Agencies who are using a hybrid to move to a Conscious Hybrid rather than an Unconscious Hybrid.

The post Digital PM Summit 2015 – An Agile Retrospective – Summary Report appeared first on LeadingAgile.

Categories: Blogs

The Daily Goal

Learn more about transforming people, process and culture with the Real Agility Program

When my Scrum team first proposed trying mobbing I wasn’t sure what to expect. No one on the team (including myself) was an expert. I reserved judgment and watched a few sprints. I stayed silent when the same team decided to skip the tasking out portion of planning and simply pulled in enough stories to fulfill their Sprint goal.

After a couple of sprints it became obvious that there were a number of pros; the team was engaged and aligned. They responded as a consistent, unified voice at Sprint Review and Retro. Planning went a lot faster as the team no longer wrote out all their tasks and didn’t have to copy all of them into Jira.

In particular, the Daily Standup’s usual agenda of “what did you do yesterday? what are you doing today? what are you doing tomorrow?” became redundant. And this had me thinking; ‘maybe the team didn’t need a stand up anymore? What’s the point?”

Then, one of the team members introduced me to the concept of the daily goal and I watched as he walked the team thru it. I thought this made a lot of sense and so did the team. We kept up the practice. Some days the team would forget about it or be too tired to bother. I noticed on those days the team wouldn’t be as clear on what they were working on or how to align on a particular challenge. I also noticed that the Stand Up the next day would be more fragmented and meander a bit. They would forget to communicate to one another and look at me as their Scrum Master expectedly, wanting me to drive it.

I started to coach the team back to their daily goal practice and reminded them this Stand Up was for them to align on the work ahead for the day. This became more important as the team divided up into mini mobs or pairs and were no longer one big mob.

I find the Daily Goal useful for a number of reasons. Instead of tasking out the work a week in advance, they decide how to approach the work on a daily basis that takes into account any day to day changes that have happened. Planning goes a lot faster now that we’re not tasking out all the work in advance. The team stays focused on a daily basis as opposed to at just Planning. They write their daily goal on their Scrum Board making it visible to anyone on the floor what their focus is for the day. Even better, the daily stand up as renewed purpose and the dialogue is more interactive.

Here are some examples of our Daily Goals:

  • Refactor Story 1
  • Coordinate with outside team members to align on test strategy
  • Complete happy path for Story 3
  • And sometimes it is as simple as “Complete story 4”

I hope to continue the practice and frankly, it’s fun! Achieving short time goals is motivating and brings a sense of accomplishment. I highly recommend it. Let me know your thoughts and if you’re trying this technique let me know how it’s working out for your team.

[EDITOR’S NOTE: Alexandra Dragon is a first-time contributor to Agile Advice – please welcome her in the comments.  And let us know if you are interested in contributing.]

Learn more about our Scrum and Agile training sessions on WorldMindware.comPlease share!

The post The Daily Goal appeared first on Agile Advice.

Categories: Blogs

Discovering the Inner Merton

Evolving Excellence - Thu, 10/15/2015 - 11:16

If you are too obsessed with success, you will forget to live. If you have learned only how to be a success, your life has probably been wasted.
― Thomas Merton, Love and Living

Sometimes there are dots just waiting to be connected...

thomas-mertonI was rather surprised when Pope Francis mentioned Thomas Merton in his address to Congress a couple weeks ago.  I have learned a lot about Merton over the last decade while on a random intellectual quest that has included other seemingly unrelated modern day folks like Hernando de Soto and Mario Vargas Llosa – a Nobel prize winner who I happened to meet many years ago.  Merton's Thoughts in Solitude is one of my favorite books.

More on Thomas Merton in a bit. First some background.

People close to me know that for over two decades I’ve had an annual goal to “do or learn something radically different.” From this I’ve learned to windsurf and dive, ran a full marathon, rebuilt a ’73 Triumph Spitfire (which, admittedly, is like working on a lawnmower…), and skied five different countries over six consecutive days.

In the mid-90s I taught myself HTML programming which turned into various projects that eventually helped create Gemba Academy. As I’ve become older the annual projects have become less physical and more intellectual, including a year-long immersion into Buddhism, with a trip to Bhutan.  Just one of the 65 countries I have been to.  Go and see... and learn.

Perhaps to assuage the concerns of some family members who were concerned about that particular intellectual odyssey, this year’s goal is a deep dive into Biblical history. Not the stories and history IN the Bible, but a secular investigation of the history OF the Bible. I’ve read probably a dozen books written by respected scholars - from multiple perspectives since the historical accounts are far from settled.

What an unexpectedly fascinating journey! Humor me for a couple paragraphs while I expose my inner geek.

There are over 200,000 variants among 5,700 ancient Greek Biblical manuscripts alone, not even counting translation issues derived from them, created by the copying processes of amateur and professional scribes that were in some cases an attempt to please their benefactors and in others just plain sloppy. Most are minor and fairly inconsequential, but some aren't, for example the last twelve verses of Mark and John 7:53-8:12 which are not found in any of the oldest manuscripts and are now assumed by scholars to have been added by scribes.

Compounding the intentional and unintentional copy and translation errors was the process of deciding what went into the Bible. From hundreds of potential texts, through lists developed by high profile folks including a disingenuous ship merchant in the second century (a great story itself), to the synod of Hippo and councils of Carthage, Nicaea, and Rome in the fourth century where in some cases the politics of church control outweighed what was effectively an exercise in hindsight called the five guidelines of canonicity.

Just when things seem settled, for better or for worse, there were the discoveries of the Muratorian fragment in the Vatican archives in 1740, the Nag Hammadi texts in 1945, and the Dead Sea scrolls in 1947 to both confirm and throw doubts on some of those early decisions.

History, perhaps especially religious history, has a way of being filled with more intrigue and drama than any novel written by even the best writer. Without getting into off-topic details, I will say that this year's quest has actually reinforced my own faith.  Finding errors, and especially the process to understand the source of errors, can create authenticity.

So let’s get back to Thomas Merton and the interesting connections between the dots – yes, eventually including Lean.

Thomas Merton and Dalai LamaI first came across Thomas Merton during my deep dive into Buddhism a few years back. I was surprised to discover a large number of Christian scholars and Catholic priests, like Merton, who openly embraced components of Buddhism. Merton went further than most, with deep study into the Zen tradition, which he discussed in Zen and the Birds of Appetite, as well as a book he co-authored with none other than the Dalai Lama, The Way of Chuang Tzu.

At the core of Merton’s interest was his belief that most Christian traditions had become so focused on ritual and dogma that they had forgotten about the quest for understanding and a true personal relationship with the ultimate source of that knowledge.

He embraced, both in his writing and his own spiritual journey, the fundamental Buddhist concept that there is no single, perfect path, and that each of us has to learn and understand ourselves before creating our own unique journey.  That does conflict with many Christian and especially the Catholic traditions.  But, as we'll soon see, not all of them.

Hence why it was remarkable that Pope Francis lauded Thomas Merton, a Catholic priest that believed in multiple paths to salvation and once said "I see no contradiction between Buddhism and Christianity. I intend to become as good a Buddhist as I can."  Wow.

Allow me to add another dot. For most of the current era the Gnostics were more commonly known as “those crazy Gnostics.” Strange rituals and beliefs, loosely associated with Christianity, their scriptures quickly discarded by the early Vatican councils and not included in the traditional Biblical canon. Then the Nag Hammadi texts were found in 1945 and fully translated a couple decades later (interestingly with financial support from none other than the noted psychiatrist, Carl Jung), suddenly supporting some of earliest known manuscripts that had been deemed too controversial by the early church.

Contrary to the prior perception of Gnostics, these newly-discovered texts described a spiritual belief system far more aligned with traditional Christianity than originally thought, with one of the major differences being they did not insist that everyone must believe as they did.

To the Gnostics, faith is an inner experience, still generally aligned with classical Christianity, but one that does not have to be the same for everyone, and is grounded in individual investigation, introspection, reflection, and circumstance - as opposed to ritual. It is a dynamic process of seeking truth, not arrogantly declaring it.  Starting to sound familiar?

And this, finally, becomes the tie back to Lean.

Almost daily I come across articles, questions, and comments about the “true path to Lean” – and the supposedly correct sequence of tools performed in the singularly correct fashion to accomplish a transformation. That misconception is what, along with not understanding the respect for humanity pillar, causes most Lean failures.

Like the spiritual journeys of Buddhists, Gnostics, and many Christians like Thomas Merton, when on a Lean journey you must first seek to learn and understand, contemplate and reflect on how it applies to your circumstance and beliefs, and only then apply what makes sense to create your own path.

Learn about Lean, create a relationship with the underlying knowledge of Lean, and apply it based on circumstance, data, and beliefs. Don’t simply accept what others say or copy what others do.

Living is the constant adjustment of thought to life and life to thought in such a way that we are always growing, always experiencing new things in the old and old things in the new. Thus life is always new.
― Thomas Merton, Thoughts in Solitude

Learn and experience new things.  Live.  Create dots.  If you create a lot of dots, sometimes interesting connections can be made.

Categories: Blogs

Waterfall is just a strawman?

Is waterfall just a strawman used by Agile evangelists?

"strawman" implies that waterfall is not a real problem, that it no longer exists in the modern world of software development.

I don't really know how to respond to this except to suggest to look a little closer at how most IT organisations actually work.

But perhaps it's just a problem for "enterprises" and not "startups" and Silicon Valley?

There are two extremes that lightweight methodologies were a counter for:
  1. Waterfall
  2. Code and fix
Enterprises tend to have the first problem; startups tend to have the latter.

Neither waterfall nor "code and fix" are strawmen within enterprises as they typically have examples of both.

Waterfall is not a strawman but is probably not the problem you're facing as a startup.  That problem is either code and fix and/or the so-called "engineering-driven company" which is why Lean Startup was invented.
Categories: Blogs

Second Edition of My PMI-ACP Book is Now Available

Leading Answers - Mike Griffiths - Thu, 10/15/2015 - 02:36
Even though several people reported receiving their books last week, Canada Post takes a little longer, but today I got my first look at the second edition of my PMI-ACP Prep book. There is more coverage of Lean, Kanban and... Mike Griffiths
Categories: Blogs

Agile Talent Management

Leading Answers - Mike Griffiths - Thu, 10/15/2015 - 02:27
Talent Management is the science of human resource planning to improve business value. It includes the activities of recruiting, retaining, developing and rewarding people along with workforce planning. From an agile perspective much of what we do on agile projects... Mike Griffiths
Categories: Blogs