RSS

Category Archives: Teams

Our Most Effective and Least Adopted Practice

Test Driven Development is one of the most effective practices from the agile community of practices, and also one of the least practiced regularly.  Why is that?  Why, 15 years after it’s introduction to the world via Kent Beck’s eXtreme Programming Explained, is one of the least adopted practices in the community?

Test Driven Development is One of the Most Effective, Yet Least Adopted Practices in the Agile Community

After years of practicing it and teaching it to others I have a few ideas on the subject.

First of all, Test Driven Development takes time to master.  It is conceptually simple, however, practicing test driven development on existing code, not written for tests tends to be very difficult.  And for some reason, even though there are some really great, and simple, techniques out there for working with legacy code (most prominently Michael Feathers’ book by the same title), people tend to be unaware or unpracticed with the well-known and well-documented techniques.  This means there is a skill-gap in using test driven development for existing, untested, code bases.

Most Developers are Unaware or Unpracticed at TDD Techniques for Code Not Written With Testing In Mind (Legacy Code)

Then there is the problem of the current way TDD is taught in the community.  We, the coaching community usually teach TDD on toy applications built for a classroom situation.  And students leave the classroom having learned the basic skills of TDD on greenfield applications and unable to apply them in their daily lives with aging code and tight deadlines.  The techniques of working with existing code are usually considered advanced and not broached until teams become practiced with the basics of TDD.  Unfortunately most teams don’t become practiced in TDD because they cannot apply what they’ve learned in class to most of their regular work.  Finally, although there are a few workshops out there where coaches teach TDD on their clients’ live code, they are by far and large the minority.

Most Students Leave TDD Training With The Ability to Practice TDD on Greenfield Applications Yet Their Day-To-Day Work Is On Legacy Code

For those lucky few, that learn TDD in a class, have follow-up coaching afterwards as they begin to master TDD in the few cases where it is possible, and advance enough to learn how to work with legacy code effectively there is one last hurdle. You need to make TDD a daily habit.  And making TDD a daily habit is easier said than done.  Even well practiced developers, who have been doing this for years, spend roughly 40% of their time writing tests and 60% of their time writing production code.  For those new to TDD, if they want to create such a habit, they will need to spend the majority of their time writing tests, not production code, to make things stick.  Add to that the existing deadlines.  Add to that managers that might become worried as velocity drops.  And, add to that, our own critics in our head that start to get worried that we are spending much of our time writing tests. To make TDD a habit, given such a large step size, we need an immense amount of personal and team motivation to make it part of our day to day lives.

Making TDD a Habit Requires Sustained High Levels of Motivation

Finally, if you learn TDD, get coaching to apply it to your existing code, are excited enough to sustain the levels of motivation needed to make it a habit, you have one final hurdle.  You are dependent on the rest of the team.  TDD is a brittle practice.  That is, we all need to be practicing TDD on the team to succeed.  If I write a test, and someone else breaks that test and does not fix it, then the TDD habit isn’t going to last.  Also, if I am the only one writing tests on the codebase, and my colleagues aren’t, we won’t ever reap one of the great benefits of TDD – a safety-net of tests that enables us to refactor regularly and changes the cost of change curve for our project so that is affordable to make changes late in the game.

TDD Is Fragile – Success Relies On the Whole Team Practicing

With all this stacked against us: a big learning curve, ineffective training techniques, a need for sustained levels of high motivation, and fragility, it is no wonder most of us in the Agile community do not practice TDD. We need a new approach to learning and practicing this most valuable of skills.

We Need a New Approach to Learning TDD

I’m not writing this blog as a lament; I’ve been working on parts of the puzzle for a few years and the last piece is now sliding in place:

Training: TDD is a difficult skill.  Teaching it effectively even more so.  We need to reconsider how we train TDD.  The current method has proven ineffective. We need to either go back to the old XP immersion classes which jam-packed a team into a shared workspace for 2-weeks of intense work, or we need to start teaching legacy code techniques at first encounter – preferably on live code – so students can transition to daily work after class.

Teach Legacy Code Techniques In Introductory TDD Classes

Building habits: the latest research on making practices into habits gives us new ways to be more effective in transforming the way we work.  One very effective technique is to take ridiculously small steps to reduce the levels of motivation needed and build the habit first.  Once the habit is there, then we can layer-on sophistication and complexity.  Specifically to TDD, we need to find the smallest possible step – an MVP of TDD training – that we use to build our habit first.

Design and Use an MVP of TDD Training

TDD fragility: Because TDD needs the whole team to work together effectively, we need to create a culture that encourages individuals on a team to write tests regularly.  The work I’ve been doing with Steve Peha on agreements-based culture is an effective way to make that a reality.

Leverage Agreement Based Culture Techniques To Get Full Team Participation

By putting those four techniques together we can, as a community, start benefitting from our most effective technical practice.

 
Leave a comment

Posted by on January 27, 2014 in Culture, TDD, Teams

 

Tags: ,

Estimates Are Always Low and Dates Are Not Met

Estimates are always low so dates are not often met.  That is a common occurrence in today’s software environment.  There are many, many approaches to this age-old question.  Relative estimation, no estimation, ideal days, and some fancy-shmancy techniques that are mathematically sound (given a few unsound assumptions) that are significantly impressive to those so inclined.

Whatever technique teams choose, they are often still disappointed.  So what gives?  Is there a practice out there that can save us?  My answer is both yes AND no.

The no part is easy. No, there is no one practice out there that can give us accurate estimates. Estimation is fortune-telling.  And all fortune-tellers (at least in software) are wrong.  Estimation is a lie.  Pure and simple.  But it is a very useful lie, because it really helps to have some indication about what and when we’ll get things done.

The yes part is a little bit more involved.  And it comes at the problem side-ways.  Instead of considering the estimation practice itself, let’s take a closer look at how teams typically fail with all estimation techniques – and then address the commonality instead.

Choose any single technique out there.  Whether it is relative estimation or anything else, there is a really good chance it is not just marketing fluff or bullshit.  In fact, there is a really good chance that some really smart effective people used it successfully and have probably helped others use it successfully also.

So what gives?  Why were these techniques successful in some places and unsuccessful in others?  Well, there could have been many reasons, here are some of the most common ones:

  • The original context was different, and it needs tweeking for the current context,
  • The technique was modified because it didn’t “fit” into our context, instead of trying to take the (usually negative feedback) and change the way we work,
  • We weren’t very disciplined in using it, because it was too hard, (check out We tried baseball but it didn’t work)
  • There were significant failures, and instead of taking that as a sign of the method giving us feedback, we took it as a sign of the method failing,
  • etc…

So let’s get back to yes, these methods actually work.  What I’ve found, again and again, when it comes to estimation, is that we are not able to effectively manage our agreements around how we will estimate and manage those estimates together.  We are not able to handle failures when they happen.  We are not able to confront issues when they arise.  We are not able to be disciplined in what we do.

These methods, like any methods, can be seen as agreements made amongst team members about how they will work together.  So if estimates are always low, then perhaps we need to look at our agreements; especially those we have broken.  And, perhaps, there is a reason that we are constantly giving low estimates.  Here are some of the ways some of the invisible impediments get in the way:

  • Safety:  Perhaps the #1 culprit when it comes to estimates.  If I don’t feel safe giving what I *really* believe something will take then you won’t get a good estimate from me.  If I don’t feel safe calling out an unreasonable estimate early – then there will be a problem.  And, perhaps the most common instance of all, if I don’t feel safe to say “I was wrong, I need more time” early on – then I’ll just soldier-on.
  • Respect:  Many times we don’t respect each other.  Take the common “Us vs. Them” mentality that is so prevalent in today’s business culture.  If the “Us” is managers, and the “Them” are developers, and we see them as incompetent, they will get that.  They will probably see us as being unreasonable and not able to understand the intricacies of software development. They will also act accordingly.
  • Ownership: Do we have a mentality of a whole team?  Do we have a shared task that we cannot complete alone?  Is our mindset that of “I own the results”?  If not, then it is all too easy to be in an obligation mindset and do estimates a year out because “you HAVE TO”.  And if you do that, then you disconnect from the results and can easily convince yourself “well they were asking for something unreasonable anyway, so I gave it to them although I KNEW it was the wrong thing to do”.
  • Intent: Why are we REALLY doing estimates?  Is it our intention to just get the managers off our backs?  Or, as managers, is our intention to hold people accountable (and even CYA?) if things go wrong even though we know estimates are a fiction?

So, if we are doing some sort of estimation method and it is not working, perhaps we need to look at the team dynamics.  Perhaps we need to look at how we work together as a team around our agreements.  And perhaps we need to look for some of those pesky invisible impediments and start on fixing them first – BEFORE we look at the estimation methods themselves.

 
Leave a comment

Posted by on December 16, 2013 in Culture, Organizations, Teams

 

Those Pesky Invisible Agreements

The Story

One of the things I do with my clients early on is work on team agreements; basically an explicit “how we work together” document.  And, not infrequently, I get people rolling their eyes and telling me that this is too heavy and mechanical.  “Are we trying to solve a non-existent problem?” some would ask.  And every once in a while I let up, and think that “we have it together, maybe I’m just overdoing it”, and I am always quickly reminded of why.

This happened to me again this week.  Let me tell you the story of how I caught myself and my team suffering from un-agreed-to agreements, and how we’re working on the solution.

I lead one of two teams – my team is primarily focused on consulting and working with clients, and the other team is primarily focused on making our eLearning application great.  We frequently work together and cross team boundaries and have a great working relationship – most of the time.

On my team we have different skill-sets and passions.  One of the people on my team is very passionate about coding and learning new languages.  We also have an internal tool that a few of us are great at, and many of us (like me) are not.  So, based on our experiences, and our passions, and the fact that we’ll be working with this tool very heavily over the next few months, when this guy said “I’ve got an idea of how to make this better” we (his lead and I) jumped on the opportunity and asked him to make it happen.

In a day he had a working prototype.  In just over three days he had something that is ready for daily use and already significantly better than the current solution.  So you would think this is a raging success – right?  Of course not, if it were, I wouldn’t be writing this blog post.

Our team member was so proud of his work that he shared it with the rest of the teams immediately so they could use his tool and give him feedback on how to make it better.  Unfortunately this wasn’t well-received.  Some members of another team became frustrated.  They felt that we have more important things to work on than something like this and they thought it was not time well spent.  They felt that our team should have involved them early on and that would have led to us putting our time to help them with what they need done – which is much more important and urgent than our project.

Getting that type of feedback hurts – especially when you are really happy with what you’ve produced.  You feel unvalued, and you can easily become angry.  And as one person described it, “this is beginning to look like politics in large organizations”.

As for me, I also got sucked in and felt that my team member was attacked and the conversation should have been with me.  I authorized this and if there is a problem then it should be solved with leaders.  (It does sound like big-office politics, doesn’t it?)  I fired off an email voicing these concerns and my anger.

I should have known better.  After sleeping on it, I saw our situation as a microcosm of what happens at work everyday.  I realized that we were behaving as if our expectations were agreements.  But they weren’t.  I was behaving like the other team had no right to talk to us about what we should and should not do – but there was no such agreement.  And, the behavior of the other team seems to indicate that they had an expectation of us checking with them before we wrote any code, and, of course, there is no such agreement.

Blame and Ownership

I had easily fallen into a trap that I’ve been in before.  I was getting upset because people were not meeting my expectations – invisible agreements.  Which led me to see them as obstacles, instead of people doing their best to make our organization successful – just as I am.  And I began to see things as “us” vs. “them” which is the bane of all large organizations.  I was blaming my peers.

But, from Christopher Avery, I learned how useless blame is – and how it can easily lead into a vicious cycle.  So, I asked myself instead, “how did I contribute to this problem?”  That led to a completely different way of seeing the problem and my colleagues.

Well, it turns out we had a bunch of assumptions about how things should be done that we never really brought to light.  Our actions lead me to believe that these might be those invisible, un-agreed-to, agreements:

  • Team A should ask Team B if they have spare time on their hands before they do something on their own,
  • Team B’s leadership should only talk to Team A’s leadership,
  • Team A doesn’t have enough visibility to know what is the most important thing to work on, they need to ask Team B,
  • Team B has no right to tell Team A what to do.

But the fact is we didn’t agree to any of these.  And this upset was not an unusual thing.  Upsets are to be expected.  How we handle upsets separates the highly effective from mediocre teams.

This wasn’t a totally bad thing, it was actually pretty good.  It told us we are transparent enough to know what other teams are doing.  It told us that we felt safe enough to disagree openly.  And, because we caught ourselves and are looking at our expectations of how we work together, it is a great example of leveraging upsets for improvement (thanks Christopher Avery!).

Personal Agility

If you’ve read any of my blog posts, you’ll know I’m all about the human dynamics of software development and creating a high performance culture.  One of the best individual tools I know for this type of situation is the Personal Agility Pyramid that we created at Gemba Systems.  (I know, it is not the best name, but it really works!)

Image

Here’s how the personal agility pyramid applies:

  1.  When you have a problem or an upset, you need to start with yourself before you send that angry email or tell someone about how they screwed up and you are frustrated.  Before you do anything check your a) safety, b) respect for the other person, c) ownership of both the problem and relationship.  Do not do anything until you are in a good place here.  (I missed that one and the angry email got out.)
  2. If you are like me, when you are upset you are very clear on what you don’t want, but not so clear on what you do want.  So step two is to get clear on what you want.  For me, it was “those who do the work decide how to do it”, “let’s create some very specific expectations and re-org the two teams so that we don’t need to go to each other before we do most things”, and “before you tell me why I made a mistake, ask me why I made the decisions I did.”
  3. Now that you know what you want, that doesn’t mean that is how it is going to work. In step 3 you need to go ask for what you want.  But remember, before you go ask what you want you really need to check step 1 – you’ve got to be safe, respect the other party, and come from ownership.  We are still in this stage.  We’re talking and aware of what we need but still haven’t reached on an agreement(s) to keep this from happening in the future.
  4. Make an agreement.  Now you have a concrete, visible, real agreement.  Congrats.  You are now potentially aligned.  Agreements – especially when you are new to this – aren’t always cut and dry.  People interpret them differently and can still be misaligned.  No worries, you’ll come back here at the next upset 🙂
  5. Confront a missed agreement.  Step 5 is not addressed until the next time you have an upset and you go through the steps and realize there is already an explicit agreement in place.  Unfortunately, this is where we usually start when we are upset.  This happened when I sent an angry email without going through step #1 and taking ownership of the problem and the relationship.

I’ve found this extremely effective for problem-solving and iterative and incremental alignment.  By doing this regularly when you have an upset it really helps your team continue to get better at the mushy stuff.

 
2 Comments

Posted by on August 27, 2013 in Individuals, Interactions, Teams

 

Tags: , , , , ,

Is It Safe?

The Scaled Agile Framework (SAFe), based on the work of Dean Leffingwell and his team, is a hot topic these days, and the discussion about it is characterized by hot language on both sides. Some people love it, others not so much. Taking sides on something like this is to be expected. But is it productive?

SAFe may not be the safest thing to talk about right now. But when it comes to discourse in the Agile community, we tend to be civil about it. So we thought it would be safe to come out with our own thoughts on the framework based on our experience of working with it, of reviewing the materials that describe it, and our  experience with Agile adoptions and implementations in general.

Getting the Big Picture

Over five days at the Agile 2013 conference, we had many opportunities to study “the big picture”. And each time we did, we felt like there was something missing. We realize now that that something is people.

In the Agile community we value individuals and interactions over processes and tools. We know that processes and tools are vital, but we acknowledge that their vitality is predicated on how people work together as they use them.

When we think about individuals and interactions, we think about organizational culture. Without a healthy workplace culture, processes and tools—even the very best—don’t work as well as we hope they will. We believe this is why so many Agile adoptions struggle and often fail.

Lots on “What”, Little on “How”, Less on “Who”

SAFe provides a detailed blueprint of what organizations can do structurally, but it is much less detailed about how things can be done, and it offers almost no information about interactions and individuals and the workplace culture that might support their success. This appears to have been a choice made with regard for the focus and scope of the effort as Mr. Leffingwell wrote in a recent blog post:

SAFe is largely quiet on the topic of implementation, change management and evolving corporate culture. We are focused on the framework content and continually understanding, and codifying best practices that people like you, in the field, discover. That is more than enough charter for us. However, we do understand that changing corporate culture to better reflect the behaviors and aptitudes of a Lean|Agile enterprise is a critical aspect. But, in our view, this is best achieved as result of success and better outcomes, rather than an object of attention to be addressed directly.

Let us consider this last sentence carefully. Is positive culture change best achieved by improved outcomes that result from new practices? Or are improved outcomes more likely to result from positive changes in culture?

We believe this is a false dichotomy. In our experience, the greatest successes and the most spectacular outcomes (the extraordinary productivity increases that research on Agile often describes) are achieved when culture and practice support each other in a positive feedback loop.

The Ever-Present, the Foundational, the Inseparable

Merely choosing to begin any type of Agile adoption is, in itself, a phenomenon of culture. An organization’s decision to trade one set of practices for another is only possible if the choice is culturally viable. Culture and practice are inherently intertwined and in play simultaneously. Our best chance of winning the game comes from leveraging both.

Culture is the soil in which the seeds of change are planted. To maximize our chances of success, we must tend to the earth as much as we tend to the business of getting things out of it. If the soil isn’t fertile when we start, and if it isn’t tended carefully along the way, growth is stunted, change withers on the vine, and in many cases, new initiatives die altogether.

SAFe is a strategy for change. It is a set of strategies, actually—a large and very impressive set that brings obvious value to organizations considering or executing large scale Agile adoption. But we have heard many times since organizational luminary Peter Drucker coined the phrase, that “Culture eats strategy for breakfast.” Why? Because even the best seeds have low yields in bad soil.

Back to Our Roots

We don’t have to go back to the Dust Bowl days or read The Grapes of Wrath to understand the importance of soil and, by extension, the importance of culture in advancing strategy. The soil of culture is where strategic change is grounded. Nor do we have to go back to the world-saving work of Norman Borlaug to know that the highest yields come from inspired and careful cultivation. But we must go back to Snowbird, Utah and the work that was done there in February of 2001, to remind ourselves of the fundamental ideas upon which Agile is based and why so many of us were so attracted to it in the first place.

When we do go back—when we read again the Manifesto and the Principles that define our work and enumerate the values of our global community—we see a group of people at the center of the software industry expressing the idea that people are at the center of software development.

Through all the projects and products we have contributed to and all our years of coding and coaching, we have come to believe that individuals and interactions matter, not only more than processes and tools, but more than anything else.

Culture is Complementary and Crucial

Culture without practice is daydreaming. Practice without culture is a nightmare. For SAFe—or any set of practices—to be optimally effective, a complementary cultural component is vital.

In affirming the importance of culture in Agile adoption and implementation, it appears that we are not alone. Mr. Leffingwell seems to be considering this as well. In the same blog post, he writes: “So maybe I’m wrong about just waiting for results before worrying about culture.”

To us this is neither a matter of right or wrong nor of waiting and worrying. Culture exists; it is here, now, in every organization where we work. It has mass and velocity; it is always moving in some direction whether we know what that direction is or not. And where it is moving always matters.

Just as we can make conscious choices about practice, so too can we choose to shape culture with commensurate intention. When we do, we bring under our control a force for powerful change while simultaneously reducing  risk. Is this a larger charter than attending to practice alone? Certainly. Do we think the effort is justified? We do.

We are happy to see that Mr. Leffingwell is also thinking about culture. It is our position that if we separate culture from practice, focusing on one to the exclusion of the other, we miss the opportunity to maximize results and minimize risk.

Haven’t We Known This Since the Very Beginning?

In pondering the interconnectedness of culture and practice, we we see why the dialog about SAFe has been so heated. In fact, we think Jim Highsmith saw this back in 2001, when he wrote:

…while the Manifesto provides some specific ideas, there is a deeper theme that drives many, but not all, to be sure, members of the alliance. At the close of the two-day meeting, Bob Martin joked that he was about to make a “mushy” statement. But while tinged with humor, few disagreed with Bob’s sentiments that we all felt privileged to work with a group of people who held a set of compatible values, a set of values based on trust and respect for each other and promoting organizational models based on people, collaboration, and building the types of organizational communities in which we would want to work. At the core, I believe Agile Methodologists are really about “mushy” stuff, about delivering good products to customers by operating in an environment that does more than talk about “people as our most important asset” but actually “acts” as if people were the most important, and loses the word “asset”. So in the final analysis, the meteoric rise of interest in, and sometimes tremendous criticism of, Agile Methodologies is about the mushy stuff of values and culture.

We too believe that people are most important. We believe that culture is the engine that drives the most extraordinary results and that inattention to culture is the most common impediment to the success of Agile adoption and implementation.

What Will Make SAFe Safer?

The question is not whether SAFe should be used as the strategic basis for large Agile adoptions. The question is this: What will make those adoptions most successful? We believe that culture is the answer to this question; we believe that culture is the key to making SAFe safer.

Culture is not a replacement for strategy; it is a complement to, and an enabler of, strategy. It is also the true scaling agent of large-scale change. Without sufficient attention culture change, strategic change is all too often gamed, and then thereby undermined, sometimes to the point of total failure.

Through our work, we have come to value interactions and individuals over processes and tools. That is, while we believe that there is value to the latter, we value the former more.

Amr Elssamadisy and Steve Peha

 
4 Comments

Posted by on August 20, 2013 in Culture, Individuals, Interactions, Organizations, Teams

 

Tags: , ,

Fooling Yourself About Ownership

Last week I was the agile conference in Nashville.  I had one session to present.  Unfortunately (and very fortunately) it was the very last session on the very last day.  That meant I had all week to worry about the presentation AND that the people attending would be exhausted.  Oh yes, and finally, I was up against Arlo Belshee and Esther Derby in two other sessions.  (I’m a very good complainer.)

Oh, the good part, I was co-presenting this with Steve Peha.  And Steve is a perfectionist.  To put it mildly, I’m not.  So Steve and I spent all week preparing for this session – one that I had taught in multiple forms over the years.  And I thought that there wasn’t much more to add or any new insights.  Boy, was I wrong!  So wrong, in fact, that I’ve got multiple blog posts that I’m sure are going to result from the week of preparing together.  This is the first of these blogposts.

Image

Ok, enough rambling (for now).  Let’s dig in.  Ownership.  Yes, we all know it is important.  In the software world, we’ve all learned from Christopher Avery about the responsibility process model and how we go through several stages: blame, justification, shame, obligation, and finally ownership.  And we know about this in all disciplines – business, education, government, etc….   Ownership is a well known (although not so well practiced) behavior for success.

So what’s new?  Well, it first came out in a discussion late Sunday night over coffee.  We were using some of our own life examples about what safety, respect, and ownership meant to us and testing my theory that if you have these three things, you are in a much better position to get great results – especially in a team.

And so as we were working through Steve’s example:

I was having a rough relationship with a more senior product owner in the company.  We couldn’t seem to work together.  He’d give me some requirements to take to my team and I thought I’d understood them.  At the end of the iteration, he’d say that we’d failed to meet his goals and I felt dejected.

And it kept happening.  No matter what I did, I couldn’t find a way to get aligned on what he wanted.  It was pretty bad.  I felt unable to do my job well.

It was so bad, that I basically said “ok, I’m just going to take notes without discussion and then do my best to work on this myself offline.   I’m going to make the best out of a terrible situation.”

So I’ve known Steve for several years, and he is really smart – I mean the type of smart that you wouldn’t believe.  Plus, he is humble.  He is a domain expert in the field – in fact he blew anyone away at the company in that regards.  He knew the domain significantly more than the senior product owner.  And so, for me, I could see that he probably intimidated the hell out of the other product owner and the other guy was just acting out; trying to feel less incompetent by pointing the finger at Steve in this way.

But Steve couldn’t see that, I could see he was still frustrated by the situation.  In fact, he felt he had taken ownership of the situation and made the best out of a very bad situation.  And, in a way, he had.  He had taken ownership of the requirements to be written.  But that obviously did not lead to success.

What Steve had done was the easy part.  It is also the part that doesn’t really matter as much.  As we talked about it Steve came up with a new insight:

I blew it!  I fooled myself into thinking I had taken ownership of the situation, but all I did was create more work for myself.  I dropped the relationship because it was too painful.

Steve had not taken ownership of his relationship to the senior product owner.  He just let it go.  And, in a team, that is exactly the wrong thing to do.  If you are in a team setting, you will be much less likely to succeed if you only focus on the problem – or your part of the problem.  Even if you focus on the entire problem – your part and everyone else’s part – you are still in a bad spot.  You’ve created more work for you and ignored your relationship to other team members.  You need them to succeed.

So, to maximize your chance of success, you must own the relationship also.  No, you can’t control anyone else’s actions, and I’m not suggesting that you do.  What I am suggesting, is that for successful teamwork you must own the relationship as well.

Once you’re there mentally – owning the problem and relationship – you are ready.  That means not blaming others for the failed relationship; not justifying why it deserves to be a bad one because the other person is an asshole; not making any excuses.  You roll up your sleeves and work on possibly the single most challenging and rewarding work there is on teams; working on relationships with your colleagues.

The ‘how’ of fixing relationships is covered in many books, and I’ve got much to say on the subject.  But that will come out in later posts.  What I want you to remember is this: true ownership is ownership of the problem and your relationships to your team members.  All too often we fool ourselves into thinking we are coming from ownership by only owning the problem.

 
1 Comment

Posted by on August 13, 2013 in Individuals, Interactions, Teams

 

Tags: ,

Why are most Agile Adoptions Failing?

I’ve moved this post to Industrial Logic’s blog.  I’ll continue to share my thoughts on my personal blog here and share the more mature articles to Industrial Logic’s site.

– Amr

 
1 Comment

Posted by on June 17, 2013 in Culture, Individuals, Organizations, Teams

 

Tags: , , , , , ,

The value of Values

Values.  Really?! Come on!

Introduction

Values are one of those over-used ideas that many of us roll our eyes when we hear it discussed (I strongly resemble that previous remark).  To me, it lands in the same category as “empowerment” – over-used, rarely beneficial, mostly BS in the work world.  However….

However, I’m writing a blog entry about values.  As an individual, I have values that I feel very strongly about (even if many times they are implicit and I’m unaware of them).  And I find that if I am in a place where my values don’t fit with the mainstream then I begin to not enjoy the work.  And what may have been enjoyable and fulfilling in other circumstances is now a chore.  For me personally, it grates enough that I end up leaving the situation if I can’t change it.  And how do you change the values of an organization anyway?!

A Theory

The values of a team or an organization are pretty heavy stuff.  What are the values of an organization anyway?  The real ones, not the ones on a plaque – what are they?  Here’s an idea: they are the culture of that organization.  The culture of an organization is defined by the values of the group.  They are usually invisible and likely different from the official ones written by the leaders with the help of expensive consultants.

But it gets a bit messy here because the values of the group are not necessarily the values of the individuals in that group.  The values of the group are the expectations in the ether.  (Sorry, don’t have a better definition, ping me if you do.)

Ok, so far we have:  Values of the individual are present – we all have them and feel strongly about them – although we are not all aware of them. Values of the group are there also.  However, they are not the total sum of the values of the individuals since we often find conflict between the values of individuals within the group.

When values of the group align with the values of individuals, something magic has the potential of happening.  I don’t know if it always does – but those “magic teams” that I’ve personally witnessed and have been part of – have it.  They have alignment between the individual and group values.  Now, if those values happen to help produce great software – wow!

A Concrete Instance

So, I had a conversation with a very good friend of mine about his software development team and how there is a huge Us vs. Them between the business analysts and developers.  The developers are not happy with the requirements – they are not concrete enough – and they want them right the first time.  The business analysts are afraid of the developers since they sometimes provide less-than-perfect requirements.  And if they ever change their minds once something has been built, and fail a story, even though it met the letter of the law, all hell breaks loose.

So, is this an agile team?  Ok, I don’t really care that much if they are agile, but if we look at the behaviors we can see the following values executed:

  • We succeed and fail alone – as individuals – not as a team.  Developers are upset when business analysts fail a story even if the act of testing the code shows that the requirements were wrong.
  • We prefer getting things right the first time over iterating. Developers want business analysts to get the requirements right the first time around and are upset when they don’t.
  • Achievement is more important than respect and a safe environment. Business analysts are intimidated by developers and will sometimes overcompensate on their story writing creating waste.

My judgment may seem a bit harsh, and it is probably missing many of the nuances that are really happening on the ground.  However this is not the first time I’ve seen this dynamic (sometimes reversed) and it is not unusual in software development teams.

Remember I said that “being agile” is not important, but creating software is very important.  This is a product team, and innovation is extremely important.  The lack of safety and lack of ownership evidenced here will always be in the way of this team’s ability to be innovative and become a high performing team.  No amount of technical prowess can remove this dynamic; in fact, if there was more technical prowess on the team it may accentuate the problem.

I have been talking about individual behaviors leading the way to individual values.  But if we trace back just a bit, to the culture and environment of the organization, we can learn some things too.

  1. There is no clear negative consequence to creating an unsafe environment.  Does this mean that safety is not a priority?
  2. There is no clear negative consequence to claiming individual success while there is a failure in another part of the team.  Does this mean that team success is not rewarded?  Or maybe that individual success is rewarded much more than team success?
  3. There is no clear negative consequence to pushing for things to be “done right the first time” as evidenced by the backlash against business analysts changing their mind.  Does this mean that there are people who are allowed to make mistakes (developers through the development cycle through TDD) and people who aren’t (business analysts getting feedback from working software and changing their minds)?

What would happen if ….?

What would happen if this team had a culture that values:

  • Iterative learning.
  • Learning through failure.
  • Succeeding as a team.
  • Ownership.
  • Safety.

And furthermore, what would happen if these values were clear, upfront, repeated by management again and again whenever addressing difficult problems?  Would people change? Maybe.  Would everyone stay at the company?  Probably not.  Would they build better software?  Absolutely.

In the end – it is much easier to poke holes into something out there when you are not that close.  My friend who related this story is one of the single best managers I’ve met in my life.  He sees these issues and works on them, and in the end, I’m sure he’ll find a path to lead his team out of these difficulties.

 
3 Comments

Posted by on May 17, 2013 in Culture, Interactions, Teams

 

Tags: ,