Agile Misconceptions

A common misconception about Agile software development is that it is not deadline driven and that it is unstructured. Agile development is, by definition, time-boxed and therefore is extremely deadline driven. The difference is that the deadline is the time box and the end date is calculated (or extrapolated) by average team velocity.

Another misconception is that agile development is undisciplined, or unstructured. In reality, agile is extremely disciplined. However; disciplines tend to be thrown overboard when an organization starts using velocity as a productivity measure to hit a predefined scope, a predefined schedule, and a predefined budget, all of which cannot change. This principle applies to anything, even waterfall.

Another frequent “management” misconception of agile is that it is just “breaking things into small pieces so that you can get more done”. It’s not. It is the ability to adjust to changing requirements, by deferring commitment to the whole and developing incrementally – reprioritizing each iteration.

Finally, to quote the Poppendieck’s, “To move faster, you have to slow down” . In order to increase productivity, you have to work at a teams velocity (the point at which they are most productive), while keeping all “disciplines” (code review, testing, etc) intact and creating a production ready deliverable, at some level of scope, every sprint. This is what the team is capable of producing. Pay attention to it – and schedule accordingly. You cannot dictate velocity.

Recipes are for Learning, not for Real Life

Recipe BookPeople like recipes. We’re always looking for the next ten step way to improve what we do and how we do it. We see it in leadership trainings, “methodologies”, and pretty much any self improvement or team productivity books that we read. Each of the above give frameworks along with classifications of things that you can use to solve a particular problem.

What gets lost a lot of the time is that the classification of things and the frameworks are written to teach, not to use in every day life. While you might have to consciously think about the way to classify something at first, while you’re learning, the key point of these things is to give you a way to classify and deal with information while you are learning. At some point, the idea is that the framework will fade away and you will innately have the tools at your disposal, without having to think of the distinct classifications or step by step instructions to deal with them.

Its like learning to ride a bike. When you are learning to ride a bike, you learn balance, steering, and the fact that you have to push one foot at a time on the pedals to achieve the motion you need in order to propel the bike forward. At first, its very awkward. Your steering is shaky, you don’t pedal fast enough to get the inertia needed to move the bike forward, because you are thinking of all of the things you need to do at the same time to achieve your goal. Pretty soon though, you internalize all of the independent skills you need that make up this thing called “riding a bike” and it becomes one thing rather than many concurrent things you have to think about. Pretty soon, you are modifying or adding to what you know and doing things like riding no-handed, wheelies, or whatever other things you can think of that augment your experience of this thing called “riding a bike” that makes it a little more “your own”.

Methodologies and religious arguments around software development have always put me off. When I’m asked to participate in a “methodology” discussion I usually cringe, because I know that 9 out of 10 people feel that the methodology as it is written is the goal, rather than taking the methodologies as a set of tools that are used in the learning stage to develop competence and later modify for the environment in which you work. This tends to get lost most of the time and you find teams and people doing things as they were specified in the recipe, whether they are useful or not, rather than adapting the tools – or even throwing some of them out if they do not apply.

“Agile” methodologies are a perfect example of this. You have specific formats for standups that are interpreted literally, specific tools like automated builds, unit tests, user stories, and burn down charts. Some methodologies include specific artifact definitions like activity diagrams, object diagrams, 4 + 1 architectural diagrams. In most cases you find people using all of them as they were specified in the book because they haven’t moved to the point where they understand the purpose of these tools, what they accomplish and how they do or do not fit together for a particular situation.

Agile software development is not the format of the standup or the fact that you have automated builds. As far as I can tell, Agile software development achieves the following:

  • Get the customer involved and the team communicating.
  • Break the functionality required into small, incremental, implementable pieces that are prioritized around both business and technical dependencies – with the goal of creating production ready code. Small iterations also give you the ability to adapt to changing requirements. What seems important at the beginning of one iteration might not be as important as something in the next iteration – so you plan incrementally.
  • Create production ready code at the end of each iteration, with rapid feedback cycles – this is the purpose of unit tests, and automated builds – to be able to “stop the line” when something breaks without a lot of manual intervention – and to deliver “just enough value” as soon as possible.

I think the problem is that most of the time people do not look at the philosophy around a methodology. Most of the tools that appear in these methodologies have a purpose to get to a certain philosophical goal, like the bullets listed above. Unless you understand the goal, you can have perfect stand ups and not ever really “implement agile” in the way that it was intended.

Related Articles

Walla-Pa-Looza 2010 – A Celebration of Hope, Dreams and Cures

Wow, look at all the sponsors Walla-Pa-Looza has this year!

It was a short year ago that the idea for Walla-Pa-Looza was born out of the need of one guy to do what he does best and throw a party to make a difference.

This Saturday, July 31, 2010 the second annual Walla-Pa-Looza Music Festival is happening at the Johnsburg Community Club in Johnsburg, Illinois.

This year the organization has had a big year – starting their blog, partnering with the Sage Cancer Center, getting their 501(c)(3) non-profit designation, and a slew of new sponsors that you can see in the image above. They have a great lineup of bands, including Cover Blondz, High Life, Aeth3r, and the premier Journey tribute band of the Midwest, Infinity.

They’ve also put together a High School Battle of the Bands, which makes us all feel young again, doesn’t it?

I’d love to see all of my friends there. Let’s face it, I don’t blog much anymore – so the fact that I am actually writing anything means this has to be a special event.

If you can’t show up at the event, you can always donate to Walla-Pa-Looza by going to their web site and clicking on the donate button.

I’m sure you will feel good knowing that you made a difference for some family that needs help.

Cancer Fund Raiser for the Gruber Family at Mixteca Tequila Bar and Grill on February 21, 2010

Jonna and I eat at the same place every Friday. It’s this cute little Mexican restaurant called Mixteca Tequila Bar and Grill on Route 47 in Woodstock. Mixteca has excellent food and is owned by a couple of really cool people, Claudia and Mike.

As is usual being a chronic handwasher, at the end of dinner I went into the washroom to wash my hands after eating and out of the corner of my eye saw a flyer on the inside bathroom door. It was about a family that the restaurant was doing a fundraiser for.

The Gruber family consists of Joe, Laura and their 2 kids, Joey (6) and Courtney (3). In November of 2009 Joe was diagnosed with testicular cancer and has been receiving treatment. At the time he was working two jobs, neither of which provided benefits.

The restaurant is hosting a fund-raiser for the family to help offset their medical costs as Joe goes through treatment, as well as help them with their mounting bills. The fund-raiser is happening on February 21, 2010 at the restaurant (see link). You can find more information on the family and the fundraiser by from the flyer I scanned when we got home, or at the web site for the event, hosted by the Friends Helping Friends Foundation.

All food proceeds at this event will go to the family.

Jonna and I will definitely be attending and hope that our friends in the area will come and try to help out. If nothing else, you get great food and a good atmosphere to enjoy the afternoon in. The plan is to also have raffles – and the folks throwing the event are looking for donations of items such as gift baskets, sporting event tickets, etc for these activities.

If your not in the area and want to help, you can make donations via PayPal on the Friends Helping Friends web site.

Does The Language We Use Make A Difference?

I was reading the article Run IT as a business — why that’s a train wreck waiting to happen and it got me to thinking … which can be dangerous. The article specifically talks about how the idea of “running IT as a business” has unintended consequences, one of which is thinking about folks outside of IT as “partners” or “customers” and how it effects the behavior of the organization.

How does the language we use effect how we behave? Is it possible that the common practice of using terms like “partner” and “customer” causes us to behave in such a way that we are disconnected, at least mentally or emotionally, from the people that we try to make a difference with?

This has long been a pet peeve of mine. I think these terms cause an artificial separation between groups. An example that I used in a meeting recently:

At a company I worked for at one time, it was impossible to get a software release out without incident. There was not enough structure, and it was obvious that tools were required to automate the process that were not available at the time, for the particular platform we were working on.

Thats right folks, this was a time in which even Capistrano didn’t exist.

I wanted to help solve the problem. At the time, with the specific deployment model this company used, solving this problem required access that I did not have. Because I was not part of the group that got this access, I was not able to get it – until I transferred.

Yes, I actually transferred to this group to solve the problem. Two days later, I had the access required.

Same person – different access.

Much feverous work ensued. Finally it was done. The problem was solved.

So I transferred back to my previous group. Guess what went with the transfer?

Yep – the access.

Same person – different access.

It sounds ridiculous doesn’t it? But it happens – a lot.

In corporate culture we tend to use terms like “Partner” and “Internal Customer” to reference each other. I think it often causes unintended consequences.

It’s kind of funny. As I was telling this story, I thought about the story of the Sneeches. You know, the folks who some had “stars on thars” and some didn’t. Each were treated differently according to the status of the markings on their bellies. In the end, they were all the same – they just didn’t know it. Actually, in the end, when the markings were automated, no one knew Who was Who.

Corporations spend (and waste) a lot of time fighting who is at what level, whose responsibility is whose. Defining roles and their responsibilities rather than getting things done. Its not that defining roles and responsibilities is bad, but we tend to confuse people with roles and in doing so keep them from performing at their full potential. We fail to realize that people may have many skills and can serve multiple roles.

The next time you use the term “partner” or “internal customer” – think about this a bit. It might make you think a little different. It’s definitely been something I’ve been thinking about lately.

Setting Up A Caching DNS Server on OSX Server

I’ve been running the same Linux server for about 10 years. Consequently, its pretty slow and outdated, and when I finally had time to upgrade it to Ubuntu from SuSE 9 while I was on vacation, found that I couldn’t really get anything but Ubuntu 8.04 installed on it. So it was time for an upgrade.

I opted to go with a Mac Mini server – for a few reasons. The price was basically comparable to an Intel server with the same technical specifications (minus any kind of CDROM drive, which I found out later) – but the big selling point for me was the amount of space I could save in the office with the Mini. A side benefit was, of course, being able to play with Snow Leopard Server.

After the initial set server setup – which was painless – my first task was to create a caching DNS server so that all of the machines in the house could point to the same place they were when the Linux server is shut down. One of the primary purposes of the Linux server over the years, aside from being a file server, has been to cache and manage local DNS for the machines in the house. I already had plans to run an Ubuntu Server in a VM on this box to replace my aging Linux box (I still need Linux around), but didn’t think it was acceptable to have to boot the machine, THEN a VM in order to have DNS working. I also did not want to do a DNS setup on a box by box basis on every machine in the house.

I was a little confused at first. I’m used to configuring bind directly. After some googling around and not finding much of anything around doing this on OSX Server, I posted a tweet asking if any of my followers knew of a HOWTO that would explain what I needed to do.

I actually tweeted a little too soon. I think I found the settings about 2 minutes after the tweet went out. It was way easier than I thought it would be and I thought I’d throw up a quick step-by-step tutorial so that folks wanting to do the same thing could save themselves a couple of seconds.

So here we go.

In the dock, find the “Server Admin” icon and click it. It looks like this:

OSX Server System Admin

OSX Server System Admin

When the “Server Admin” Tool opens, you will see the main screen like the following. The blue arrow is pointing to the domain you specified while setting up the server.

OSX Server Admin Tool Main Screen

OSX Server Admin Tool Main Screen

Open up the domain for your network, and you will see a bunch of services to configure. Select DNS as shown in the following screen shot:

OSX Server Admin Services Menu

OSX Server Admin Services Menu

Once you select DNS in the side navigation, select “Settings” at the top. This will show you the following screen:

Server Admin DNS Settings Screen

Server Admin DNS Settings Screen

You’ll see a box conveniently titled “Forwarders”. Add the IP addresses of the DNS servers you would like to forward requests to in this box by clicking the ‘+’ key and adding each independent IP. As you can see here, I am primarily using Open DNS with Google DNS as a backup. Trust me, contrary to the picture, OpenDNS is first.

Once you have entered your DNS IP addresses, click “Save”. Point your boxes to the IP for your Mac Mini server and voila! You have a caching DNS server.

I hope this was helpful. For those of us who are used to configuring bind with vi, it may be a little confusing or intimidating to try to mimic this functionality on OSX Server. As you can see, its really a no-brainer – and no text editors need be opened.

The Myth of Helter Skelter by Susan Atkins

I found this site, late one night (I’m not totally sure how I even landed there) and was riveted by it for way too long. This site used to contain a rough draft of a book started by Susan Atkins (of Manson Family fame) and her husband, attempting to explain what really happened leading up to the Tate-LaBianca murders – that while Helter Skelter was used as a motive to finally convict Manson and his family members, it was really just one in a long line of manipulation techniques that he used to get people to do what he wanted.

Historically, Manson has been looked at as this mind controlling genius that somehow got a bunch of kids to attempt to enact his ‘end of the world’ scenario – one that he truly believed. This extremely well written article shows Manson for what he really was: a paranoid, self-centered, sociopathic, master manipulator, who after shooting a man who he thought was a Black Panther manipulated those around him to enact murders that he thought would throw the Black Panthers off his trail and keep them from coming after him – in other words, he was trying to save himself by sacrificing those around him.

Most interestingly, this write up explained many things that have confused people for years – including why the Tate-LaBianca murders seemed so “random”. This article was the first explanation of the reasoning behind the randomness of the acts that actually makes sense, as well as explaining some of the things Manson did in order to gain control over his followers.

This is the most rational, thought out explanation of the Manson crimes that I have ever read, coming from someone who had an intimate role in some of the most horrific and publicized murders of all time.   Interestingly, her role wasn’t what we all thought it was.

Hopefully, it helps take away some of the mystique and fascination that some young people still have for him today.

I’m disappointed that she had to turn to christianity to prove her point.   Most of her later years were spent writing letters to Christians.    I think that was probably because of how society looked at her – it could have been the most extreme way to get acceptance in her eyes. The world may never know.

What was apparent to me was the logic in the explanation offered in this text.   Well worth the read.

Notes:

Susan Atkins is suffering from terminal brain cancer and was recently denied parole after submitting a request for “compassionate release” due to her illness.

Related Links:

Update September 25, 2009

Susan Atkins has died at the age of 61.

Update May, 2014:

Here is the updated link to the book, which you now have to pay for. Totally worth the price. Finally a book that lays out the “randomness” of the end of the summer of love. These murders killed a generation.   The Myth of Helter Skelter, by Susan Atkins.

Walla-Pa-Looza Benefit In McHenry County for American Cancer Society

A friend of mine, Craig Wallace, has assembled a bunch of great volunteers and friends to put on a charity benefit called Walla-Pa-Looza. The event is a fund-raiser for the American Cancer Society and will be held on August 1, 2009 from 2:00 pm to 11:00 pm at the Johnsburg Community Club in Johnsburg, Illinois. $5 gets you in the door and children under 12 are free. There will be a 50/50 raffle, silent auction, ticket raffle and other activities throughout the day.

You can find a host of information at their web site, walla-pa-looza.org, including an opportunity to become a sponsor of the event if you are a local business.

The event will feature four bands that have contributed their time and talents:

The thing that blows me away about this is it started out with Craig just wanting to have a party on his one acre lot. He, his wife, and a friend started talking about the economy and how it would effect charities – and that got the ball rolling. They decided to do something about it.

It’s definitely a worthy cause. I know I’ve lost people to cancer, as I’m sure many of you have as well. Jonna and I will definitely be donating and attending – and I would encourage anyone local in McHenry County to do so as well. I would also encourage local business to visit the sponsor page to find out how you can help and get some advertising out of it to boot!

Make sure to visit their web site to get more information and, if you are so inclined, donate (by the way, they support Paypal donations – so if you’re not local you can still donate to the cause!). Their goal is to raise $20,000 for the American Cancer Society. Let’s help them blow this goal out of the water.

Hopefully, we’ll see you there!

By the way, Walla-Pa-Looza also has a fan page on Facebook. Become a fan today!

The Fate of the SVK Tutorials

Chia-liang Kao, the developer and maintainer of the SVK Distributed Version Control System posted a message to the mailing list on May 28th of this year declaring the end of development for the SVK tool.

I know from statistics that the tutorials on this site have been at least helpful, but am curious as to whether I should take them down or not given the fate of the tool. I myself have moved to Git, which has really good integration with Subversion.

So I’m asking you. Do you want the tutorials to stay, or can I get rid of them?