Archive for the ‘Uncategorized’ category

Agile Training & Spring Training

April 26th, 2010 by JMartin

We recently produced a webinar here at AccuRev, co-sponsored by Rally Software, about the Top 10 Factors for a Successful Agile Implementation. Guest blogger JMartin, of Rally Software, enlightens us on our next factor.

Number 8 is all about Agile Education, or as I like to call it, Agile Spring Training.  After choosing our Pilot team, it only makes sense they next need Agile training and coaching.

Another season of baseball has started.  Baseball seems to have such a long slog of a season.  It’s hard on the fans, that’s for sure.  I suppose it might be hard on the players, too, eh?  And even so, every year, there is still Spring Training.  The teams gather in the warmer parts of the country to practice and scrimmage and practice and work out and evaluate and practice.  How much does the average player make?  Couldn’t the teams be getting a better return on their investment if all this extra time players were using to train and practice was put toward “real” games with full-paying customers and sponsorship back home?

Obviously, training is important.  Spring Training helps provide and refresh the underlying skills of the professional baseball player so that he can move beyond his talent and perform with his coworkers on the field.  Even the most expensive players train.  Really, a successful effort of any kind requires some level of training.  For the players on the field, it is important to train them together to give them a common feeling for each others’ behaviors and to focus their vision on the same goal and approach as provided by their manager.  In the same way, teams adopting Agile should be trained so that they have an understanding of the process and so that they share a common language to help them have or improve upon communication about what’s going on as they dive in.  By giving a team a common language and skill set to operate with, we eliminate the kinds of hiccups in execution that are caused by incompatible expectations and other breakdowns in communication, as well to keep the players from getting lost.

Agile Training provides common languages and a pattern set for teams to understand and follow.

Did I stretch the baseball metaphor in there enough?  If not, think about this: after Spring Training is over and the season begins, are the players just released onto the field and left to play games on their own?  No, they go through the season with a staff of coaches who monitor their performance and help them plan and improve both their off-field training regimens and their in-game strategy.  Baseball teams get help in another way, too:  at the end of the season, the teams that are on-track for the pennant race do something interesting to their teams.  They start looking around for seasoned players.  The seasoned players aren’t brought in so much for their skills in playing the game itself (we’re relying on the younger, faster kids to do the hard work!).  You’ll hear sportscasters talk about how player X was brought in to provide experience and stability to the team as it hits the turbulent times of post-season play.  They help mentor the younger players both about on-field strategy and about dealing with distractions.

Agile training and coaching works in a similar way.  Training provides common languages and a pattern set for teams to understand and follow.  A good training set will provide muscle memory for the basic mechanics of Agile.  And an environment geared toward allowing team members to get the technical training and in-fill they need helps the team be ready to succeed in the game.  It’s great for the tactics. But very successful teams also get the help of a coach.  An Agile coach can provide help at the strategic level, helping to plan the agile rollout and watching team behaviors to suggest areas for extra practice or additional training.  In addition, a good coach is someone who has real experience.  When a need for help arises in the team, the coach can pull from her well of experience to give the team not just a way to strategize their way around a rock but a little bit of the confidence from having gotten through those rocks before.

Somehow, I went from baseball to kayaking.  I’d better stop before I bring in some curling metaphors.  The point here is that a successful agile adoption requires the creation of a culture of learning and that learning must be provided at the tactical/basic mechanics level and at the strategic/vision-oriented level.

What’s a Manager to Do? Management’s Role in Scrum Organizations, Part III

March 15th, 2010 by lorne cooper

I love the concept of self-managing teams.  Everyone figures out what needs to be done, and does their best to make the greater organization successful.  Beautiful.  Reminds me of the Shaker Village, the Russian Artel, or the Israeli Kibbutz.  All of which are (largely) extinct today.

There are three structural problems that, like termites behind the wallpaper in a French Quarter house, cause these “worker’s paradises” to fail.  Our job, as managers of the Innovation Engine, are to sniff ‘em out, expose them, and exterminate them.

Problem #3: The Buck Starts Here.

For all the happy talk about mission, values, and meaningful work, the ultimate metrics for business are financial.  Our inability to grow, make profits, secure new investors, etc., will ultimately end our ability to accomplish our missions, support our values, or provide work to our employees and worse yet, ours bosses. That’s the bad news.

The good news is that we managers can use money (or their engineering equivalents, people) to accomplish great things.  Which things we choose to accomplish is largely up to us.

No, that doesn’t mean we want to create our own user stories, and reprioritize the backlog to meet the requirements communicated to us in our sleep by our deceased pet snake.  That’s the product owner’s job.

The Scrum process, like its Lean predecessors, is based on incremental improvement.  That’s great for two reasons: first the changes are small enough that we can get them done and see the results before the environment has changed, and second because they are small enough in scope that the individuals in development or product management can understand and control them.

We managers have to see the bigger picture, and that generally means determining the funding level for each of the initiatives we have.  Adding people to a team will eventually, not withstanding our bad management, increase its velocity.  Pulling people off will generally do the opposite (although not as quickly as you might think …….).

The optimization problem for the overall success of the organization involves lots of variables, but that’s really why they pay us the big bucks.  Is this group servicing a stable and productive customer, while this other group is struggling to overcome a mountain of technical debt?  Are competitors starting to emerge for what has been a stable area? Has this project achieved most of its goals? Is it time to determine what should be the next big initiative?

The purely business and marketing side of the equation is usually an area of influence, not control, for the development manager.  But the assignment of resources to projects is the execution of that strategy, and requires management comprehension and “buy-in.” For those of you uncertain, the term “buy-in” refers to agreeing to do something you’d really rather not do at the risk of losing your job.  It’s been around a long time, but has flourished in the recession.

On the technical side, there are important funding issues to consider.  One of the biggest is the effect of architecture on the overall success of projects.  Studies have demonstrated that one of the biggest factors in ROI for IT initiatives is the quality of the underlying architecture.  Should you add features to your Windows XP app, re-write it to run on an i-Phone, or re-write it to run within your CRM system?  Big questions with lots of impact both in the short term or long term.

Conclusions

Senior engineering management is a tough job with many tasks and responsibilities, too numerous to list here, but including team dynamics, people management, strategic funding decisions, and golf at expensive resorts.  Middle management has similar responsibilities, without the golf.

Great organizations are rarely the product of good luck.  Great leadership recruits the right people, puts them in the right roles, identifies problems and fixes them, and looks ahead at trends to make sure resources are assigned to the right places.

In Scrum, this doesn’t require a lot of managers, but does require of lot from managers.  Empowering managers to act, and ensuring that they do, is critical to the long-term success of your Agile organization.

What’s a Manager to Do? Management’s Role in Scrum Organizations, Part II

March 12th, 2010 by lorne cooper

I love the concept of self-managing teams.  Everyone figures out what needs to be done, and does their best to make the greater organization successful.  Beautiful.  Reminds me of the Shaker Village, the Russian Artel, or the Israeli Kibbutz.  All of which are (largely) extinct today.

There are three structural problems that, like termites behind the wallpaper in a French Quarter house, cause these “worker’s paradises” to fail.  Our job, as managers of the Innovation Engine, are to sniff ‘em out, expose them, and exterminate them.

Problem #2: PURE – Previously Undiagnosed Recruiting Errors

My old boss used to tell me there were three kinds of programmers.  Those smart enough to do the job, those too stupid to do the job, and those that could do the job but don’t care to.  Well, that’s not exactly the words he used, but this is a family blog.

None of us is the perfect recruiter, and every once in a while people get through the screening process that we’d rather have work for Al Qaida.

The incompetent developer (which we managers code name “moron”) is not always the one who takes the longest to do a story.  If some developers generally take longer than average to complete a story, they may be “slow” (as my grandmother would have put it) or the estimates may be dominated by optimists.  Until you’re measuring the amount of rework created by bugs found in QA (and the field), you really won’t know.

That doesn’t mean you don’t have to take action: managers have been acting on intuition since the Donner party decided to try the Sierra Nevadas in the winter of 1846.  Sometimes it’s better to eat the mule than have the whole group starve.

As engineers we tend to focus on technical proficiency, but there are some things which are hard to judge in an interview.  Like whether a developer has good judgment of when to refactor and when to patch.  Or whether a developer can embrace process changes or will struggle for weeks with the changes.  Or whether a developer has that certain combination of personality traits that make their coworkers doodle pictures of poisons, weapons and torture devices.

Now finding the sociopath may be more difficult than you think, because they’ve cleverly chosen to hide out amongst programmers, most of whom act as though still carrying scars from middle-school.  Like a submerged rock in the river, sometimes they can best be detected by the havoc they leave in their wake.

Developers generally treat managers using the same rules the Mafia use with the DA: no matter how much we loath our co-workers, we’re not going to rat them out.  One-on-one meetings with group members can give some indication of problems.  A few tactful questions at retrospectives may give some clues to underlying issues that aren’t being discussed.

Try inviting the group to try a little pair-programming and see what pairs get put together, and who threatens to quit.

Finally, the toughest people management issues are when good performers drop off.  Often this is a temporary fluctuation which just requires some coaching: do they need some customer visits to increase motivation, maybe a chance to learn some new technology they can apply, or sometimes there is a transient personal problem that just needs a little extra time.

Often, establishing expectations with people of what needs to be improved and then giving them a little time to do so is just the right prescription.  They may need mid-course correction and coaching to improve.  They might just need a supportive shoulder, or a swift kick in the pants, but the combination of communicating the issue, establishing higher expectations, and providing support is a good combination for improving performance.

Unfortunately, persistent decreases in performance are usually like that oil leak under your car every morning: they indicate there’s more going wrong than you thought, they’re probably going to get worse, and if untreated the future isn’t going to be pretty.

The most common mistake I see in my conversations with engineering management is the “conflict avoider.”  We’ve all made excuses about how long we need to wait to see if the situation can improve, how hard it is to find new talent, how much training time and ramp-up it is going to take to get a replacement up and productive.  And don’t forget the ‘ole disempowering “I can’t make a change in the middle of the project!”

These are just excuses. We owe it to both the team and the company to accept our mistakes, make the changes, and get on with building a better future.  That’s what we get paid to do.