Scrum Needs More Than Just Chickens and Pigs

If you’re reading this, I assume you already know the “chicken and pig” roles in Scrum.  If not, go here to check it out.

Okay, pigs have “skin in the game”, and chickens…well…don’t. Since some people hate the chicken and pig metaphor, I’ve also referred to it is “committed” (pigs) and “interested” (chickens) (I didn’t come up with this, but I don’t remember who did).

The chickens are not allowed to talk in the daily Scrum meetings. They are only allowed to provide feedback in the Sprint Review (and of course at any time to the Product Owner, Scrum Master, or as requested by the Team).

I think there are two kinds of chickens. There is the kind that provide no valuable input. They historically have done nothing other than cause distractions. Whatever it is your building may have an indirect impact on their lives at best. These people are typically in some kind of management, or senior role.

The second kind of chicken are those folks we typically refer to as “SMEs” (Subject Matter Experts). We may or may not be building a solution for them. However, we rely on their expertise to enable us to deliver value. These kinds of chickens are usually are involved in legacy application development or re-platforming efforts. You probably won’t experience this group if you are doing new development. These types of chickens are needed when the Scrum team just does not have enough of the institutional knowledge needed to consistently deliver value.

Both of these types of chickens have one thing in common. They do not have “skin in the game”. If the project fails or succeeds, there typically will be little (or no) consequence for them. What they do NOT have in common is this; the involvement (or lack thereof) of the second kind of chicken can either bring a team to success, or to a miserable failure.

Teams will typically lump both types of chickens together and treat them the same way. It’s really insulting if you think about it. If I was *critical* to the success of a project but am labeled a “chicken”, and if I identify a risk, I shouldn’t have to wait to speak until spoken to (which is implied with chickens), or until the Sprint Review.

What do we call this third group? They really aren’t chickens as defined in the Scrum context. However, they aren’t pigs either since they aren’t the Product Owner, Scrum Master, or Team (those who do the actual work). We will fail without them.

Advertisement

Expiring CSP (Certified Scrum Practitioner)…Do I Care?

Scrum Rocks

I love Scrum.  It’s freakin’ awesome. It is simple and yet wonderfully challenging. When implementing for the first time, impediments (of which most have always been there) smack you in the face, and you are forced to make a decision…knock them down or ignore them.  Sadly, the path of least resistance is to ignore, so that is what tends to happen.

Scrum makes you focus on empowerment and value.  Scrum also forces “the business” to be a part of the process with the Product Owner.  Scrum forces you to deliver potentially shippable code at regular intervals.

One of my favorite things is the “chicken” and “pig” thing.  The pigs are the ones whose neck is on the line to deliver value, i.e. the Scrum Team.  The chickens are the ones whose neck is NOT on the line.  You know those folks…the ones who distract the team from focusing on the goals at hand.  I’ve had lots of those back in the day…and they sucked.  With Scrum, we can draw a line in the sand.  We can identify those who have skin in the game, and those who don’t.  Now, we shouldn’t just flip the bird (no pun intended) to the chickens…they may very well have very good input and feedback.  However, this information must be funneled through the Product Owner, not directly to the team.  Of course we could have made this delineation with our traditional methods, but the methods never clearly called out this distinction so people had to rely on their common sense, which meant that it never happened.

Scrum, But…

I am so sick of hearing this. People continuously ask themselves “Are we doing Scrum or not?”. That’s not the right question! The question should be “Are we improving in our ability to deliver value to the customer or not?”.

Scrum is empirical. It is meant to change. What are the non-negotiables? Ummm…I’m not really sure. Some people say the daily scrum. However, I’ve seen times when the team is all in the same room and highly functional, and the daily scrum is completely unnecessary since communication is organic.

What about the retrospective at the end of every sprint? Ummm…I’m not really sure. If you have 2-week sprints, wow, do they get stale. What about at the end of every other sprint? Shouldn’t the team decide? Are we “doing Scrum” if we decide to do them every other sprint? Well, I guess it depends on who you talk to.

What about the burndown chart? It’s in the Scrum Guide, right? It doesn’t say that it’s required, but it doesn’t say it’s not. Okay, so we don’t have a burndown, but we meet our sprint goal, and have potentially shippable product at the end of the sprint…so are we “doing Scrum”? I guess it depends on who you talk to.

Uh-oh, what if we have more than one Product Owner? Well, I’ve seen it work for some teams very well. But, Scrum says you have only one. Are we “doing Scrum”? I guess it depends on who you talk to.

My point is this, Scrum is a light framework that supports the agile (and lean) principles. If you know what you’re doing, go ahead and do what is right for you team…making sure to not lose sight of continuously improving, and delivering high quality value to the customer. Don’t worry if “your doing Scrum or not”.

Now, if you are new to Scrum, or agile in general (i.e. don’t know what you are doing), PROCEED WITH CAUTION! Spend LOTS of time digesting information, reading blogs, books, etc. before you start. I’ve seen many folks attempt to adhere to a book after a quick skim and fail spectacularly when trying to implement Scrum. You should seriously consider getting someone in to help you.

To Renew my CSP, or Not to Renew? That is the Question!!

I have a confession to make. The only reason I got my CSP was purely a PR move. I had been practicing “real life” Scrum for some time. However, for some reason corporate America cares about certifications. I’m starting to believe that certifications, ALL certifications, are purely marketing tools, and nothing else. Why is it that all of the absolute worst project managers that I have ever worked with had a PMP certification? Or, why is it that some of the absolute worst system admins that I’ve met had a MCSE certification. Even some of the worst Java programmers I have met had a Sun Certified Java Programmer certification. Hrmmm…I think I’m starting to see a trend. Typically, at least in my small part of the world, the truly talented folks rarely have any certifications.

Okay, so let’s get real. It’s the game you have to play. Right now, I’m not in a place where I have to play these kinds of games. I’m employed full time in a great company, so I don’t have to worry so much about “PR” moves such as certifications.

Okay, so I think I’ve answered my question. No, I don’t care about the CSP right now. So no, I’m not going to renew my CSP.

Process is Not a Four Letter Word

I grew up as an only child.  I had no brothers or sisters to “share” anything with.  It was all MINE.  When I became a teenager, I completely rebelled against all authority.  This probably had something to do with my only child-ness, but probably had more to do with me being a spoiled jerk.

I hated all authority…teachers, parents, pastors, police, you name it.  How dare they tell me what to do!  I felt that their only purpose was to make sure everyone followed arbitrary rules that MADE NO SENSE, and they were determined to make my life hell.

As the years went by, I calmed down, settled down and became a family man.  But, I don’t think I’ve ever shaken off that old “to hell with authority” attitude.  I’ve just learned to live with it 🙂

I think this is one of the reasons that I fell in love with Scrum, and agile in general.  It had that familiar aroma of my old days of rebellion.  Agile ideas came about really out of necessity and a spirit of rebellion.  There were arbitrary rules that were imposed on organizations about how to build software that MADE NO SENSE!  So, how about we rebel, and do things OUR way, i.e. the way that makes sense.

Now, let’s consider the word “process”.  Over the last several days I’ve realized the profound effect this word has on people.  People immediately cringe.  For some reason, the word “process” paints a picture of arbitrary rules that MAKE NO SENSE that we have to follow.  It implies bureaucracy and micro-management.

Now, let’s set something straight.  “Process” is critical to the success of any endeavor.  If you let the process “evolve” without paying attention to it, it will cause chaos.  One thing that people don’t understand is that a process always exists, whether it’s documented or not.  It may feel like “free-style”, but it’s a process.

I’ve been involved in some conversations recently about role definition.  This is a classic problem that plagues every company…not having a clear definition of roles.  Here is the problem; without a clear understanding of a PROCESS, you will never be able to clearly define ROLES.  The first thing that should happen is to clearly define what the process is in how to deliver software (or anything).  I’m not talking about creating artifacts.  Documentation does not equal process.  It supports the process, and may be a by-product of the process, but documentation alone is not the process.  But be careful.  I’ve seen to many times a “process” created that people end up slavishly following without ever even attempting to improve it.  A process must evolve along with the changing culture, technology, and business needs.

To some extent, Scrum practitioners discourage defining processes.  It appears to me that maybe this whole “stick it to the man” gets a little too out of hand…even for me!

If you don’t control the process, the process will control you, and it won’t be a good thing.

Scrum Alone is Not Sufficient

There are some who believe that Scrum alone is sufficient to run complex, big, expensive, scary projects and/or programs.  Some people think that Scrum instructs us how to code. It does not.  It provides a framework and a set of principles (as does any sound agile methodology) on which to base our development and delivery practices and processes.  The only way that Scrum is sufficient alone is if the teams are completely self-organizing, highly skilled and efficient, the business has a clear, sound vision that is clearly understood and communicated, and the management fully supports the efforts put forth by the team.  I have never experienced nor have a heard of a company that attained this utopia.
Let’s talk about the real world.  Most developers are average at best, there are politics, hidden agendas, attitudes, kingdoms, and lots of other “stuff” that prevents this paradise.  Since that’s the case, you can’t be done at Scrum.
The Scrum framework provides guidance regarding key roles (Scrum Master, Product Owner, Team), ceremonies (sprint planning, daily scrum, retrospective, sprint review) and artifacts (product backlog, sprint backlog).  It provides no other guidance.  In Scrum, “the team” decides how to handle things.  How do we manage requirements?  The team decides.  How do we handle vendor relationships?  Let the team decide.  How do we make sure we are compliant?  Let the team decide.  I think you get the picture.
Below are some things that Scrum does not address.
  • How to code
  • How to test
  • How to manage code
  • How to manage risks
  • How to document and manage requirements
  • How to manage the budget
  • How to estimate
  • How to decide whether to build or buy
  • How to deploy into production
  • How to operationalize the product
  • How to train new users on the product
  • and the list goes on and on and on
My point is this…if you are successfully doing Scrum alone, good job.  But it’s not enough (unless you have achieved utopia).  The team likely will not have the knowledge or experience necessary to decide how to do EVERYTHING.  Now you need to take that next step.  Bring in CI and TDD.  Start measuring your productivity by bringing in some lean/six-sigma tools so you can better improve.  Heck, I think there’s even some stuff in the PMBOK that is pretty useful!

How Many Scrum Projects Can a Developer Be On?

This post was inspired from a question that was asked on the scrumdevelopment yahoo user group.  The question was regarding several things.  First, how to handle a developer on multiple Scrum projects, second how to sync the sprints, and third what tools can be used to handle the multiple projects.  I’m addressing the first and second aspects, and not the third about the tools.

Having developers on multiple projects is a very common thing. It is the wrong thing.  If the project solutions have to integrate eventually, then it makes more sense…but in that case, the developers on multiple projects should be used in a different capacity. More leadership and guidance and less actual coding.

If developers are on multiple projects and the projects are unrelated, you’ll have to stagger the sprints, i.e. they shouldn’t start and end on the same day. Imagine developers having to attend 3 sprint planning sessions in one day, 3 retrospectives in one day, 3 standups in one day. I tried that once with 4 projects…yeah it sucked. Developers on the teams were doing nothing but attending meetings. Their first impression of Scrum was “meeting hell”. Plus, you can only be in one place at once, so some of the projects suffered due to lack of attendance.

If the projects have to integrate, the sprints should sync up, as the goal is potentially shippable software…and you can’t ship unless you integrate.

Either way, it is bad to have developers on more than one…”maybe” two projects. The cost of context switching is too high. I know it sounds impossible to have developers on only one project, but if you make it happen, you will not regret it. It’s just scary because we’ve been trained that “multi-tasking is good”. That is a big fat lie.

The Role of the Architect in Scrum

This question comes up over an over, so I thought I’d address it quickly.

Remember that in an ideal Scrum team, the team is completely self organizing.  There are no titles to worry about.  The team will discover the strengths and weaknesses of each member, and continuously evolve, i.e. inspect and adapt, to discover new ways of delivering high quality value to the business.

But, guess what.  In the real world, we have titles to deal with.  Now, I don’t think that’s such a bad thing.

As we all know, the title “Architect” in the context of software means very different things given the organization.  I’ve seen it range from really good coder to more of a project manager-y type of position.  I think this lack of clear role in the industry overall has lead the folks in this title to, at times, become “chickens” that like to cluck and flap their wings to distract the team.

So, what should the architect do?  Well, let’s remember that in Scrum, team are self organizing.  They collectively come up with the technical solutions.  They also come up with development standards.  If the team is generally not high performing, or are missing some necessary skills, then the architect should be a mentor and a coach for that team until they can fly on their own.

What if the teams are high performing?  If there is an organizational need due to a highly complex business need, i.e. insurance, taxes, financial transactions, etc., then the architect should focus on the high level roadmap to ensure that the backbone of the technology is strong.  This is especially true in a SOA environment.

Evangelizing Scrum, or Anything, is Hard

Ever since I discovered lean/agile, I’ve been very perplexed about something. Why do so many people feel passionate, and sometimes offended, when I introduce it? Seriously, offended. Like I just called their baby ugly. I was taken-aback at first, now I’m used to it. I think I’ve learned to dodge most of the stones that people throw over the years.

Lean/agile begins with principles, with practices emerging from these principles (see previous blog post about agile principles).

I think a lot of blame (yes, I’m pointing fingers) comes from people who don’t understand agile, then implement it…POORLY. I’ve heard so many horror stories about failed Scrum or Extreme Programming implementations. I’ve taught quite a few classes about agile/lean methods, and in every course, I ask the students if they’ve been involved in some kind of agile implementation. For everyone that said they had been involved, they said that it sucked…100% of the time. As they expanded on the sucky-ness, I just cringed. The leaders of the implementation just didn’t get it. They didn’t understand that it’s about principles, not about index cards and stand-ups.

Now, let me relate this religion. I’ve been a Christian for close to 20 years. Every time I get into any kind of conversation (which I rarely start), people immediately become offended. Why? Because like the poorly executed agile implementations, there are many poorly executed “Christian” implementations.

As humans, it is so much easier to just follow rules than to rely on our own judgement. That’s why empowerment is rejected so many times at the lowest level. If someone is empowered, then they are also accountable. Who wants THAT??

Christianity is not about rules. If anyone tells you that, then they need to go to Christianity 101 class. Christianity is about a relationship, and principles. If you follow the principles, the “practices” will follow.

Let’s look at the greatest principles (commandments) given by Jesus “Love God with all your heart, soul, and mind”, then “Love your neighbor as yourself”.

What’s interesting, is that if you take these to heart, then the 10 commandments (don’t lie, murder, steal, etc.) will follow…right? The greatest principles will naturally manifest themselves in the 10 commandments.

If a Christian truly loved their neighbors as themselves, I think you would see a lot more philanthropy and a welcoming attitude towards others.

Here’s the intro into the song “What if I Stumble” by DC Talk that summarizes my point beautifully:

The greatest single cause of atheism in the world today is Christians who acknowledge Jesus with their lips then walk out the door and deny him by their lifestyle. That is what an unbelieving world simply finds unbelievable.

Since in general, the “implementation” of Christianity has ignored the primary principles, the understanding from the non-Christian population is that Christians are ignorant, stupid, hypocritical, judgmental, and hateful. Are Christians doing anything to change this image? Not really.

So, when “evangelizing” given this climate, people become hostile and have a desire to throw (verbal) stones.

Now, back to agile/lean. Generally speaking, many folks believe agile is nothing but cowboy coding, no documentation, speed not quality, and screw “the business”. When “evangelizing” given this climate, people become hostile and have a desire to throw (verbal) stones.

Evangelizing anything that is based on principles stirs emotion and is fraught with mis-understandings. Typically our first instinct is to run from the conflict that arises and just become complacent and accepting of dysfunction and misunderstanding. We need to be brave, and stand by our principles. In doing so, we need to continue to come up with ways to communicate the truth.

Up Front & Iterative Planning

You know the question…”what kind of projects are best suited for agile?”.  To me, this is the same as asking “what kind of projects are best suited for empowered teams, technical excellence, servant leadership, reducing waste?”.  Would there ever be a time when you would not want these things?  I know, that is a very smart-allec response, but I just can’t help myself.

I then ask “what’s the other option?”.  This surprisingly stumps people when I ask this.  We all know there is no such thing as “true” waterfall in software.  So, to help them along, I clarify what I “think” they are asking which is “what kinds of projects are best suited for big, upfront planning and design vs. iterative & incremental delivery?”.  People almost always agree with the restatement of the question.

I believe that everything can and must be done iteratively and incrementally in software.  However, the level of “up front” may change with the type of project.  Gutting out an old accounting system and replacing it with an Oracle or Great Plains solution will require more up-front planning and analysis than a green-field Web 2.0 social networking application.

So, fellow agilists, “up-front” is not a bad word, it has to be done.  We know this already with release planning, and even sprint planning, we just don’t call it “up-front”.  Just be careful…VERY careful.  You run the risk digressing into waterfall.  At times, there will need to be more “up-front” than other times.  Always be asking yourself, “what is the soonest we can deliver value to customer?”.

The quest for the perfect agile tool

I’ve been searching off and on for the perfect agile tool for years. My “dream” tool would be a one stop shop for releases, stories, tasks, acceptance criteria, test cases, points, etc., etc. Oh, and by the way, it would be INTUITIVE.

When I enter a new team, I start the search over, and almost always end up back to stickies and/or spreadsheets. Currently I am using Acunote (http://www.acunote.com), and it seems to be doing the trick. It’s missing a lot of things, but it’s good enough for our purposes.

I’ve learned to not worry about tools until there is a solid foundation. The right team (technical lead, Product Owner, Scrum Master) and a product backlog must be in place first. Then, the core Scrum team can be formed because it is clear what needs to happen. Once the Scrum team is in place, ensure they are self-organizing. NOW, it’s okay to start looking at tools … as a team.

In the meantime, my quest will continue, and maybe someday that perfect agile tool will surface. But, if it doesn’t, I’ll just stick to stickies and spreadsheets and be happy!

Scrum Documentation

If you are on an agile team, and you are telling your team that you don’t need to document because your “agile”, stop it. Stop it right now!! You’re making my life difficult!

There is a strong stereotype out there, and its that with agile, you don’t document. Arggghhh!!! I’m sure some of you have experienced it.

Here is what I tell people when they ask about the documentation requirements on an agile project…”If the team needs it, then they will create it”. Now, I’m not talking about documents that are delivered to the customer, like help documents. I’m talking about documents such as architecture diagrams, “requirements” documents (eww), process flow diagrams, diagrams, and more diagrams.

IF these kinds of documents will make the team more productive, and produce higher quality software then document! Now, the next thing I tell people is to be LOW TECH. I mean, c’mon, do you really have to transfer that diagram on the whiteboard to visio? I’ve seen people take 2 weeks to do that, as the rest of the team is “waiting”, i.e WASTE. Why not take a picture? It’s going to change anyway, right? And, we “want” it to change, if we ever want to improve.

Remember, the end customer does not value these kinds of documents. So, DON’T SPEND A LOT OF TIME ON THEM. If your company “requires” them, then take the lowest road approach possible. Ask questions. Challenge the “process”. Processes were meant to change and improve, you should not be a victim to them.

Okay, to review….

  • Documentation can be good, if it makes the team more productive and the customer happier because of higher quality. But, BE CAREFUL
  • Low tech = Good
  • The customer DOESN’T CARE about those documents, so just take it easy there partner. Only do the bare minimum that you NEED.