Skip to main content

Posts

Showing posts from 2012

S.O.L.I.D. software class design principles

Perhaps you have heard of the S.O.L.I.D. software design principles of Object Oriented Design, but lack the motivation to practice the principles in every day coding.  If this is your problem, then here is the solution.  Six motivational posters to visualize and remember the principles.  Print them out and display then in your team room.  Watch the quality meter go up.










Single Responsibility PrincipleLiskov Substitution PrincipleOpen / Closed PrincipleInterface Segregation PrincipleDependency Inversion Principle

SOLID Motivational Posters, by Derick Bailey, is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

See Also:
Agile is an Integral Equation.

The Four Elements of Simple Design Putting an Age-Old Question to Rest   JB Rains




I want it all, but don't change my connectors

People just don't like change.  Case in point, all the hubbub over the new iPhone 5 lightening adapter plug.  So many people are upset that the connector is changing from the 9 year old iPod 30 pin adaptor to the new lightning adaptor.  Yet at the same time the iPhone 5 pre-orders have record sells (2 million in first 24 hrs).

Why did Apple force this change on it's loyal customer base?  Dont they know we humans don't adapt well to changes.  Oh yes, we want the new shinny iPhone but we want it to stay the same AND get better.

Maybe this picture will give you a clue as to why Apple changed the connector. It shows a typical iPhone and it's 30 pin connector, with a Raspberry Pi.  The Raspberry Pi is a full fledged computer on a board.  Take a look at the board and the most obvious thing is all the connectors.  The interface connections are the largest things.  They occupy the most space.

The reason for the change?  So that Apple could pack more techy goodness into the sam…

Best T-shirt at Agile 2012

What was your favorite T-shirt seen at the Agile 2012 conference?

One awesome t-shirt was seen on Adam Yuret @AdamYuret.

Ninja + Rockstar != Teamwork. In his article the Myth of the Rockstar Programmer, Scott Hanselman lays out these definitions:
Junior Engineer - Creates complex solutions to simple problems.Engineer - Creates simple solutions to simple problems.Senior Engineer - Creates simple solutions to complex problems.Rockstar Engineer - Makes complex problems disappear. Speaking of t-shirts; his graphic would go very well on a t-shirt wouldn't it?  Well, I created one very similar a few months ago.   Obviously there is an I in TEAM! t-shirt - buy one now on Zazzle.

This is the best t-shirt give away I received, the Tasty Cupcakes Got Game? t-shirt.



See Also:  Best t-shirt at Agile 2011

Exercise:: Pair Chess Game

Some years ago I designed this exercise for a Pair Programming simulation using the media of the game of chess.  The idea was to have a pair on each side of the board, they would work together to finish a famous game against their opponents (a pair also).
I never used the exercise because the developers I was working with didn't know the game of chess, and didn't seem interested in the simulation.   If you use this please let me know how it works out.



Garry Kasparov (White) vs X3D Fritz Computer (Black)
Man-Machine World Chess Championship 2003 Game 1 (after 31 ... Bxa2) White to move




Instructor material for Chess Game Pairing Exercise
Required Materials
Chess board and pieces (one per 4 students) Timers (optional) Diagram of an in-progress chess game(s) (attached)
Introduce the Exercise
Pair programming is generally thought of as an XP (extreme programming) practice.  In true Agile form we are borrowing a practice that has value to use in our process.  Pair programming is when two (or …

Exercise:: Mapping Engineering Practices to Agile Principles

What are the necessary and sufficient engineering practices that an agile team needs to support the Agile Manifesto's 12 principles?

There is no one right answer - yet there are some very common patterns one sees when this exercise is repeated for multiple teams within an organization transitioning to agile software development.  From this analysis one could derive the set of core practices for your agile organization.





Exercise :: Mapping Engineering Principles to Agile Practices(PDF) by David Koontz

Facilitation Guide
Set up Print all material, one Agile principle per page (enlarge if you wish).
Hang the Agile Manifesto on the wall.
Hang the 12 Principles on the wall.
Hang the suggested list of Practices on the wall.

Have multiple colors of sticky notes & lots of pens/markers.

Introduce the Manifesto and the 12 principles
Discuss the Agile Manifesto - tell the history - describe what a process is and is not. Is “Agile” is a process?  Describe a philosophy - could it be that?

Disting…

Stress in Speakers at Agile2012

I chatted with a lot of presenters at Agile2012 last week.  So many of them were releived to have been done with their presentations.  I think the conference creates a bit of stress in the speakers.

I didn't have any stress as a volunteer.  I helped out with the conference sessions, collected feedback forms, tried to help the speakers right at that most stressful moment, before the first joke and before the audience gets into the topic.

I think all the speakers that I saw did a wonderful job.  I volunteered at the experience report and case study stage. These are the non-professional speakers. The nervous energy in the room rises very predictably in these session.

So I suggest the speakers take a vacation after this conference - you earned it.


Created by: www.MastersDegreeOnline.org

Agile in a CAN

Wow - look at the number of people that are sponsoring this awesome idea,  Agile in a Can.  Proving once again that crowdsourcing is the 21st century answer to robber-barrons of the 19th century.  Yes - "the 21st century is when it all changes" - Capt. Jack Harkness.

You should hurry over to Agile In A Can website to get in on this once in a life time deal.


Limited supplies of the active ingredients will make this product more and more valuable into the future.

Traditional Test Engineering is DEAD

Here's an outline of Jason Arbon's arguments for Agile methods leaving traditional test engineering in the dust.

In the Better Software (May/June 2012) article "Traditional Test Engineering, Your Days are Numbered; Turing Software Quality on Its Head."

"In this shift to agile, late cycle or manual testing efforts are often dropped or, worse, the program management and development teams embrace agile and continuous practices, but the old world regression test cycle is left hanging around like an archaic ritual that adds a few days or weeks to an engineering process that wants to be continuous."

Test Plans - quick cycles out pace the ability of managers to create the traditional test plan. Modern software development teams do more concurrent testing than was ever done in traditional processes.

Regression Testing - ninety some precent pass all the time, is this a good use of time and energy. Create a risk view of the application under test. Use automated tool…

Active Listening: The 5 Second Rule

Learning to listen is a difficult skill to teach. On the surface it appears to be a passive activity. It is the reflection portion of the listening activity that might need enhancement. Here is a group exercise that will strengthen your team's ability to listen. The 5 Second Rule. After a person speaks, everyone must count to 5 (5 seconds) before anyone speaks. If you wish to speak next, you must physically count on your raised hand via fingers 1, 2, 3, 4, 5. Practice this a few time, counting slowly (maybe extend it to 10 seconds if there are lots of fast counters). If two or more people raise their hands to speak next, then they (not the group) decide the speaking order. This pause in the immediate point, counter-point might allow the conversation to become multi-perspective, rather than percussive-discussion, like a ping-pong match. Most teams will expand their views and learn to be inclusive during dialogues with this technique. When multiple people want to speak t…

Missing Affordances

What are the affordances that are missing from the virtual task board?  There are quite a few.

The perceptual psychologist J. J. Gibson coined the term in the late 1970s to mean the relationships that an actor (person) can have with objects in the world.  Then Donald Norman popularized the term in his book "The Design of Everyday Things."

You may think these affordances don't matter much.  But after you have them (via using a physical task board) you will find they are sorely missing.

I can:
Hold a task and show it to you. Now you know exactly what I'm talking about. Many virtual task board have no way of denoting a selected task. Pick a different task and hold it. Now I know you are talking about that one, but I'm still referring to the one I hold. Move a task. The motion is the affordance. Not the before and after location of a task - don't confuse position with motion. Pass a sticky note to you, now you have it and this denotes responsibility to perfo…

I Would Ask 500 Whys

'I would ask 500 Whys'

When I stand up yeah I know I'm gonna be
I'm gonna be the man who stands up next to you
When I unit test yeah I know I'm gonna be
I'm gonna be the man who tests along with you


The Proclaimers - I Would Walk 500 Miles
If I get drunk yes I know I'm gonna be
I'm gonna be the man who gets drunk next to you
And if I haver yeah I know I'm gonna be
I'm gonna be the man who's havering to you

But I would ask 500 whys
And I would ask 500 more
Just to be the man who asked 1000 whys
To help your process improve.

When I'm working yes I know I'm gonna be
I'm gonna be the man who's working hard for you
And when the praise comes in for the work I'll do
I'll pass almost every accolade on to you

When I program yeah I know I'm gonna be
I'm gonna be the man who pair programs with you
And if I falter well I know I'm gonna be
I'm gonna be the man who's learning with you

But I would ask 500 whys
An…

Agile Software Development Timeline

A Timeline by definition is an iterative document - it is incrementally built minute by minute with no known completion point. However the historical entries on the time line might be elaborate also. This is a rough draft... please comment with new (better - more important, more accurate) events. Or point me to better resources - other historical time lines etc.  Thanks!

Watch Earth's history on a 100yd football field timeline.




1202Fibonacci introduces Arabic numerals (0-9 and place value) to the West via book “Liber Abaci” (Book of Abacus or Calculation).  The Zero is born!

1950s Demining teaches in Japan

1960s NASA’s Project mercury uses test-first development and micro-increments

1971The Psychology of Computer Publishing by Gerald Weinberg - largely ignored

1976 EVO Methodology by Tom Gilb

1980s Japanese car companies expand into Europe & Americas

1986 New New Product Development by Takeuchi & Nonaka

1986 No Silver Bullet by Fred Brooks - advantages of Incremental &am…

Tyranny of the Clock Face

Why do people schedule meetings and work-session into an arbitrary constraint of one hour blocks? Are we not capable of looking at the purpose and expected outcomes of the gathering and then estimating the appropriate duration needed to achieve the outcome? Do we not account for the cost and waste of having to reset context each time we meet and get to a partially finished state.

It is the tyranny of the clock face, broken into one hour increments. The clock is just a human abstraction of time, an arbitrary measuring instrument. It is not a prescription for scheduling. I think we are misunderstanding the purpose of the clock. One doesn't drive a car by the speedometer.

This obsession of one hour increments of work is ridiculous. I wonder where we learn it. Oh - yeah, school, where we learn many bad habits.

See Also:
HBR article Yes, You Can Make Meetings More Productive


The Hummingbird Effect: How Galileo Invented Timekeeping and Forever Changed Modern Life
by Maria Popova.  H…

How do you find a Word?

I'm wondering if there are better techniques or resources for finding new interesting useful words than the techniques I'm currently using. My current technique is to just happen upon a good word - either in print/web/conversation. I have to admit, however, that few happen in conversation, fewer still in print such as news (typically a 5th or 6th grade reading level) - most new words are sourced via books and web articles. How do you look up a word that means, what you want it to mean - yet you don't know the meaning of? The inversion of the Humpty Dumpty quip in Through the Looking Glass.
"When I use a word," Humpty Dumpty said, in rather a scornful tone, "it means just what I choose it to mean — neither more nor less."
"The question is," said Alice, "whether you can make words mean so many different things."
"The question is," said Humpty Dumpty, "which is to be master — that's all."

The web has a few unD…

Internet usage reduces brain function

Here is an info-graphic that while interesting makes me a bit sad.

How the Internet is Ruining Your Brain

I do believe than we have entered into a very volatile micro-evolutionary portion of human history.  I do find that I off-load to various electronic media pieces of information and knowledge that might have years past be committed to memory.  I'm not sure this is a bad thing, yet we may surprise ourselves at the brink of our extinction.   We are in the exponential age - or as some call it the anthropocene.

So there are some controls one could place on the rot of your mind.  Try SelfControl an application that blocks the internet for a period of time - perhaps long enough for you to be productive.  I also tried RescueTime for a while, but found it not very helpful.  It did not motivate me to change my behavior.

I do find that many of us are delusional about our abilities to multitask.  My superpower is a slightly above normal ability to stay in a rut.  Single-Track-Man does not …

Are you imagining proper form?

Just imagine proper form and you can increase strength in your pinky finger 35%.

Imagine Increased Muscle Strength!-Experiment

In a fascinating experiment, researchers at the Cleveland Clinic Foundation discovered that a muscle can be strengthened just by thinking about exercising it.
For 12 weeks (five minutes a day, five days per week) a team of 30 healthy young adults imagined either using the muscle of their little finger or of their elbow flexor. Dr. Vinoth Ranganathan and his team asked the participants to think as strongly as they could about moving the muscle being tested, to make the imaginary movement as real as they could.

Compared to a control group – that did no imaginary exercises and showed no strength gains – the little-finger group increased their pinky muscle strength by 35%. The other group increased elbow strength by 13.4%.

What's more, brain scans taken after the study showed greater and more focused activity in the prefrontal cortex than before. The researchers sa…

The 21st century definition of TEST

What is the difference between a test and an experiment?


I propose that in the 21st century and the realm of software development that these definitions must morph to our needs.  There is little difference in the general definition. Yet many people in quality control or quality assurance departments appear to dislike the word experiment.   Defining actions a person takes to perform a 'test-case' as an experiment appears to rankle feathers.   I find this interesting.

Test - (verb) take measures to check the quality, performance, or reliability of (something), esp. before putting it into widespread use or practice.

Experiment - (verb) perform a scientific procedure, esp. in a laboratory, to determine something. I would like to define that within the modern software world that the word test have a more specific meaning.  I propose:
Test - (verb) a highly repeatable measure to check the quality, performance or reliability of (something), esp. before (something) is created and then p…

7 Aspects of a GREAT Impediment Sticky

Just making an impediment list is not good enough.  Yes, it is a start.  But only the start.  Raising impediments at the daily stand-up meeting shows that a team is mature enough to recognize that all problems are better solved in the light of day.  Problems are easier to solve when more than one person is working on the issue.  One of the first steps to getting multiple people working on an impediment is to make it known to the team.

Yet this is the start, not the end of the process.  Yes many newbie teams believe that the Scrum Master's job is to resolve these impediments.  That is a wonderful misconception and will work for a while as the newbie team learns the power of an agile mindset.  But only the maturing teams learn that it is their job to remove these impediments.

So what are 7 aspects on a great impediment card living on the top of your impediment list?
Title - this should be a short pithy phrase; not a dissertation title.Description - a few sentences that anyone readin…

Video of The Marshmallow Challenge at Agile Games 2012

Agile Games 2012 conference in Cambridge.

"The Marshmallow Challenge is a remarkably fun and instructive design exercise that encourages teams to experience simple but profound lessons in collaboration, innovation and creativity."


David presenting the challenge at Agile Games conference.


Watch Tom Wujec's TED.com talk about his many experiences with this exercise.

Agile Games 2013!



See Also:  Results Oriented Web conference Marshmallow Challenge workshop

Don't mistake the Marshmallow Challenge with the Marshmallow Test by Walter Mischel.  One is a design challenge - the other is an experiment designed to see if personality traits such as self-control are malleable.

Product Owner Scrum Immersion Workshop

Pictures from a recent Product Owner Scrum Immersion workshop.

Here are some Panoramas of the simulated sprints (also see photosynths).