CMMI and Agile Blog

July 31, 2014

Viewing Software Practitioners as the Customer for Your Organizational Practices: More Motivation for Practice Slices and Patterns

In last week’s blog I talked about the idea of deploying process improvements through what I referred to as practice slices and patterns.  I motivated this idea through an analogy to how we build and deploy large complex systems.  Today I want to provide another analogy to further motivate this idea. 

Today, a popular approach to describe and communicate requirements for software systems is User Stories.   A form that is often used for these stories is: 

“As a… [insert here your user role],

I want to… [insert here what you want from the system],

so that… [insert here why you wants this]”. 

This form of capturing requirements is more appealing for many software practitioners today than the traditional “shall statement” approach, but why do you think this is the case?

One reason, I believe, is because it is more personal.  It helps to put the reader of the story in the shoes of the user of the system.   In this way it communicates more effectively the real goal of the system from the perspective of that user.   The “why you wants this” is important because when we understand why a user wants something it can open up other possibilities not envisioned by the user potentially leading to a more effective solution.  

With User Stories the intent is to keep the written information to a minimum using it to stimulate a conversation where the details are fleshed out over a number of iterations.  Part of the reason this works is because it is a way to circumvent the ambiguities of written language.  Many would argue today that this approach has helped us develop software that is more responsive to user needs and has helped us reduce waste by creating fewer features that are never used. 

Now, let’s jump to the problem of developing and deploying useful practices for software developers.  The analogy I want to employ now is for you to think about your software practitioners as the customers for your organizational practices.

How often do we hear software practitioners say:

“My company processes don’t really help me with the real problems I face each day.” 

This is a common refrain that I hear over and over in organizations that have developed processes the traditional way.  So why does this happen?   Could it be the same problem that we have traditionally had with satisfying customers of our software systems?  Wouldn’t it make sense to engage our software practitioners in a similar way asking them to share their personal stories so we better understand what they want and why they want it?  

This is what we are essentially doing when we deploy our practices using practice slices and patterns.  We are developing user stories first from the software practitioner perspective.   The user story allows us to abstract the essentials of common software practitioner scenarios.  It helps us place ourselves in the shoes of our practitioners by asking them as software practitioners what do you want, and why do you want it?

 When I have discussions with software practitioners in my client organizations I listen to their stories.  I listen for their biggest pain points that they need help with now and when I abstract out the essentials often I hear feedback such as:

“As a software practitioner, I want more guidance in what I should do when I don’t understand a requirement, so I can build the best software to meet my customer’s needs.”

And

“As a software practitioner, I want to know what to do when my testing is taking too long, and I am getting pressure from my manager to finish.”

And

“As a software practitioner, I want more help in how to  handle a design risk, when the alternative designs are going to extend the schedule and I am getting pressure to finish on time.” 

Also, keep in mind that the guidance we give in response to these stories is best if it doesn’t come from an outside consultant or an internal process engineer, but rather from the expert practitioners in your own organization.  This is why we involve the experts inside client organizations in the discussions eliciting the options proven to work in the past within each organization, and also eliciting the consequences of common poor decisions.  When we add in the options and consequences based on how our experts would handle these situations we now have the patterns to use in training the less experienced personnel in the organization.

Of course the three stories listed above are not all a software practitioner needs.  But if it makes sense to deliver software in small increments, listening to the customer’s feedback before delivering the next increment, shouldn’t we be doing the same when delivering our practice improvements to our software practitioners?  

In other words, start with the first three stories your practitioners communicate to you because those are mostly likely the ones that are hurting their performance, and your organization’s performance, the most.    

This is what we are doing when we deliver process improvements with practice slices and patterns.   We are implementing process improvement in an agile and iterative way, and we believe everyone should be implementing their improvements this way regardless of what your practices and methods look like – agile, waterfall, or something else. 

Once you get started down this path you should also be asking a few other question to your practitioners at regular intervals, such as:

  • Do the practice slices and patterns we have already deployed help you?
  • What are the next most important user stories that you need help with? 

If a pattern previously deployed isn’t helping, change it in the next iteration, or delete it. In this way you keep your practice aids lean and of high quality always helping your team. 

You can build a library of practice aids in this way, based on continual conversations with your practitioners, providing assurance that you are giving your practitioners what they need most.  In this way you are also transferring the most current knowledge of your experienced people to your less experienced people raising the overall competency of your people. 

For more tips and pattern examples refer to the book, “15 Fundamentals for Higher Performance in Software Development” available at: www.leanpub.com/15fundamentals or http://www.amazon.com/dp/099045083X/ref=cm_sw_su_dp

 

Advertisements

1 Comment »

  1. Paul, Great post. I am working with a client whose entire organization is highly technical. We found they were having trouble communicating with their users who are not at all technical and the development team as a result was having trouble building a responsive product. We started profiling users to try to help resolve this problem. Your approach will help focus the team on the less technical aspects of the design I think they were having a problem understanding.

    Comment by grebey — July 31, 2014 @ 1:16 pm | Reply


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: