Skip to content

Feed aggregator

Neo4j: LOAD CSV – The sneaky null character

Mark Needham - Sat, 10/18/2014 - 12:49

I spent some time earlier in the week trying to import a CSV file extracted from Hadoop into Neo4j using Cypher’s LOAD CSV command and initially struggled due to some rogue characters.

The CSV file looked like this:

$ cat foo.csv
foo,bar,baz
1,2,3

I wrote the following LOAD CSV query to extract some of the fields and compare others:

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, line.bar, line.bar = "2"
==> +--------------------------------------+
==> | line.foo | line.bar | line.bar = "2" |
==> +--------------------------------------+
==> | <null>   | "2"     | false          |
==> +--------------------------------------+
==> 1 row

I had expect to see a “1” in the first column and a ‘true’ in the third column, neither of which happened.

I initially didn’t have a text editor with hexcode mode available so I tried checking the length of the entry in the ‘bar’ field:

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, line.bar, line.bar = "2", length(line.bar)
==> +---------------------------------------------------------+
==> | line.foo | line.bar | line.bar = "2" | length(line.bar) |
==> +---------------------------------------------------------+
==> | <null>   | "2"     | false          | 2                |
==> +---------------------------------------------------------+
==> 1 row

The length of that value is 2 when we’d expect it to be 1 given it’s a single character.

I tried trimming the field to see if that made any difference…

load csv with headers from "file:/Users/markneedham/Downloads/foo.csv" AS line
RETURN line.foo, trim(line.bar), trim(line.bar) = "2", length(line.bar)
==> +---------------------------------------------------------------------+
==> | line.foo | trim(line.bar) | trim(line.bar) = "2" | length(line.bar) |
==> +---------------------------------------------------------------------+
==> | <null>   | "2"            | true                 | 2                |
==> +---------------------------------------------------------------------+
==> 1 row

…and it did! I thought there was probably a trailing whitespace character after the “2” which trim had removed and that ‘foo’ column in the header row had the same issue.

I was able to see that this was the case by extracting the JSON dump of the query via the Neo4j browser:

{  
   "table":{  
      "_response":{  
         "columns":[  
            "line"
         ],
         "data":[  
            {  
               "row":[  
                  {  
                     "foo\u0000":"1\u0000",
                     "bar":"2\u0000",
                     "baz":"3"
                  }
               ],
               "graph":{  
                  "nodes":[  
 
                  ],
                  "relationships":[  
 
                  ]
               }
            }
         ],
      ...
}

It turns out there were null characters scattered around the file so I needed to pre process the file to get rid of them:

$ tr < foo.csv -d '\000' > bar.csv

Now if we process bar.csv it’s a much smoother process:

load csv with headers from "file:/Users/markneedham/Downloads/bar.csv" AS line
RETURN line.foo, line.bar, line.bar = "2", length(line.bar)
==> +---------------------------------------------------------+
==> | line.foo | line.bar | line.bar = "2" | length(line.bar) |
==> +---------------------------------------------------------+
==> | "1"      | "2"      | true           | 1                |
==> +---------------------------------------------------------+
==> 1 row

Note to self: don’t expect data to be clean, inspect it first!

Categories: Blogs

Make Resolving Impediments a Habit

Agile Tools - Sat, 10/18/2014 - 08:43

David_City_Rey_grocery_store

I’ve talked a lot about the rigors of finding and resolving impediments for a team. There is one thing that I have left out: the people part. I learned this lesson at a conference that I was co-hosting. I had been in charge of setting up the food for the event. Getting the caterer, arranging for meals, that sort of thing. As you might imagine, it’s a pretty tough job to satisfy the dietary requirements for a very large group of people. I learned of whole categories of food allergies and needs that I had never even imagined existed! There was a little bit of every imaginable combination. Everything from your standard gluten free diet all the way to lacto-ovo-pesca-leguma-veganitarians (OK, I made that last one up).

We did the best we could to satisfy the needs of most folks and pretty much called it good. About halfway through the conference, someone mentioned that there was no food that fit in their dietary needs. I expressed my sympathies and referred them to the grocery store around the corner. I really didn’t give it another thought. A few minutes later, I heard the same complaint made by the same person, but this time the reply was, “I’ll get you something, I’ll be right back” And that person ran off to the store themselves. Wow!

I was humbled. The difference between my reaction and theirs was the difference between someone who could empathize and take action to resolve the impediment, and someone who couldn’t. The lesson I learned that day was that in order to help people with their impediments, it takes empathy. You have to feel their need, and be receptive to doing anything to help them out. I think I had missed that before. That willingness to serve the needs of others is really important. All the strategies in the world for resolving impediments won’t help anyone if you don’t care.


Filed under: Agile, impediment Tagged: Impediments, leadership
Categories: Blogs

R: Linear models with the lm function, NA values and Collinearity

Mark Needham - Sat, 10/18/2014 - 08:35

In my continued playing around with R I’ve sometimes noticed ‘NA’ values in the linear regression models I created but hadn’t really thought about what that meant.

On the advice of Peter Huber I recently started working my way through Coursera’s Regression Models which has a whole slide explaining its meaning:

2014 10 17 06 21 07

So in this case ‘z’ doesn’t help us in predicting Fertility since it doesn’t give us any more information that we can’t already get from ‘Agriculture’ and ‘Education’.

Although in this case we know why ‘z’ doesn’t have a coefficient sometimes it may not be clear which other variable the NA one is highly correlated with.

Multicollinearity (also collinearity) is a statistical phenomenon in which two or more predictor variables in a multiple regression model are highly correlated, meaning that one can be linearly predicted from the others with a non-trivial degree of accuracy.

In that situation we can make use of the alias function to explain the collinearity as suggested in this StackOverflow post:

library(datasets); data(swiss); require(stats); require(graphics)
z <- swiss$Agriculture + swiss$Education
fit = lm(Fertility ~ . + z, data = swiss)
> alias(fit)
Model :
Fertility ~ Agriculture + Examination + Education + Catholic + 
    Infant.Mortality + z
 
Complete :
  (Intercept) Agriculture Examination Education Catholic Infant.Mortality
z 0           1           0           1         0        0

In this case we can see that ‘z’ is highly correlated with both Agriculture and Education which makes sense given its the sum of those two variables.

When we notice that there’s an NA coefficient in our model we can choose to exclude that variable and the model will still have the same coefficients as before:

> require(dplyr)
> summary(lm(Fertility ~ . + z, data = swiss))$coefficients
                   Estimate  Std. Error   t value     Pr(>|t|)
(Intercept)      66.9151817 10.70603759  6.250229 1.906051e-07
Agriculture      -0.1721140  0.07030392 -2.448142 1.872715e-02
Examination      -0.2580082  0.25387820 -1.016268 3.154617e-01
Education        -0.8709401  0.18302860 -4.758492 2.430605e-05
Catholic          0.1041153  0.03525785  2.952969 5.190079e-03
Infant.Mortality  1.0770481  0.38171965  2.821568 7.335715e-03
> summary(lm(Fertility ~ ., data = swiss))$coefficients
                   Estimate  Std. Error   t value     Pr(>|t|)
(Intercept)      66.9151817 10.70603759  6.250229 1.906051e-07
Agriculture      -0.1721140  0.07030392 -2.448142 1.872715e-02
Examination      -0.2580082  0.25387820 -1.016268 3.154617e-01
Education        -0.8709401  0.18302860 -4.758492 2.430605e-05
Catholic          0.1041153  0.03525785  2.952969 5.190079e-03
Infant.Mortality  1.0770481  0.38171965  2.821568 7.335715e-03

If we call alias now we won’t see any output:

> alias(lm(Fertility ~ ., data = swiss))
Model :
Fertility ~ Agriculture + Examination + Education + Catholic + 
    Infant.Mortality
Categories: Blogs

What projects are suitable for Agile?

At Agile Tour Sydney 2013, I participated in an Open Space session triggered by:
What projects are suitable for Agile?This is my response.

To start, we should determine how we would assess our answer.  This leads to two more questions:
  1. What does it mean for an approach to be "suitable" for a project?
  2. What do you mean when you say "Agile"?
What does it mean for an approach to be "suitable" for a project?I'll say that an approach is suitable for a project if, compared to alternate approaches, it provides a higher likelihood of project success.
Which leads to...
What defines project success?The typical response might be "on time, on budget, on scope".  I'll say that this response is incorrect.
People don't fund projects in order to get something "on time, on budget, on scope"; they fund projects to get desired overall outcomes.  If I can get a better desired overall outcome that happens to not be on time, on budget, on scope, why would I consider that a failure?
But what about impact on other projects if this project is late, uses up too much available capital, doesn't complete dependent capabilities, etc.?  This is a good question and leads to...
Project outcomes can only considered successful in the context of overall organisational outcomes.
So if overall organisational outcomes are improved, it still doesn't matter if a project is "on time, on budget, on scope" per se.
This way of defining success is a typical difference in fundamental assumptions for non-Agile vs Agile approaches.  And this brings us to the second question...What do you mean you say "Agile"?I've blogged about what people mean when that say "Agile" before.
The short version is that when I say "Agile", I'm referring to Agile as a doctrine or culture, that is a set of fundamental principles and assumptions that guide behaviour.  This doctrine / culture is associated with a particular set of practices, but those practices are secondary.
The principles I consider primary are:
  1. Reduce the distance between problems and problem-solvers
  2. Validate every step
  3. Take smaller steps
  4. Improve as you go
So the question becomes, for what kind of projects are these principles unsuitable?
When someone asks the question "What projects are suitable for Agile?", I think they are inadvertently asking the question "What projects are more difficult to apply Agile principles?".  I can imagine that a particular type of project, with a particular level of team and organisational maturity, would find it so difficult to apply some or all Agile principles that the end result is unsuitability, that is, a lower likelihood of providing desired overall outcomes.
To sum up...My answer to the question: What projects are suitable for Agile?Projects where your team and organisation have the skill, maturity, and support, to apply Agile principles to successfully deliver desired overall outcomes.
Categories: Blogs

How to deploy a Docker application into production on Amazon AWS

Xebia Blog - Fri, 10/17/2014 - 18:00

Docker reached production status a few months ago. But having the container technology alone is not enough. You need a complete platform infrastructure before you can deploy your docker application in production. Amazon AWS offers exactly that: a production quality platform that offers capacity provisioning, load balancing, scaling, and application health monitoring for Docker applications.

In this blog, you will learn how to deploy a Docker application to production in five easy steps.

For demonstration purposes, you are going to use the node.js application that was build for CloudFoundry and used to demonstrate Deis in a previous post. A truly useful app of which the sources are available on github.

1. Create a Dockerfile

First thing you need to do is to create a Dockerfile to create an image. This is quite simple: you install the node.js and npm packages, copy the source files and install the javascript modules.

# DOCKER-VERSION 1.0
FROM    ubuntu:latest
#
# Install nodejs npm
#
RUN apt-get update
RUN apt-get install -y nodejs npm
#
# add application sources
#
COPY . /app
RUN cd /app; npm install
#
# Expose the default port
#
EXPOSE  5000
#
# Start command
#
CMD ["nodejs", "/app/web.js"]
2. Test your docker application

Now you can create the Docker image and test it.

$ docker build -t sample-nodejs-cf .
$ docker run -d -p 5000:5000 sample-nodejs-cf

Point your browser at http://localhost:5000, click the 'start' button and Presto!

3. Zip the sources

Now you know that the instance works, you zip the source files. The image will be build on Amazon AWS based on your Dockerfile.

$ zip -r /tmp/sample-nodejs-cf-srcs.zip .
4. Deploy Docker application to Amazon AWS

Now you install and configure the amazon AWS command line interface (CLI) and deploy the docker source files to elastic beanstalk.  You can do this all manually, but here you use the script deploy-to-aws.sh that I created.

$ deploy-to-aws.sh \
         sample-nodejs-cf \
         /tmp/sample-nodejs-cf-srcs.zip \
         demo-env

After about 8-10 minutes your application is running. The output should look like this..

INFO: creating application sample-nodejs-cf
INFO: Creating environment demo-env for sample-nodejs-cf
INFO: Uploading sample-nodejs-cf-srcs.zip for sample-nodejs-cf, version 1412948762.
upload: ./sample-nodejs-cf-srcs.zip to s3://elasticbeanstalk-us-east-1-233211978703/1412948762-sample-nodejs-cf-srcs.zip
INFO: Creating version 1412948762 of application sample-nodejs-cf
INFO: demo-env in status Launching, waiting to get to Ready..
...
INFO: demo-env in status Launching, waiting to get to Ready..
INFO: Updating environment demo-env with version 1412948762 of sample-nodejs-cf
INFO: demo-env in status Updating, waiting to get to Ready..
...
INFO: demo-env in status Updating, waiting to get to Ready..
INFO: Version 1412948762 of sample-nodejs-cf deployed in environment
INFO: current status is Ready, goto http://demo-env-vm2tqi3qk4.elasticbeanstalk.com
5. Test your Docker application on the internet!

Your application is now available on the Internet. Browse to the designated URL and click on start. When you increase the number of instances at Amazon, they will appear in the application. When you deploy a new version of the application, you can observe how new versions of the application  appear without any errors on the client application.

For more information, goto Amazon Elastic Beanstalk adds Docker support. and Dockerizing a Node.js Web App.

Categories: Companies

Then When Given

Xebia Blog - Fri, 10/17/2014 - 15:50

People who practice ATDD all know how frustrating it can be to write automated examples. Especially when you get stuck overthinking the preconditions of examples.

This post describes an alternative approach to writing acceptance tests: write them backwards!

Imagine that you are building the very first online phone book. We need to define an acceptance tests for viewing the location of a florist. Using the Given-When-Then formula you would probably describe the behaviour like this.


Given I am on the online phone book homepage
When I type “Florist” in the business type field
And I click …
...

Most of the time you will be discussing and describing details that have nothing to do with viewing the location of a florist. To avoid this, write down the Then clause of the formula first.
Make sure the Then clause contains an observable result.


Then I see the location “Floriststreet 123”

Next, we will try to answer the following question: What caused the Then clause?
Make sure the Then clause contains an actor and an action.


When I click “View map” of the search result
Then I see the location “Floriststreet 123”

The last thing we will need to do is answer the following question: Why can I perform that action?
Make sure the Given clause contains a simple precondition.


Given I see a search result for florist “Floral Designs”
When I click “View map” of the search result
Then I see the location “Floriststreet 123”

You might have noticed that I left out certain parts where the user goes to the homepage and selects UI objects in the search area. It was not worth mentioning in the Given-When-Then formula. Too much details make us lose focus of what we really want to check. The essence of this acceptance test is clicking on the link "View map" and exposing the location to the user.

Try it a couple of times and let me know how it went.

Categories: Companies

Partnerships & Possibilities, Episode 2, Season 6

Partnership & Possibilities - Diana Larsen - Fri, 10/17/2014 - 15:00

Partnership & Possibilities: A Podcast on Leadership in Organizations
EPISODE 2: REVISITING INFLUENCE

Photo Credit: Send me adrift. via Compfight cc

How do  you observe yourself or your colleagues influencing each other? What kinds of influence do you see as critical for lasting positive changes?

Leave a comment on this blog or email us at info@futureworksconsulting.com

Summary

[1:40] Sharon is working with the leadership of a large non-profit with an enormous number of volunteers, who do the real work of the organization.

[4:00] Working with volunteers is all about building a sense of community and purpose to motivate people to do what needs to be done – all through “influence”.

[6:15] Power and influence are orthogonal.

[8:05] Compliance and influence are also different things.

[10:20] Motivation comes from within – it doesn’t get applied from outside. You can’t inoculate people with it.

[15:55] The model Sharon’s looking at currently looks at 6 types of influence.

[20:20] Convincing, selling, and so on, is also not influence. And influence will get you more mileage.

[22:23] Benefit must accrue on both sides for change to last – this is real influence.

[24:30] You can give feedback if you can do it with caring and respect. If you don’t care and respect the other person, don’t bother. The same is true of influencing – do I care about this person?

[28:00] An important element of influence is creating an environment that supports what you want to have happen.

 

Categories: Blogs

The Agile Reader – Weekend Edition: 10/17/2014

Scrumology.com - Kane Mar - Fri, 10/17/2014 - 08:53

You can get the Weekend Edition delivered directly to you via email by signing up http://eepurl.com/0ifWn.

The Weekend Edition is a list of some interesting links found on the web to catch up with over the weekend. It is generated automatically, so I can’t vouch for any particular link but I’ve found the results are generally interesting and useful.

  • #IT #Job in #Strongsville, OH: Web Business Analyst – Agile Scrum Master 14-267 at Medical Mutual #Jobs
  • Check out this SCRUM MASTER Overview on YOUTUBE: #scrum #agile
  • RT @FreeScrumEbook: Check out this SCRUM MASTER Overview on YOUTUBE: #scrum #agile
  • How to Plan an Agile Sprint Meeting? – http://t.co/qfwlkKpZi6
  • Agile by McKnight, Scrum by Day is out! Stories via @AgileUniversity @BCSMemberGroups @KristinRunyan
  • Skyhook Wireless is looking for: Agile Project Manager (Scrum Master)
    #job
  • Why Are Scrum Teams Supposed to Be Small? #agile #scrum #development #framework
  • Pic from last nights event: GA Presents at Sydney Agile + Scrum Meetup. See more events at GA: http://t.co/AsofQyj2wd
  • I’m hiring – Scrum Master in Rock Island, IL #Scrummaster #agile
  • PessoALL, está aberto as inscrições para treinamento “Scrum Foundations” dia 22/11 #scrum #agile #adaptworks
  • Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • RT @yochum: Leading Answers – Mike Griffiths: The Economics of Compassion in the New Economy #agile #scrum
  • #jobs4u #jobs Seeking Boston Based Agile Project Leadership / Scrum Master / Product Owner … #projectmanagement
  • #HongKong #Jobs Application Developer, Java, Oracle, Unix, Linux, SQL, Agile, Scrum, Test Driven… #Job #HongKongJobs
  • RT @jobz4pm: #jobs4u #jobs Seeking Boston Based Agile Project Leadership / Scrum Master / Product Owner … #project…
  • Komt er een vierde vraag tijdens de daily standup? Kijk vanavond op #scrum #agile
  • Skyhook Wireless is looking for: Agile Project Manager (Scrum Master)
    #job
  • #Scrum Master With Agile Experience #ScrumJob #TCS #Chennai #Job @sathish_ganesh @vinothselvam F
  • Avoidance of Organizational Dysfunction Leads to Scrum Masters’ Failure – #Agile #Scrum
  • Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • Scrum Methodology, Mountain Goat Software | Scrum, as mentioned w.r.t JetBrains’ issue tracker framework
  • RT @yochum: New Article: Estimate Before, During, and After the Software Project #agile #scrum
  • 32 Scrum master interview questions – #scrum #coaching #agile
  • Do you know what are the characteristics of a great Scrum Master? Check if you have them: #scrum #agile #coaching
  • Video course: Scrum: An Introductory Course To #Agile | Was $99 Now just $24! | by @BrainConcert
  • RT @CodehireJobFeed: Kareo needs a Lead Software Engineer #irvine #angularjs #scrum #Play #Agile #SOAP via @codehire
  • #Accenture is hiring an Agile Methods (Scrum/FDD/XP/Crystal/DSDM) in #Chennai, apply now! #job http://t.co/a4yzUUUK06
  • #Accenture is hiring an Agile Methods (Scrum/FDD/XP/Crystal/DSDM) in #Chennai, apply now! #job http://t.co/F7dE8ijORZ
  • RT @lgoncalves1979: 32 Scrum master interview questions – #scrum #coaching #agile
  • RT @ITJobsInChennai: #Scrum Master With Agile Experience #ScrumJob #TCS #Chennai #Job @sathish_ganesh @vinothselvam…
  • Scrum’s creators seek definitive place for Scrum knowledge #agile #scrum #ITlife #devlife
  • RT @Scrumartikelen: Leuk en duidelijk filmpje waarin het #agile #Manifest eenvoudig wordt toegelicht: #scrum
  • Check out this #job: Agile Methods (Scrum/FDD/XP/Crystal/DSDM) at #Accenture in #Chennai http://t.co/YwiYFna94j
  • Agile Methods (Scrum/FDD/XP/Crystal/DSDM) needed in #Chennai at #Accenture. Apply now! #job http://t.co/s7o7mVW8JC
  • Agile Methods (Scrum/FDD/XP/Crystal/DSDM) needed in #Chennai at #Accenture. Apply now! #job http://t.co/UWN1lqK0zg
  • ☆★☆ JOB ALERT ☆★☆ #Job #Malvern – Project Manager/Scrum Master (AGILE exp REQUIRED) view full details
  • Apply now to work for #Accenture as Agile Methods (Scrum/FDD/XP/Crystal/DSDM)! (#Chennai) #job http://t.co/kcMzdpIQTs
  • Agile Development and Scrum (@ Mood Cafe in Istanbul, Turkey) http://t.co/0YYjKee0mx
  • Bij zoeken we een Software Engineer BI – #Oracle #SQL #SCRUM #Agile
  • Categories: Blogs

    Kanban Litmus Test - Revisited

    The Kanban Litmus Test is our new guidance to help you assess "are we doing Kanban or not?" and to evaluate whether other who claim to be doing have actually reached a stage that would reflect the sort of impact that we saw in early implementations almost a decade ago.

    read more

    Categories: Companies

    Enterprise Kanban: Where to Start?

    For a corporation setting out on a large scale Kanban implementation, there is the inevitable question of, where to start? Typically, clients want to run a pilot on a single service delivery workflow but which one to choose? Firstly, we must find a service delivery workflow that is appropriate for a kanban system. [See the first post in this series on appropriateness of kanban systems]. To do this, we might view the organization through The Kanban Lens in order to identify suitable services. Secondly, we must assess whether this service is a good choice for a place to start Kanban.

    read more

    Categories: Companies

    Kanban: When is it appropriate? (part 1)

    In the Kanban Coaching Professional Masterclass, I teach coaches and those leading Kanban initiatives how to assess the appropriateness of the Kanban Method and the appropriateness of applying a kanban system within an organization. This is the first of a series of blog posts on appropriateness and getting started with an enterprise scale Kanban initiative.

    read more

    Categories: Companies

    Keeping It In the Family

    Agile Tools - Fri, 10/17/2014 - 06:47

    art-child-family-2194-366x550

    I was asked the other day, “Do you use Scrum at home?” It’s not the first time that I’ve been asked this question. The honest answer is: no. Oh, I’ve used bits and pieces here and there. I’ve put together a taskboard to track work on the occasional big household project. I’ve even built a backlog from time to time. But that is about the extent of it. I’ve been married for nearly twenty years – I’m not about to screw it up with Scrum or any other method for that matter.

    You won’t find me standing around with the kids doing a daily standup. There is no weekly planning meeting on my family calendar. And the only retrospective that I do is after getting caught leaving the toilet seat up (“Doh!”). Nope, I’ve got to be honest, my household isn’t very agile.

    You might ask, “Why not?”

    Dang, that’s a really good question. I’m not sure that I have a good answer. Maybe I just want to leave all that stuff at work. But if that were the case, then why do I go home and write this blog? No, that’s not it. Maybe there really has been no structure modelled in my family life before. In fact, the very idea of doing that kind of “work” at home makes me cringe a little bit. I guess I feel like we have things under control. Maybe I don’t even want that control. It’s really hard to say.

    I think there is value in sharing the practical time management techniques that I use at work with my kids. I didn’t hesitate to introduce them to pomodoros when my daughter was struggling to stay focused on her homework. It felt really good to be able to introduce her to a tool that would help her be successful. She loves pomodoros! The kids like all the fooling around that I do with self-experiments around the house (“Hey! Look at Daddy!”). They always want to know what kind of nutty thing Dad is doing this week.

    However, I’ve never felt a compelling need to have any kind of formal family meeting at all. Call me a bit waterfall. I guess when it comes to my family I only want to give them the techniques that they need for the problems they have. I don’t want to burden them with a framework. Got a problem with focus? Use pomodoros. Does the problem seem too large? Break it down into stories. No progress? Try iterating.

    When I can provide a helpful technique that solves their problems (agile or not), I feel like Superman. Seriously folks, there is no better feeling in the world. There is no preaching. I don’t lecture them on the perils of waterfall. To my kids a waterfall is something you ride a log down at Disneyland. I aim to keep it that way as long as possible.

    I guess, in retrospect it’s not such a bad approach for introducing agile practices for anyone, regardless of whether they are in your family or not. In fact, why would you treat a team any differently than your family? Aren’t they just that – your extended family? Can we use this to inform how we approach introducing Agile Practices to our teams?

    Maybe we just introduce them to the tools they need to solve the problem that they have in the moment. Perhaps that’s how we start. That’s how we demonstrate value and earn trust. Not by dumping some framework they must comply with on their heads.

    Hmmm….I think I’ve been doing it wrong.

    Introduce agile practices to your team like you would to your family. Give them only what they need and let them figure out the rest.


    Filed under: Agile, Coaching, Teams Tagged: Agile, family, practices, Scrum
    Categories: Blogs

    The Economics of Compassion in the New Economy

    Leading Answers - Mike Griffiths - Fri, 10/17/2014 - 03:24
    This article is less about agile techniques and more about the people related challenges of today’s agile projects. As work switches from industrial work to knowledge work, companies face a perfect storm of employee engagement and retention issues. On the... Mike Griffiths
    Categories: Blogs

    NeuroAgile Quick Links #5

    Notes from a Tool User - Mark Levison - Thu, 10/16/2014 - 23:46

    Knowing your Myers-Briggs type is almost as common as knowing your credit score – maybe even more so. It’s widely considered to be the most frequently used personality test, but evidence – or, rather, lack thereof – suggests that it’s totally meaningless and organizations should stop using it.

    CEOs get paid too much, according to pretty much everyone in the world. But how much do you think they actually get paid, versus should get paid? Recent research says that, globally, we’re very naive about the actual disparity between what we think is fair and what they collect.

    How much time do you spend in front of an electronic screen every day? Your computer at work, tablet to read on the bus, TV in the evening, phone to just quickly check email or peek in on Facebook… It all adds up, to about 6 or 7 hours a day if you’re average. It’s tough to be bored with so many things to occupy our every free moment. But being bored is important to being creative and productive.

    Children are taught about nutrition and exercise for their bodies, but what about keeping their brain fit and healthy? Barbara Arrowsmith Young, author of “The Woman Who Changed Her Brain,” makes the point that every kid should practice stress reduction and targeted cognitive exercises at school, and it applies just as much to adults too.

    An employee review is supposed to help identify issues and increase employee performance, ultimately increasing productivity for the company. But a study found that companies that use 360 reviews, where colleagues and clients provide the feedback, saw a 10% drop in performance.

    Categories: Blogs

    Agile Architecture: Worse Can Be Better

    Scrum Expert - Thu, 10/16/2014 - 18:33
    This talk provokes you to think about an old question by R. Gabriel “Is Worse Better?”. It demonstrates “how worse can be better” if the focus is on delivering a business value, which is one of the most important software architecture’s property for agile software development. After more than 10 years of agile software development adoption, we have a lot of recommendations regarding agile development processes, agile working habits and agile organizational structure. All these recommendations and principles can help us to work more efficiently, to deliver faster and to build ...
    Categories: Communities

    All Features Implemented does not equal Project Success

    Dear Junior
    Setting goals for agile projects is trickier that setting goals for waterfall projects. As I mentioned in an earlier letter, for waterfall projects it is possible to set the goal in the form of a feature list to be delivered. This approach has several drawbacks - it does not guide the thousands of micro-decisions that are made, it gives no sense of purpose to support the drive or inner motivation, and it gives no guidance for evaluating whether the money, time, and effort was well spent.
    However, although all these problems, and although the approach is not advisable - it is still possible. The project management mindset and tools for waterfall projects are applicable for reporting project status or following up visavi a feature list. It is also possible to evaluate success by checking whether everything on the feature list is implemented.
    Well, I still think it would be better to evaluate whether the project created some value.
    Now, ridiculous as this seems it is still industry standard.
    The CHAOS report 1995 from Standish Group might be one of the most cited reports in system development. According to its statistics only 16% of software projects succeed. In the 2012 report this has been updated to 39%. And they collect data from tens of thousands of projects so the figures should be pretty reliable. 
    Now, this seems scary and low, but only until you check out their definition of success."Resolution Type 1, or project success: The project is completed on-time and on-budget, with all features and functions as initially specified."OK. Not a word about actually getting value for the effort. Remember the on-line bookstore where they wanted others-have-bought recommendations to increase the number of books customers. Now, imagine they implemented the others-have-bought recommendations, but the customers did not buy more books anyway. Is this project a success?
    Well, you have spent lots of money building something, but made no money from it. To me it sounds like money, time, and effort down the drain - not as a success.
    To Standish Group, it is considered a success.
    On the flip side, imagine the project realising that a simplified "search similar" would increase the number of books each customer buys. Imagine further that this feature would be much easier to implement. So, the project decides to implement that feature instead. And the number of books sold per customer increases 0.4 on average.
    Spending less money, time, and effort on something else than originally envisioned, but still getting the benefit - that sounds like success to me.
    To Standish Group, it is considered a failure.
    Thus, the figure 16% or 39% actually says nothing at all about the state of software projects.
    So, Standish Group is probably filled with smart people. Why did they not evaluate software projects according to some meaningful metric instead? Most probably "generated business value as specified upon funding" would be more interesting. 
    My guess is that too few projects actually stated an envisioned business effect, so analysing those projects would give so little data that it would not be possible to make any significant conclusions.
    So, instead of measuring something that would actually matter ("fulfilled envisioned business effect") they just measured something that could be measured.
    Now, from the second example, where the team implemented another feature than originally envisioned, it is also clear that this approach is an absolutely worthless way of evaluating agile projects.  
    Yours
       Dan
    PS The CHAOS 1995 report has been republished openly available for academic purposes. It can be found at http://www.projectsmart.co.uk/docs/chaos-report.pdf. The 2013 version can be found at http://www.versionone.com/assets/img/files/CHAOSManifesto2013.pdf

    Categories: Blogs

    Scaled Agile Framework: I Learned about Weighted Shorted Job First (WSJF)

    Learn more about our Scrum and Agile training sessions on WorldMindware.com

    Among the great things I learned last week in London UK at the Scaled Agile Framework (SAFe) Program Consultant training is the concept of using the Weighted Shortest Job First method of prioritization for backlog items.  The concept is similar to the Relative Return On Investment (RROI) that I teach in my Certified ScrumMaster and Certified Scrum Product Owner courses, but adds a bit of sophistication both in the background theory and in the actual application.

    Weighted Shortest Job First is a numerical score where the larger the score, the sooner the job (feature, product backlog item) should be done.  Scores therefore give a sequence to jobs.  The score is based on the ratio between two estimates: the estimate of the “cost of delay” and the estimate of the “duration to complete”.  The cost of delay is a more sophisticated version of business value in that it takes into account customer needs, time criticality and risk reduction or opportunity cost.

    In SAFe, the WSJF is calculated at the level of the team’s backlog on user stories through estimates of effort by the team and estimates of the cost of delay that are done by the product owner in collaboration with program management and business owners.  The effort estimate is considered a reasonable proxy for the measure of duration, but there is explicit acknowledgement that this may not always be a reliable relationship.

    Try out our Virtual Scrum Coach with the Scrum Team Assessment tool - just $500 for a team to get targeted advice and great how-to informationPlease share!
    facebooktwittergoogle_plusredditpinterestlinkedinmail
    Categories: Blogs

    Agile Tour, Brussels, Belgium, October 31 2014

    Scrum Expert - Thu, 10/16/2014 - 15:36
    Agile Tour Brussels is a one-day conference focused on Agile software development and Scrum. This edition features six tracks, 31 talks, games and workshops that will be provided by speakers from all over Europe and a lot of great content. In the agenda of Agile Tour Brussels you can find topics like “Doing Valuable Agile Retrospectives”, “The multi-level feedback cycle”, “Return of experience: Agility, Quality & Visual Thinking, Key Drivers Of Success”, ” Scrum of Scrums: examples”, “The Product Owner Board Game”, “Intrinsic Agile coaching – Agile coaching without coaches”, “How ...
    Categories: Communities

    Top 5 Mistakes for First Time Tech Leads

    thekua.com@work - Thu, 10/16/2014 - 13:28
    1. Spending too much time writing code

    Old habits die hard. When a developer suddenly steps into the Tech Lead role, it is not immediately clear what to do differently. Instead of taking on the Tech Lead responsibilities, they stay heads-down writing code. The more code they write, the better they feel that they are still contributing to the team. Other Tech Lead responsibilities are neglected in favour of writing code, even though they must still be fulfilled. A Tech Lead must spend enough time on non-coding responsibilities. They must ensure a Technical Vision exists, and the development team are working together towards the same goal. Both of these activities require more than just code-writing.

    2. Not spending enough time writing code

    The “Tech” in the Tech Lead role is there for a reason. It is too easy for a Tech Lead to sit in endless meetings instead of spending time with the team. They lose awareness of how the code is evolving and which patterns or anti-patterns emerge. Without an up-to-date awareness of the system and its technical constraints, a Tech Lead cannot effectively lead the team. A Tech Lead who codes has a better understanding of technical problems or opportunities whilst building and maintaining trust with developers. Writing code keeps the “Post Technical” label away.

    3. Making all the technical decisions

    The first time Tech Lead may feel compelled to make all decisions. To compensate for writing less code, or to demonstrate their new role, they give input to any and all decisions. Unfortunately this behaviour discourages the team from making contributions. It sends the message to the team they should do what they are told, or not think, even though a team member has the better solution to a particular problem. An effective Tech Lead knows when to give input, knows when to make decisions and when to step back and allow the team to take more ownership.

    4. Talking only Tech

    A Tech Lead interacts with many people who sit outside of the development team such as people from marketing, finance or a product division. These people usually have very limited technical knowledge. Talking to them in terms of frameworks, libraries and tools adds confusion, frustration and simultaneously signals a lack of empathy. A Tech Lead must find a way to communicate ideas in ways non-technical people can understand such as using analogies and using terms others can easily relate to.

    5. Constantly reacting

    A new Tech Lead will find themselves juggling several activities at once. The bane of a developer, interruptions, becomes an everyday occurrence. A first time Tech Lead can simply react to the loudest or most alarming situation, even if it is not the most important. Over time, the Tech Lead develops better time and task management skills in order to manage the many demands.

    If you liked this article exploring the Tech Lead role, you will be interested in “Talking with Tech Leads,” a book that shares real life experiences from over 35 Tech Leads around the world. Now available on Leanpub.

    Categories: Blogs

    A New Agile Team Approach Emerges

    NetObjectives - Thu, 10/16/2014 - 09:54
    The next generation of team Agile approaches is beginning to emerge. It is built on what the industry has learned from earlier Agile methods. It is perfected with Lean thinking. It is tailored to the needs of the team and the needs of the organization to deliver value quickly and sustainably. It is the fourth wave of Agile. Lean thinking is the key. All successful approaches to Agile software...

    [[ This is a content summary only. Visit my website for full links, other content, and more! ]]
    Categories: Companies

    Knowledge Sharing


    SpiraTeam is a agile application lifecycle management (ALM) system designed specifically for methodologies such as scrum, XP and Kanban.