Skip to content

Feed aggregator

Tools

When I was young, I had a riding lawn mower. We had a big yard out in the suburbs and the riding mower made the job quicker. Today I live closer to downtown in a house with a smaller yard. I’m currently using an old fashion reel mower…no motor, just foot power to make it work. For the yard I have, it’s all I need.
With all the technology around us, it’s easy to get caught up in the latest thing. Tools can make us more effective, but sometimes they can be distractions. 
Take project management tools. There are a plethora of them around and I have used them effectively on projects. But I have also run projects with just a white board and stack of post-it notes, not letting the technology get in the way of interacting with my team.
The Manifesto for Agile Software Development says it should be “Individuals and Interactions over Process and Tools” so ask yourself if the tool you are considering is going to help you or could it just be another distraction? Put another way, A fool with a tool is still a fool."
Categories: Blogs

5 Things Agile Leaders Must Do

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

From the full article “5 Things Agile Leaders Must Do“:

  1. Uphold self-organization.
  2. Formalize Agile roles.
  3. Understand that Scrum is not the only Agile method.
  4. Stop up-front planning.
  5. Lead by example.

Consider enrolling in our Scrum and Enterprise Agile for Executives ½ day seminar in Toronto.

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

Neu führen: die gläsernen Manager

Scrum 4 You - Mon, 04/20/2015 - 07:41

Stellen Sie sich vor, Sie sind CEO eines Unternehmens (oder Sie sind es ohnehin). Jeden zweiten Freitag versammeln Sie sich wie bei einer Pressekonferenz mit Ihrem Management-Team, den anderen CXOs, im Auditorium der Unternehmenszentrale. Auf Sie und Ihr Führungsteam sind die Webcams des Videokonferenzsystems gerichtet, neben Ihnen steht ein Touch-Screen – darauf ist ein Taskboard zu sehen. Alle zur Videokonferenz zugeschalteten Mitarbeiter können mitverfolgen, was Sie auf diesem Taskboard tun.

Das Board zeigt die strategischen Initiativen und die dazugehörenden Aufgaben, die Sie sich mit Ihrem Team in diesem Quartal vorgenommen haben. Bereits vor Monaten haben Sie die aktuelle Strategy Map Ihres Unternehmens im Intranet sichtbar gemacht. Ihre Mitarbeiter und Kollegen sehen also ganz genau, was das Management-Team bis dato erreicht hat. Nachdem Sie dieses freitägliche Ritual ein Jahr lang erfolgreich im Unternehmen umgesetzt haben, laden Sie Analysten der großen Investmentbanken ebenfalls zu dieser Konferenz ein. Kein großer Aufwand: Die Analysten schalten sich einfach zur Videokonferenz dazu. Durch diese Transparenz stellt sich ein spannender Effekt ein: Die Analysten beginnen, positiv über Ihr Unternehmen zu berichten und Sie spüren das Vertrauen der Aktionäre. Natürlich gibt es an diesen Freitagen nicht immer nur Jubelmeldungen, aber das wird offen angesprochen: Die Mitarbeiter können über das Chat-System ihre Fragen an einen Moderator stellen, der die Fragen an Sie und Ihr Team weitergibt. Für das Beantworten nehmen Sie sich 30 Minuten Zeit – und Sie antworten ehrlich, ohne politisches Kalkül. Geht ein großer Auftrag verloren oder sind die strategischen Initiativen noch nicht klar genug, holen Sie nicht zur PowerPoint-Schlacht aus, sondern sagen kurz und knapp, wofür Sie stehen und was Sie warum entschieden haben. Oft bringen Kollegen aber auch Ideen für Produkte und Services ein, die Sie sammeln und in den nächsten Wochen zur Diskussion stellen.

Nur die Vision eines Scrum-Experten, der davon träumt, wie es sein könnte? Nein! Es gibt bereits Unternehmen, die auch im Management nach Scrum arbeiten und damit großartige Erfolge erzielen. Ein solches Unternehmen habe ich in Dresden gefunden.

Strategische Steuerung mit Scrum – Saxonia Systems AG

Unser Partner Saxonia Systems AG setzt seit mehr als vier Jahren Scrum konsequent zur strategischen Steuerung des Unternehmens ein. Auf die jeweils viermonatigen Sprints folgen ein Review, eine Retrospektive und das nächste Sprint Planning. Seine Vision „Ein Team, ein Office“ setzt das Management von Saxonia Systems mit Hilfe seiner eigenen Produktinnovation um – mit dem eteoBoard, einem elektronischen Kommunikationstool für verteilte Teams. Jeder im Unternehmen kann so während eines Plauschs in der Kaffeeküche schnell mal nachsehen, woran die Vorstandsriege gerade arbeitet. Alle zwei Wochen trifft sich das CXO-Team, hält für alle Mitarbeiter sichtbar sein Planungsmeeting ab und stellt den Fortschritt im Plenum dar. Lassen wir Sylvie Löffler, Strategy Process Officer bei Saxonia Systems, selbst erzählen, was sich verändert hat:

“Mitte 2010 befanden wir uns auf dem Höhepunkt einer schweren Unternehmenskrise. Nachdem wirLöffler
unsere größten operativen Probleme gelöst hatten, waren wir entschlossen, uns etwas einfallen zu lassen, um nie wieder in eine derartige Situation zu gelangen. Wir stellten uns die Frage: Wie können wir unsere größten strategischen Herausforderungen bewältigen – die Innovationskraft ausbauen, die Kommunikationskultur im Unternehmen verbessern, Transparenz schaffen, verteilte Zusammenarbeit ermöglichen, die Time-to-Market verbessern, Stabilität und Nachhaltigkeit schaffen? Wir haben den Hebel bei der strategischen Unternehmensführung angesetzt und vor etwa viereinhalb Jahren einen agilen Strategieprozess gestartet. Dieser Prozess ist durch die Parallelisierung von Strategieentwicklung und –umsetzung charakterisiert.

Am Ende einer viermonatigen Strategie-Iteration findet unser zweitägiges Strategiemeeting statt. In diesem Meeting beginnen wir mit einem inhaltlichen Review der letzten vier Monate, gefolgt von einer Retrospektive, die das prozessuale Review und Maßnahmen zur Prozessverbesserung beinhaltet. Der dritte und größte Teil des Strategiemeetings umfasst die Planung der nächsten viermonatigen Iteration. Am Ende der Planung steht die neue Iteration mit der Zielzustandsbeschreibung inklusive Budget- und Ressourcenfreigabe für die nächsten Arbeitspakete der beschlossenen strategischen Initiativen. So verlieren wir keine Zeit! Die Umsetzung startet sofort nach dem Strategiemeeting. Alle Arbeitspakete der neuen Iteration werden auf unserem saxonia:::Board (Basis ist unsere Produktinnovation eteoBoard) mit allen Aufgaben und Verantwortlichkeiten veröffentlicht und für alle Mitarbeiter transparent gemacht. So steuern alle Mitarbeiter rollen- und standortunabhängig unsere Vision an. Während der Umsetzungsphase führen wir mit dem Change-Management Team alle zwei Wochen ein Change Management Standup an unserem saxonia:::Board durch. Im Februar 2015 haben wir damit begonnen, die Standups mit Publikum – unseren Mitarbeitern – durchzuführen. Zu unserer großen Freude steigt die Zuschauerzahl stetig an.

Saxonia

Was hat sich verändert? Wir sind heute viel konsequenter, disziplinierter und können gezielter führen. Überrascht sind wir davon, wie viel mehr Spaß wir gemeinsam bei der Bewältigung operativer und strategischer Herausforderungen haben. Mittlerweile ist es unsere feste Überzeugung, dass ein agiles Management-Team und eine Veränderungs- und Innovationskultur die entscheidenden Erfolgsfaktoren sind, um zukunfts- und wettbewerbsfähig zu werden und auch zu bleiben. Mit unserem agilen Strategieprozess lassen wir den Wandel für das gesamte Unternehmen zur Normalität werden. Heute erkennen wir sich abzeichnende Veränderungen und Risiken im Markt viel früher. Zum anderen erkennen wir aber auch die Chancen in diesen Veränderungen viel früher und können sie durch die Fokussierung der Kräfte unserer gesamten Mannschaft auf den wirkungsvollsten Punkt besser nutzen. Wir agieren, statt nur zu reagieren!”

Warum sollten Management-Teams nicht genauso wie Scrum-Teams arbeiten? Auch das Management-Team kann sich jeden Morgen der „Beobachtung“ durch sich selbst und alle am Projekt Beteiligten stellen. Schließlich verlangt das Management ja auch von jedem anderen Scrum-Team, dass es transparent und iterativ arbeitet und Inkremente liefert. Der Gedanke ist einfach, aber auch in meinem eigenen Unternehmen ist es aus vielerlei Gründen noch nicht gelungen, ihn konsequent umzusetzen. Wir sind noch auf dem Weg. Aber Saxonia Systems hat uns gezeigt, dass es funktioniert – sogar in verteilten Organisationen. Für uns ist es ein Ansporn, noch konsequenter in diese Richtung zu arbeiten.

Categories: Blogs

Have you Crossed the Agile Chasm?

In 1991, Geoffrey Moore refined the classic technology adoption model with an additional element he called the “chasm.”[1] He advanced a proposition specific to disruptive innovation that there is a significant shift in mentality to be crossed between the early adopter and the early majority groups. Disruptive innovation is the development of new values that forces a significant change of behavior to the culture adopting it. In this case, Agile is that disruptive force that insists on applying a set of values and principles within a specific culture of “being Agile” to be successful and for the organization to realize the full business benefits of Agile.
At first glance, it would appear that many companies have adopted Agile. I believe, however, that this perception is specious, in view of the further observation that the majority of companies that are “doing” Agile have not actually adopted the new values and principles and not made the cultural shift to actually “being” Agile. Such companies look at Agile as a set of skills, tools, and procedural changes and not the integrated behavioral and cultural change it truly is. In other words, they think they have crossed the chasm, but they have not made the significant change of behavior required to make the leap. My experience in the field leads me to posit a refinement on Moore's chasm concept as applied to Agile. First, there is the real Agile chasm between those on the left side who have made the organic behavioral changes consistent with the values of being Agile―and those on the right side who are just doing” Agile mechanically. Second, there is a fake chasm, which many organizations pride themselves on having crossed by virtue of adopting some mechanical features of Agile, whereas they have not been willing or able to make the behavioral changes and adopt the values required to cross the real chasm. Although many companies say that they are doing Agile in some form, a large proportion of these are actually doing Fragile ("fake Agile") or some other hybrid variant that cannot deliver the business benefits of Agile.
I cannot overstate this point: many companies and their teams are mechanically doing some form of Agile without having actually crossed the Agile chasm, not discarding the behavioral baggage that is keeping them from behaviorally and culturally being Agile. Until a team attains the state of being Agile, the business benefits that Agile can provide will be elusive. I contend that the industry has barely entered the early majority of true Agile cultural transformation, and many companies continue to struggle to leap the Agile chasm.  What have you noticed across the Agile landscape?  Have companies crossed the Agile chasm?
Note: If you are looking for more insight in crossing the Agile chasm, consider reading the book Being Agile. This book lays the foundation for those who want to cross the Agile cultural chasm, understand the behaviors that need to change, and gauge progress along the way. It provides an Agile transformation roadmap to the destination of achieving better business results.

[1] Geoffrey A. Moore, Crossing the Chasm (New York: Harper Business Essentials, 1991).
Categories: Blogs

R: non-numeric argument to binary operator

Mark Needham - Mon, 04/20/2015 - 01:08

When debugging R code, given my Java background, I often find myself trying to print out the state of variables along with an appropriate piece of text like this:

names = c(1,2,3,4,5,6)
> print("names: " + names)
Error in "names: " + names : non-numeric argument to binary operator

We might try this next:

> print("names: ", names)
[1] "names: "

which doesn’t actually print the names variable – only the first argument to the print function is printed.

We’ll find more success with the paste function:

> print(paste("names: ", names))
[1] "names:  1" "names:  2" "names:  3" "names:  4" "names:  5" "names:  6"

This is an improvement but it repeats the ‘names:’ prefix multiple times which isn’t what we want. Introducing the toString function gets us over the line:

> print(paste("names: ", toString(names)))
[1] "names:  1, 2, 3, 4, 5, 6"
Categories: Blogs

Faster Word Puzzles with Neo4J

Mistaeks I Hav Made - Nat Pryce - Sun, 04/19/2015 - 22:08
When I used Neo4J to create and solve Word Morph puzzles, I brute-forced the algorithm to find and link words that differ by one letter. I was lucky – my dataset only contained four-letter words and so was small enough for my O(n2) algorithm to run in a reasonable amount of time. But what happens when I expand my dataset to include words of 4, 5 and 6 letters? Obviously, I have to change my Cypher to only relate words that are the same length: match (w1), (w2) where w2.word > w1.word and length(w1.word) = length(w2.word) with w1, w2, length([i in range(0,length(w1.word)) where substring(w1.word,i,1) <> substring(w2.word,i,1)]) as diffCount where diffCount = 1 create (w1)-[:STEP]->(w2) create (w2)-[:STEP]->(w1) But with the larger dataset, this query takes a very long time to run. I don’t know how long – I’ve never been patient enough to wait for the query to complete. I need a better algorithm. Nikhil Kuriakose has also written about solving these puzzles with Neo4J. He used a more sophisticated algorithm to create the graph. He first grouped words into equivalence classes, each of which contains words that are the same except at one letter position. So, for instance, the class P_PE would contain PIPE, POPE, etc., the class PIP_ would contain PIPE, PIPS, etc., and so on. He then created relationships between all the words in each equivalence class. This also has a straightforward representation as a property graph. An Equivalence class can be represented by an Equivalence node with a pattern property, and a word’s membership of an equivalence class can be represented by a relationship from the Word node to the Equivalence node. Words related via equivalence classes Nikhil implemented the algorithm in Java, grouping words with a HashMap and ArrayLists before loading them into Neo4J. But by modelling equivalence classes in the graph, I can implement the algorithm in Cypher – no Java required. For each Word in the database, my Cypher query calculates the patterns of the equivalence classes that the word belongs to, creates Equivalence nodes if for the patterns, and creates an :EQUIV relationship from the Word node to each Equivalence node. The trick is to only create Equivalence nodes for a pattern once, when one doesn’t yet exist, and subsequently use the same Equivalence node for the same pattern. This is achieved by creating Equivalence nodes with Cypher’s MERGE clause. MERGE either matches existing nodes and binds them, or it creates new data and binds that. It’s like a combination of MATCH and CREATE that additionally allows you to specify what happens if the data was matched or created. Before using MERGE, I must define a uniqueness constraint on the pattern property of the Equivalence nodes that will be used to identify nodes in the MERGE command. This makes Neo4J create an index for the property and ensures that the merge has reasonable performance. create constraint on (e:Equivalence) assert e.pattern is unique Then I relate all the Word nodes in my database to Equivalence nodes: match(w:Word) unwind [i in range(0,length(w.word)-1) | substring(w.word,0,i)+"_"+substring(w.word,i+1)] as pattern merge (e:Equivalence {pattern:pattern}) create (w)-[:EQUIV]->(e) This takes about 15 seconds to run. Much less time for my large dataset than my first, brute-force approach took for the small dataset of only four-letter words. Now that the words are related to their equivalence classes, there is no need to create relationships between the words directly. I can query via the Equivalence nodes: match (start {word:'halt'}), (end {word:'silo'}), p = shortestPath((start)-[*]-(end)) unwind [n in nodes(p)|n.word] as step with step where step is not null return step Giving: step ---- halt hilt silt silo Returned 4 rows in 897 ms. And it now works for longer words: step ---- candy bandy bands bends beads bears hears heart Returned 8 rows in 567 ms. Organising the Data During Import The Cypher above organised Word nodes that I had already loaded into my database. But if starting from scratch, I can organise the data while it is being imported, by using MERGE and CREATE clauses in the LOAD CSV command. load csv from "file:////puzzle-words.csv" as l create (w:Word{word:l[0]}) with w unwind [i in range(0,length(w.word)-1) | substring(w.word,0,i)+"_"+substring(w.word,i+1)] as pattern merge (e:Equivalence {pattern:pattern}) create (w)-[:EQUIV]->(e)
Categories: Blogs

R: Removing for loops

Mark Needham - Sun, 04/19/2015 - 01:53

In my last blog post I showed the translation of a likelihood function from Think Bayes into R and in my first attempt at this function I used a couple of nested for loops.

likelihoods = function(names, mixes, observations) {
  scores = rep(1, length(names))
  names(scores) = names
 
  for(name in names) {
      for(observation in observations) {
        scores[name] = scores[name] *  mixes[[name]][observation]      
      }
    }  
  return(scores)
}
Names = c("Bowl 1", "Bowl 2")
 
bowl1Mix = c(0.75, 0.25)
names(bowl1Mix) = c("vanilla", "chocolate")
bowl2Mix = c(0.5, 0.5)
names(bowl2Mix) = c("vanilla", "chocolate")
Mixes = list("Bowl 1" = bowl1Mix, "Bowl 2" = bowl2Mix)
Mixes
 
Observations = c("vanilla", "vanilla", "vanilla", "chocolate")
l = likelihoods(Names, Mixes, Observations)
 
> l / sum(l)
  Bowl 1   Bowl 2 
0.627907 0.372093

We pass in a vector of bowls, a nested dictionary describing the mixes of cookies in each bowl and the observations that we’ve made. The function tells us that there’s an almost 2/3 probability of the cookies coming from Bowl 1 and just over 1/3 of being Bowl 2.

In this case there probably won’t be much of a performance improvement by getting rid of the loops but we should be able to write something that’s more concise and hopefully idiomatic.

Let’s start by getting rid of the inner for loop. That can be replace by a call to the Reduce function like so:

likelihoods2 = function(names, mixes, observations) {
  scores = rep(0, length(names))
  names(scores) = names
 
  for(name in names) {
    scores[name] = Reduce(function(acc, observation) acc *  mixes[[name]][observation], Observations, 1)
  }  
  return(scores)
}
l2 = likelihoods2(Names, Mixes, Observations)
 
> l2 / sum(l2)
  Bowl 1   Bowl 2 
0.627907 0.372093

So that’s good, we’ve still got the same probabilities as before. Now to get rid of the outer for loop. The Map function helps us out here:

likelihoods3 = function(names, mixes, observations) {
  scores = rep(0, length(names))
  names(scores) = names
 
  scores = Map(function(name) 
    Reduce(function(acc, observation) acc *  mixes[[name]][observation], Observations, 1), 
    names)
 
  return(scores)
}
 
l3 = likelihoods3(Names, Mixes, Observations)
> l3
$`Bowl 1`
  vanilla 
0.1054688 
 
$`Bowl 2`
vanilla 
 0.0625

We end up with a list instead of a vector which we need to fix by using the unlist function:

likelihoods3 = function(names, mixes, observations) {
  scores = rep(0, length(names))
  names(scores) = names
 
  scores = Map(function(name) 
    Reduce(function(acc, observation) acc *  mixes[[name]][observation], Observations, 1), 
    names)
 
  return(unlist(scores))
}
 
l3 = likelihoods3(Names, Mixes, Observations)
 
> l3 / sum(l3)
Bowl 1.vanilla Bowl 2.vanilla 
      0.627907       0.372093

Now we just have this annoying ‘vanilla’ in the name. That’s fixed easily enough:

likelihoods3 = function(names, mixes, observations) {
  scores = rep(0, length(names))
  names(scores) = names
 
  scores = Map(function(name) 
    Reduce(function(acc, observation) acc *  mixes[[name]][observation], Observations, 1), 
    names)
 
  result = unlist(scores)
  names(result) = names
 
  return(result)
}
 
l3 = likelihoods3(Names, Mixes, Observations)
 
> l3 / sum(l3)
  Bowl 1   Bowl 2 
0.627907 0.372093

A slightly cleaner alternative makes use of the sapply function:

likelihoods3 = function(names, mixes, observations) {
  scores = rep(0, length(names))
  names(scores) = names
 
  scores = sapply(names, function(name) 
    Reduce(function(acc, observation) acc *  mixes[[name]][observation], Observations, 1))
  names(scores) = names
 
  return(scores)
}
 
l3 = likelihoods3(Names, Mixes, Observations)
 
> l3 / sum(l3)
  Bowl 1   Bowl 2 
0.627907 0.372093

That’s the best I’ve got for now but I wonder if we could write a version of this using matrix operations some how – but that’s for next time!

Categories: Blogs

What if we fail?

Ben Linders - Sat, 04/18/2015 - 10:46
People are often afraid to make mistakes. They do things to prevent that something might go wrong and avoid doing things that might fail. And if it does go wrong then they don't talk about it. Is it really bad if once in a while something goes wrong? If something can go wrong, let arrange for it to happen as soon as possible, because then you can quickly learn from it. Create a culture where failure is allowed so that we can all learn from it and find ways to make fewer mistakes! Continue reading →
Categories: Blogs

Life Quotes That Will Change Your Life

J.D. Meier's Blog - Sat, 04/18/2015 - 08:41

Life’s better with the right words.

And life quotes can help us live better.

Life quotes are a simple way to share some of the deepest insights on the art of living, and how to live well.

While some people might look for wisdom in a bottle, or in a book, or in a guru at the top of a mountain, surprisingly, a lot of the best wisdom still exists as quotes.

The problem is they are splattered all over the Web.

The Ultimate Life Quotes Collection

My ultimate Life Quotes collection is an attempt to put the best quotes right at your fingertips.

I wanted this life quotes collection to answer everything from “What is the meaning of life?” to “How do you live the good life?” 

I also wanted this life quotes collection to dive deep into all angles of life including dealing with challenges, living with regrets, how to find your purpose, how to live with more joy, and ultimately, how to live a little better each day.

The World’s Greatest Philosophers at Your Fingertips

Did I accomplish all that?

I’m not sure.  But I gave it the old college try.

I curated quotes on life from an amazing set of people including Dr. Seuss, Tony Robbins, Gandhi, Ralph Waldo Emerson, James Dean, George Bernard Shaw, Virginia Woolf, Buddha, Lao Tzu, Lewis Carroll, Mark Twain, Confucius, Jonathan Swift, Henry David Thoreau, and more.

Yeah, it’s a pretty serious collection of life quotes.

Don’t Die with Your Music Still In You

There are many messages and big ideas among the collection of life quotes.  But perhaps one of the most important messages is from the late, great Henry David Thoreau:

“Most men lead lives of quiet desperation and go to the grave with the song still in them.” 

And, I don’t think he meant play more Guitar Hero.

If you’re waiting for your chance to rise and shine, chances come to those who take them.

Not Being Dead is Not the Same as Being Alive

E.E. Cummings reminds us that there is more to living than simply existing:

“Unbeing dead isn’t being alive.” 

And the trick is to add more life to your years, rather than just add more years to your life.

Define Yourself

Life quotes teach us that living live on your terms starts by defining yourself.  Here are big, bold words from Harvey Fierstein that remind us of just that:

“Never be bullied into silence. Never allow yourself to be made a victim. Accept no one’s definition of your life; define yourself.”

Now is a great time to re-imagine all that you’re capable of.

We Regret the Things We Didn’t Do

It’s not usually the things that we do that we regret.  It’s the things we didn’t do:

“Of all sad words of tongue or pen, the saddest are these, ‘It might have been.”  – John Greenleaf Whittier

Have you answered to your calling?

Leave the World a Better Place

One sure-fire way that many people find their path is they aim to leave the world at least a little better than they found it.

“To laugh often and much; to win the respect of intelligent people and the affection of children…to leave the world a better place…to know even one life has breathed easier because you have lived. This is to have succeeded.” -- Ralph Waldo Emerson

It’s a reminder that we can measure our life by the lives of the people we touch.

You Might Also Like

7 Habits of Highly Motivated People

10 Leadership Ideas to Improve Your Influence and Impact

Boost Your Confidence with the Right Words

The Great Inspirational Quotes Revamped

The Great Leadership Quotes Collection Revamped

Categories: Blogs

What good listeners do

Via First Among Equals, from The Trusted Advisor, what good listeners do:
  1. Probe for clarification
  2. Listen for unvoiced emotions
  3. Listen for the story
  4. Summarize well
  5. Empathize
  6. Listen for what's different, not for what's familiar
  7. Take it all seriously (don't say, "you shouldn't worry about that")
  8. Spot hidden assumptions
  9. Let the other person "get it out of his or her system"
  10. Ask, "How do you feel about that?"
  11. Keep the other person talking ("What else have you considered?")
  12. Keep asking for more detail that helps to understand
  13. Get rid of distractions while listening
  14. Focus on hearing their version first
  15. Let them tell their story their way
  16. Stand in their shoes, at least while listening
  17. Ask them how they think you might be of help
  18. Ask what they've thought of before telling them what you've thought of
  19. Look at (not stare at) the person as s/he speaks
  20. Look for "congruency" (or incongruity) between what the person says and how s/he gestures and postures
  21. Make it seem as if the other person is the only thing that matters and that they have all the time in the world
  22. Encourage by nodding head or giving a slight smile
  23. Show awareness and control of body movement (no moving around, shaking legs, fiddling with a paper clip)
Categories: Blogs

Common traits of trusted advisors

Via First Among Equals, from The Trusted Advisor, common traits of trusted advisors:
  1. Seem to understand us, effortlessly, and like us
  2. Are consistent: we can depend on them
  3. Always help us see things from fresh perspectives
  4. Don't try to force things on us
  5. Help us think things through (it's our decision)
  6. Don't substitute their judgment for ours
  7. Don't panic or get overemotional: they stay calm
  8. Help us think and separate our logic from our emotion
  9. Criticize and correct us gently, lovingly
  10. Don't pull their punches: we can rely on them to tell us the truth
  11. Are in it for the long haul: the relationship is more important than the current issue
  12. Give us reasoning (to help us think), not just their conclusions
  13. Give us options, increase our understanding of those options, give us their recommendation, and let us choose
  14. Challenge our assumptions: help us uncover the false assumptions we've been working under
  15. Make us feel comfortable and casual personally, but they take the issues seriously
  16. Act like a person, not someone in a role
  17. Are reliably on our side, and always seem to have our interests at heart
  18. Remember everything we ever said (without notes)
  19. Are always honorable: they don't gossip about others (we trust their values)
  20. Help us put our issues in context, often through the use of metaphors, stories, and anecdotes (few problems are completely unique)
  21. Have a sense of humour to diffuse our tension in tough situations
  22. Are smart sometimes in ways we're not
As someone who advises others, how well does this describe me?
Categories: Blogs

Making Sure They Do It the “Right Way”

Leading Agile - Mike Cottmeyer - Fri, 04/17/2015 - 23:21

http://pixabay.com/p-492989/

In a Certified Scrum Product Owner class I was teaching recently we got to the part about how it was up to the teams to figure out the best way to solve the business problems presented in the User Stories. We discussed the logic behind this and everyone seemed to be in agreement that it made sense that the people who do the design/coding/testing on a daily basis were the ones most familiar with the technology, the environment and the context of the needs of the end user and that it made sense for them to find the best way to meet the needs of the end user.

It was all going just fine until one of the participants in the class asked a very simple question…

“How do I know they are going to do it the right way?”

The question came from someone who was moving out of the role of lead developer into a Product Owner role.

The short answer, “You don’t. You have to trust them.”

He winced. And this is where things got twitchy. The person asking the question understood that he was supposed to trust. The problem was that understanding this intellectually, and actually doing it were two completely different things.

“Yeah, I know… but really… how do I know they’ll do it the right way?”

We talked about shaping the scope with the Acceptance Criteria, and talking with the team about any known challenges they were going to face, but that at the end of the day, it was the people doing the work that were going to have to be given the freedom to find the best way to solve the challenge placed before them. The “… but really…” question was raised a few more times and it seemed like there was a fading, desperate hope that there was going to be some secret magic answer or trick that would resolve the fear that “they” might make a mistake. Unfortunately, there is no magic answer to this. The simple fact is, “they” might solve the problem in a way that met all the needs of the User Story and it’s Acceptance Criteria but it might not be in line with how the PO would have solved the problem on his own. There is the chance that the solution the PO had in mind might have been a better way, but there is also a possibility that a team of talented, skilled individuals, working together might come up with a solution that was as good, or possibly better, than what the PO was envisioning.

If the Team delivered a solution that met the needs of the story but was somehow still not what was needed, this would become apparent during the Sprint Review meeting when the work was shown to the Stakeholders. One of the benefits of working in short iterations is that we can find problems and learn from them quickly, getting better every step of the way – both in delivering value and in working together. The longer the PO and the Team worked together, the better they get at defining and working on the User Stories.

For this particular PO, and for many people who are moving towards Agile, being open to the possibility that others may have solutions which are as good as, or better than we have isn’t an easy pill to swallow. One of the dysfunctions inherent in a traditional approach is that a command and control way of working was put in place because of the the assumption that if we don’t tell people how to do something, they’ll do it wrong.

But what if they won’t? What if they’re as smart, or smarter than us? Are we willing to let go and accept the risk of trusting again? It’s easy to say yes, but actually doing it – that is much harder. It is also one of the most challenging parts of making the switch to Agile.

Regardless of whether you are a member of the Team doing the work, someone playing the role of Product Owner or ScrumMaster, recognizing the places where the fear of trusting creeps in, observing your reaction and finding a way to take the chance of trusting people again is always hard. And it isn’t just about trusting others. We also have to learn to trust ourselves to make good choices and allow for the possibility of making mistakes and learning from them. How else are we going to get better?

https://farm6.staticflickr.com/5202/5366637592_ec37726b7b_o.jpg

Regarding the light bulb, Thomas Edison is often quoted as having said:

“I have not failed. I just found 10,000 ways that won’t work.”

If Edison had not been given the chance to find the best way to create his version of the light bulb our world would be very different than it is today.

The Scrum Guide says “Three pillars uphold every implementation of empirical process control: transparency, inspection, and adaptation.” This may well be true, but for Agile to sink in and really take root, those three pillars have to stand on a solid foundation of trust. What we trust in is not that people will always be “right”, but that we will run these experiments and learn every step of the way.

And who knows, there is always the chance that the Team may surprise you by coming up with a solution that is even better than the one you had in mind.

The post Making Sure They Do It the “Right Way” appeared first on LeadingAgile.

Categories: Blogs

Testomato monitors your website and alerts you if anything important breaks

TestDriven.com - Fri, 04/17/2015 - 23:00
Monitor both your staging and production environments to catch problems immediately. Instead of worrying, know when something is broken so you can fix it fast. http://www.testomato.com/
Categories: Communities

Topics for Lunch-N-Learn

Agile Complexification Inverter - Fri, 04/17/2015 - 19:57


Brainstorming a list of topics for a Scrum/Agile lunch-N-learn session.


Slicing Stories – resources to slice vertical stories of valueStory Writing techniques:  w/ Q&A based upon participants real storiesEstimation techniques:  Affinity Estimation; T-shirt sizing -> converting to numbers; Planning Poker (the rule book)Team building tools:  Infinite Loops; Helium Stick; Warp Speed;  Pair Drawing, etc.Definition of Done/Ready exerciseRelease Planning   How to derive duration with a complicated backlogAgile Library Initiation  Bring books, make the rules, get funding, 1,2,3, GO!Management 3.0 Book Club - join a group reading the best Agile book written.Making Visual Information Radiators - define Radiator/Cooler;  elements of a Scrum boardAspects of an effective Product BacklogAgile Portfolio Planning - tools and techniques; estimation, cost of delay, prioritization, deciding what NOT to doThe principle of TDD via LEGO building;  anyone can learn the power of test first developmentDoes you development rest on a SOLID foundation - an overview of the SOLID principlesCollaboration Games to understand the customer;   12 Innovation Games;  Other resourcesUser Story Maps technique to achieve higher level understanding of the backlogLaunching a Team;  what’s required, best practices, examples and techniquesTeam Practices:  a collection of quick tools to increase team work and collaboration
Learn Backlog Prioritization techniques:  Cost of Delay,  Perceived ROI,  Gut Feeling, Loudest Yeller

see also:
http://www.improvingenterprises.com/services/applied-training/lunch-n-learns/
Categories: Blogs

Saga Implementation Patterns: Singleton

Jimmy Bogard - Fri, 04/17/2015 - 17:38

NServiceBus sagas are great tools for managing asynchronous business processes. We use them all the time for dealing with long-running transactions, integration, and even places we just want to have a little more control over a process.

Occasionally we have a process where we really only need one instance of that process running at a time. In our case, it was a process to manage periodic updates from an external system. In the past, I’ve used Quartz with NServiceBus to perform job scheduling, but for processes where I want to include a little more information about what’s been processed, I can’t extend the Quartz jobs as easily as NServiceBus saga data. NServiceBus also provides a scheduler for simple jobs but they don’t have persistent data, which for a periodic process you might want to keep.

Regardless of why you’d want only one saga entity around, with a singleton saga you run into the issue of a Start message arriving more than once. You have two options here:

  1. Create a correlation ID that is well known
  2. Force a creation of only one saga at a time

I didn’t really like the first option, since it requires whomever starts to the saga to provide some bogus correlation ID, and never ever change that ID. I don’t like things that I could potentially screw up, so I prefer the second option. First, we create our saga and saga entity:

public class SingletonSaga : Saga<SingletonData>,
    IAmStartedByMessages<StartSingletonSaga>,
    IHandleTimeouts<SagaTimeout>
{
    protected override void ConfigureHowToFindSaga(
    	SagaPropertyMapper<SingletonData> mapper)
    {
    	// no-op
    }

    public void Handle(StartSingletonSaga message)
    {
        if (Data.HasStarted)
        {
            return;
        }

        Data.HasStarted = true;
        
        // Do work like request a timeout
        RequestTimeout(TimeSpan.FromSeconds(30), new SagaTimeout());
    }
    
    public void Timeout(SagaTimeout state)
    {
    	// Send message or whatever work
    }
}

Our saga entity has a property “HasStarted” that’s just used to track that we’ve already started. Our process in this case is a periodic timeout and we don’t want two sets of timeouts going. We leave the message/saga correlation piece empty, as we’re going to force NServiceBus to only ever create one saga:

public class SingletonSagaFinder
    : IFindSagas<SingletonSagaData>.Using<StartSingletonSaga>
{
    public NHibernateStorageContext StorageContext { get; set; }

    public SingletonSagaData FindBy(StartSingletonSaga message)
    {
        return StorageContext.Session
            .QueryOver<SingletonSagaData>()
            .SingleOrDefault();
    }
}

With our custom saga finder we only ever return the one saga entity from persistent storage, or nothing. This combined with our logic for not kicking off any first-time logic in our StartSingletonSaga handler ensures we only ever do the first-time logic once.

That’s it! NServiceBus sagas are handy because of their simplicity and flexibility, and implementing something a singleton saga is just about as simple as it gets.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Categories: Blogs

Is LeSS meer dan SAFe?

Xebia Blog - Fri, 04/17/2015 - 15:48

(Grote) Nederlandse bedrijven die op zoek zijn naar een oplossing om de voordelen die hun Agile teams brengen op te schalen, gebruiken vooral het Scaled Agile Framework (SAFe) als referentiemodel. Dit model is -ook voor managers- zeer toegankelijke opgezet en trainingen en gecertificeerde consultants zijn beschikbaar. Al in 2009 beschreven Craig Larman en Bas Vodde hun ervaringen met de toepassing van Scrum in grote organisaties (onder andere Nokia) in hun boeken 'Scaling Lean & Agile Development' en 'Practices for Scaling Lean & Agile Development'. De methode noemden ze Large Scale Scrum, afgekort LeSS.
LeSS heeft de afgelopen jaren een onopvallend bestaan geleid. Onlangs is besloten dit waardevolle gedachtengoed meer in de spotlights te zetten. Er komt in de zomer een derde boek, de site less.works is gelanceerd, er is een trainingen tournee gestart en Craig en Bas geven acte de presence op de toonaangevende conferenties. Zo zal Bas 4 juni als keynote optreden tijdens Xebicon 2015, in Amsterdam. Is LeSS meer of minder dan SAFe? Of min of meer SAFe?

Wat is LeSS?
Less is dus een methode om een grote(re) organisatie met Agile teams als basis in te richten. Zoals de naam verraadt, Scrum is daarbij het uitgangspunt. Er zijn 2 smaken: ‘gewoon’ LeSS, tot 8 teams en Less Huge, vanaf 8 teams. LeSS bouwt op verplichte regels (rules), bijvoorbeeld "An Overall Retrospective is held after the Team Retrospectives to discuss cross-team and system-wide issues, and create improvement experiments. This is attended by Product Owner, ScrumMasters, Team Representatives, and managers (if there are any).” Daarnaast kent LeSS principles (ontwerp criteria). De principes vormen het referentie raamwerk op basis waarvan je de juiste ontwerp besluiten neemt. Tenslotte zijn er de Guidelines en Experiments, de dingen die in de praktijk bij organisaties succesvol of juist niet zijn gebleken. LeSS gaat naast het basis framework verder dieper in op:

  • Structure (de organisatie structuur)
  • Management (de -veranderende- rol van management)
  • Technical Excellence (sterk gebaseerd op XP en Continuous Delivery)
  • Adoption (de transformatie naar de LeSS organisatie).

LeSS in een notendop
De basis van LeSS is dat Large Scale Scrum = Scrum! Net als SAFe wordt in LeSS gezocht naar hoe Scrum toegepast kan worden op een groep van zeg 100 man. LeSS blijft het dichtst bij Scrum: er is 1 sprint, met 1 Product Owner, 1 product backlog, 1 planning en 1 sprint review, waarin 1 product wordt gerealiseerd. Dit is dus anders dan in SAFe, waarin een opgeblazen sprint is gedefinieerd (de Product Increment). Om deze 1 sprint implementatie te kunnen waarmaken is naast een hele sterke whole product focus, bijvoorbeeld ook een technisch platform nodig, dat dit ondersteunt. Waar SAFe pragmatisch een geleidelijke invoering van Agile at Scale toestaat, is LeSS strenger in de klaar-voor-de-start eisen. Er moet een structuur worden neergezet die de cultuur van de 'contract game’ doorbreekt. De cultuur van overvragen, druk, onduidelijkheid, verrassingen, en afrekenende verantwoordelijkheid.

LeSS is meer en minder SAFe
De recente inspanning om LeSS toegankelijk te maken gaan ongetwijfeld leiden tot een sterk toenemende aandacht voor deze aansprekende benadering voor de inrichting van Agile at Scale. LeSS is anders dan SAFe, al hebben beide modellen vooral in hun inspiratiebronnen ook veel gemeen.
Beide modellen kiezen een andere insteek, bijvoorbeeld mbt:

  • hoe Scrum toe te passen op een cluster van teams
  • de benadering van de transformatie naar Agile at Scale
  • hoe oplossingen worden gebracht: SAFe geeft de oplossing, LeSS de voors en tegens van keuzes

Opvallend is verder dat SAFe (met het portfolioniveau) uitlegt hoe de verbinding tussen strategie en backlogs gelegd moet worden. LeSS besteedt daarentegen meer aandacht aan de transformatie (Adoption) en Agile op hele grote schaal (LeSS Huge).

Of een organisatie kiest voor LeSS of SAFe, zal afhangen wat het best past bij de organisatie. Past bij de veranderambitie en bij de ‘agility’ op moment van starten. Sterk ‘blauwe’ organisaties zullen kiezen voor SAFe, organisaties die een overtuigende stap richting een Agile organisatie durven te zetten, zullen eerder kiezen voor LeSS. In beide gevallen loont het om kennis te nemen van de oplossingen die de andere methode biedt.

Categories: Companies

Clickbait is evil!

Scrum Breakfast - Fri, 04/17/2015 - 09:47
Anyone who has taken one of my Scrum classes knows that I believe that multitasking is evil! I have come to realize that clickbait is evil too.

Why? For the same reason. Clickbait, like multitasking, destroys productivity.  At least for my own purposes, I have decided do something about it, and I am wondering if other people feel the same way.

What is clickbait? Let's say you an article open a reputable site, like CNN.com. See all those links on the right side, like Opinion, More Top Stories, Promoted Stories, More from CNN? That's click bait. My guess is 1/3rd of any given web pages consists of catchy headlines whose sole purpose is to get you to spend more time on their site (or maybe, to cash in on Cost-per-Click syndication schemes, to get you go to some other site). By the time you get 2/3rd down the page, 100% of the content is usually clickbait.
What is evil?What do I mean by evil? Evil things are bad for you. Like weeds in the garden or corrupt politicians, you'll never get rid of evil entirely, but if you don't keep the weeds under control, you won't have a garden any more. So we need to keep evil things in check, lest you suffer the consequences. In this case the consequences is massive amounts of wasted time (at least for me it is)!
Why is Multitasking Evil?I have long known that if you have two goals, working them in parallel slows you down. If goal A takes a month, and goal B takes a month, then if you work on A and B in parallel, it will take you at least 2 months before either goal is finished and probably longer. So focusing on one thing at a time usually gives you better results. This is why focus is a core value of Scrum. 
It turns out the situation with multitasking is much worse than I thought.
I recently attended a talk by Prof Lutz Jäncke, the neuropsychologist at the ETH, on why teenagers are the way the are. (The short answer: they are not evil, they are drawn that way. They will be people again when their brains have finished developing -- sometime around 20 years old. But I digress.)
Listening to a neuropsychologist for an hour was very challenging! My brain was very tired after his talk, but one point really stuck out:Multitasking makes you worse at multitasking!To process information effectively, we need to filter irrelevant information. By responding to every stimulus that comes in, we lose the ability to filter junk.
He also asked, have you ever gone to do something on the Internet, lost track of what you are doing and then wasted a tremendous amount of time? You bet! Every day! Why is that? Clickbait. Catchy headlines and dramatic pictures pique my curiosity to send me to the next page.
I realized this was true, and I am now trying to turn down the interruptions on my computer and other devices.Using Adblock Plus to fight clickbaitI have used ABP for a long time to block most ads. But the standard filters only target ads, not clickbait. I discovered you can not only block links, but you can block specific HTML elements. After a bit of experimenting with the block element feature, I was able to filter the clickbait sections of the news and entertainment sites I visit most. 
I was amazed at the difference in how much less clutter and fewer distractions I encountered!
Do you have this problem? Would you like to use my filter list? I don't know if it is worth packaging these filters for distribution. Or of there isn't a filter set somewhere that addresses this problem. So I have simply published this list and installation instructions on as a google doc: http://tinyurl.com/clickbait-filter. It's still pretty short, but if you send me additions, I will integrate them. 
Clickbait is evil. I believe reducing clickbait will be good for my performance, and it probably will be for yours as well. If you install it, please put out a tweet like this:
"Just installed @peterstev's clickbait filter! #clickbaitisevil! http://tinyurl.com/clickbait-filter"






Categories: Blogs

R: Think Bayes – More posterior probability calculations

Mark Needham - Thu, 04/16/2015 - 22:57

As I mentioned in a post last week I’ve been reading through Think Bayes and translating some of the examples form Python to R.

After my first post Antonios suggested a more idiomatic way of writing the function in R so I thought I’d give it a try to calculate the probability that combinations of cookies had come from each bowl.

In the simplest case we have this function which takes in the names of the bowls and the likelihood scores:

f = function(names,likelihoods) {
  # Assume each option has an equal prior
  priors = rep(1, length(names)) / length(names)
 
  # create a data frame with all info you have
  dt = data.frame(names,priors,likelihoods)
 
  # calculate posterior probabilities
  dt$post = dt$priors*dt$likelihoods / sum(dt$priors*dt$likelihoods)
 
  # specify what you want the function to return
  list(names=dt$names, priors=dt$priors, likelihoods=dt$likelihoods, posteriors=dt$post)  
}

We assume a prior probability of 0.5 for each bowl.

Given the following probabilities of of different cookies being in each bowl…

mixes = {
  'Bowl 1':dict(vanilla=0.75, chocolate=0.25),
  'Bowl 2':dict(vanilla=0.5, chocolate=0.5),
}

…we can simulate taking one vanilla cookie with the following parameters:

Likelihoods = c(0.75,0.5)
Names = c("Bowl 1", "Bowl 2")
res=f(Names,Likelihoods)
 
> res$posteriors[res$name == "Bowl 1"]
[1] 0.6
> res$posteriors[res$name == "Bowl 2"]
[1] 0.4

If we want to simulate taking 3 vanilla cookies and 1 chocolate one we’d have the following:

Likelihoods = c((0.75 ** 3) * (0.25 ** 1), (0.5 ** 3) * (0.5 ** 1))
Names = c("Bowl 1", "Bowl 2")
res=f(Names,Likelihoods)
 
> res$posteriors[res$name == "Bowl 1"]
[1] 0.627907
> res$posteriors[res$name == "Bowl 2"]
[1] 0.372093

That’s a bit clunky and the intent of ‘3 vanilla cookies and 1 chocolate’ has been lost. I decided to refactor the code to take in a vector of cookies and calculate the likelihoods internally.

First we need to create a data structure to store the mixes of cookies in each bowl that we defined above. It turns out we can do this using a nested list:

bowl1Mix = c(0.75, 0.25)
names(bowl1Mix) = c("vanilla", "chocolate")
bowl2Mix = c(0.5, 0.5)
names(bowl2Mix) = c("vanilla", "chocolate")
Mixes = list("Bowl 1" = bowl1Mix, "Bowl 2" = bowl2Mix)
 
> Mixes
$`Bowl 1`
  vanilla chocolate 
     0.75      0.25 
 
$`Bowl 2`
  vanilla chocolate 
      0.5       0.5

Now let’s tweak our function to take in observations rather than likelihoods and then calculate those likelihoods internally:

likelihoods = function(names, observations) {
  scores = c(1,1)
  names(scores) = names
 
  for(name in names) {
      for(observation in observations) {
        scores[name] = scores[name] *  mixes[[name]][observation]      
      }
    }  
  return(scores)
}
 
f = function(names,mixes,observations) {
  # Assume each option has an equal prior
  priors = rep(1, length(names)) / length(names)
 
  # create a data frame with all info you have
  dt = data.frame(names,priors)
 
  dt$likelihoods = likelihoods(Names, Observations)
 
  # calculate posterior probabilities
  dt$post = dt$priors*dt$likelihoods / sum(dt$priors*dt$likelihoods)
 
  # specify what you want the function to return
  list(names=dt$names, priors=dt$priors, likelihoods=dt$likelihoods, posteriors=dt$post)  
}

And if we call that function:

Names = c("Bowl 1", "Bowl 2")
 
bowl1Mix = c(0.75, 0.25)
names(bowl1Mix) = c("vanilla", "chocolate")
bowl2Mix = c(0.5, 0.5)
names(bowl2Mix) = c("vanilla", "chocolate")
Mixes = list("Bowl 1" = bowl1Mix, "Bowl 2" = bowl2Mix)
Mixes
 
Observations = c("vanilla", "vanilla", "vanilla", "chocolate")
 
res=f(Names,Mixes,Observations)
 
> res$posteriors[res$names == "Bowl 1"]
[1] 0.627907
 
> res$posteriors[res$names == "Bowl 2"]
[1] 0.372093

Exactly the same result as before! #win

Categories: Blogs

Join Me in Australia in June!

Agile Product Owner - Thu, 04/16/2015 - 17:56

Hi,

This June, I’ll be busy in Australia presenting a SAFe SPC certification class, and speaking at Agile Australia as an invited spearker where I’ll lead workshops, and present “Nine Immutable Principles of Lean-Agile Development.”

Agile Australia 2015

Invited Speaker Track: Nine Immutable Principles of Lean-Agile Development

Half-day Workshops: Foundations of the Scaled Agile Framework

Sydney 16 June (two workshops); Melbourne 19 June 2015 (AM only).

In this half-day workshop, you’ll learn the foundations of the Scaled Agile Framework (SAFe), its values and underlying principles of Agile, Lean and Product Development Flow. This course will enable you to leave with an understanding of how the principles and practices of SAFe support large scale Agile Software Programs,  Lean Systems Engineering and Agile Portfolio Management. You’ll also learn about effective strategies for implementing SAFe, including the critical role that Leadership plays. These rare half-day workshops provide a personal setting that helps assure effective knowledge exchange.

See detailed descriptions and register at www.agileaustralia.com.au/2015/workshops. Earlybird registration closes on Friday 24 April 2015, and you can get a further discount using this promo code, AA15-SFND

SAFe Program Consultant Certification June 22-25, 2015

Logo_ContextMatters_DirectoryThis is the official 4-day SAFe Certification Program which results in the SAFe Program Consultant (SPC) Certification. I don’t get a chance to deliver this workshop myself that often anymore, especially in Asia-Pacific, so I encourage you to attend this unique event. We’ll be working with our local Gold Partners Context Matters, and you can contact Mark or Em for more information. Early bird pricing is available until 22, May 2015.

I hope to see you in Australia!

—Dean

Categories: Blogs

How We Can Inspire a Million Children to Become Engineers

Agile Management Blog - VersionOne - Thu, 04/16/2015 - 14:37

CoderDojo

We can all agree that inspiring children to become engineers and scientists is of utter importance. However making a difference on a local level seems intimidating. But it doesn’t have to be so difficult.

Learn how you can help us inspire a million children to become engineers by providing just a few hours a month and a safe, collaborative meeting space.

The Challenge

A few years ago Robert Holler, the president and CEO of VersionOne, challenged VersionOne employees to come up with an idea that would help children in our local community learn about programming and technology. This seemed like an exciting, though daunting, community service project.

At VersionOne we feel it is an important responsibility to help the community. That doesn’t mean just the agile community, but also the local community. In fact, Gartner recently recognized our strong community presence in the Magic Quadrant for Application Development Lifecycle Management report.

Typically when we do local community projects they are hosted by charities that manage projects. This project, on the other hand, would be completely managed by VersionOne employees. At first, this seemed like it might take a lot more time and effort than any of us really had. Nonetheless, we were very excited to try to make it work.event_258537472

There were a lot of ideas that would need varying degrees of resources, but after a little research we discovered the global CoderDojo movement. It was a movement started in Ireland in 2011 by an eighteen-year-old student and a serial entrepreneur. They developed a vision for creating a safe and collaborative environment in which experienced adult mentors help students who want to learn about technology and programming. Their model was fairly lean, making it easy to launch. Parents bring their kids and their own laptops, so we just needed space and mentors to get started.

Since VersionOne is an agile lifecycle management company, we were attracted to the lean nature of this program. Soon after, CoderDojo Ponce Springs was born!

How It Works

The way it works is that parents bring their kids, ages 7 through 17, with laptops in hand to a meeting place. (In our case, we also have a limited number of laptops that have been donated by VersionOne for kids who don’t have a laptop). Volunteers help the students learn a programming language or other creative tools.

event_258537462

There are tons of great free resources like TeachingKidsProgramming.com, Khan Academy, Codecademy, CODE.org, Scratch, Blockly Games, and more. This makes it less burdensome for new volunteers to help because they don’t need to spend hours and hours creating their own resources.

However, a number of our volunteers have devoted additional time to creating step-by-step tutorials and interactive tools tailored to the needs of students who have been through the beginner materials online and want to more challenging things like building plugins for Minecraft or learning about building HTML5 JavaScript games.

Student-Driven Learning

We should stress, however, that the bulk of the work is on the students themselves! Mentors are there to assist and inspire, but not to provide long, drawn-out lectures. Students rapidly get hands on with the technologies and help each other learn. It’s a theme that’s woven throughout the CoderDojo movement. One of its own mentors is Sugata Mitra, who has conducted some amazing experiments in child-driven learning. Check out his TED talks to see what he discovered about the innate curiosity and capacity for learning and teaching that children possess.

Want to Start Your Own CoderDojo?

We share code and resources in GitHub in this open source and forkable CoderDojoPonceSprings repository. Feel free to create a copy of it and start one in your own community! Our Dojos take place in downtown Atlanta and in Alpharetta, Georgia, but one of our volunteers cloned our content and started a brand new CoderDojo in Henry County, about 30 minutes south of Atlanta.

Impact

It has been exciting to see the program still going strong for more than two years. The majority of the students are returning students, a good indication of the value they are getting from the program. In fact, many of the students have been participating for the entire program, and are becoming quite advanced. These are the students who have encouraging parents and peers outside of the Dojo as well, because it takes more just attending a Dojo to become really advanced.

What a CoderDojo is best at is providing the safe, collaborative environment for students who are ready and willing to learn to meet other enthusiastic peers with whom they can collaborate and increase their knowledge. Research has shown that when someone is learning something new, they often learn best from peers who are just slightly ahead. A CoderDojo also provides students who want to help others an opportunity to start giving back immediately. In one particular case, we had a student serve as a mentor to much younger students. He is thirteen and participated in a special event with students from an Atlanta elementary school.

A Million Children

Making a difference in the world can seem like a daunting feat, but the greatest lesson that I think has come out of our CoderDojo project is that by simply providing some space and time, we can inspire the next generation to get excited about programming and technology.

We probably have 300 different children come to our program each year. Over the next five years we hope to inspire 1,500 children in our program. If each of the three chapters that launched after ours has the same results, together we will inspire 4,500 children. And if 223 companies are willing to join us, we all can inspire 1,000,000 children over the next five years.

Volunteers in our Dojo are currently collaborating on tools and content to make starting a new CoderDojo even easier, if you’re interested to learn more or start your own CoderDojo, email us at coderdojo@versionone.com.

So what do you have to say, will you help us inspire the next generation of software programmers?

Categories: Companies