• Everquest Taught me about Cross Functional teams.

    So yea, it's a double post, late night on a Saturday. It's true, I live this stuff... and also true... I don't really do much socializing. Frankly that wears me out and wastes a ton of my money.

    Anyhow, in 1999 I started playing everquest. looking back it was just about the worse MMO ever created, but at the time it was novel and epic in size, scale, and complexity.

    Basically, you got to choose your class and race... troll deathknight, elf paladin, wood elf ranger, halfling rogue.

    For the first few levels of advancement you could play by yourself, killing creatures that were equivalent in level to you, but after a while there was no way you could kill creatures fast enough or effectively enough to level or get any decent items and gear without grouping up with a friend or multiple friends.

    So I was a wood elf ranger, which was just about the most worthless class in the game, but I did have one asset that I could sell to people for joining their group... Snare. Snare was really a simple concept... you see... every creature when it got low on health would run like hell away from you. If it ran too far away it would find friends and bring them back to you and if you're deep in a dungeon the last thing you want is a whole train of enemies raining in on you so snare was a spell that could slow down how fast creatures could move and therefore mitigate the ability for them to get away and get help.

    So I had my place in a group... and i could do a little bit of damage (not as good as a rogue, wizard, mage or warrior, but decent damage with the right buffs equipment).

    Anyhow, to round out a group you'd need someone big with a lot of armor and hit points to take the beatings of the creatures. Usually this was your warrior, paladin, or death knight. Then you'd need some crowd control or a monk so that you could fight one monster at a time. Then you might need a rogue to pick locks to get you into certain areas of a dungeon.

    Anyhow, long after I had grasped the concept of grouping we found that there were actually places in the game that required 30-100 people all working together to defeat a boss-like creature... like nagafen the dragon or lady vox.

    ladyvox.jpg

    When fighting dragons they would breath an elemental cloud onto the group and so you needed to be able to put protective spells on everyone. Such that druids were capable of casting. Then you'd want to increase everyones hit points and armor using spells that clerics and shamans could cast. Then because the fights lasted so long you'd need more and more magical power to use so you'd have enchanters cast beneficial spells that would enhance the regeneration of your magical energies.

    lordnagafen.jpg

    I grew to enjoy this teamwork and the comraderie that we had, but most of all I think that I came to understand the great fundamental thing that all cross functional teams need to understand...

    Every member of the team has a specialty, a purpose, and special experience that brings a unique benefit to the team and it's our duty to respect everyone on the team and not only involve them but hear what they have to say (or sometimes even read what they're not saying) so that we can reap the benefits. It's often said that the sum is greater than the whole with the way this happens.

    This is no different than sports like football either. Next time you go into work, try to picture your own specialty role and everyone elses specialty role and play to those areas of expertise in your daily work. Let your deep thinkers take on very complex problem solving tasks, let your socially adept take on the tough explanations to troubled business partners, and let your tinkerers and hackers jack around with the build system.

     

    Full story

    Comments (0)

  • Getting to Done, it's a team decision...

    Jason and Brad are two developers at Hometown bank. They work on web applications for Hometown, do support, and generally are great all around hard working individuals. Jim is a requirements writer, or some might say he's a business analyst. Tammy is a user proxy, also a business analyst. Then there's David, the QA tester.

    Jason and Brad were handed a list of requirements drawn up by Jim and Tammy. Looking over it, there were a lot of unanswered questions, but management wanted them to get started. Knowing that the customer wanted a commitment date of when this project could be delivered, Jason made the choice to use what I would call a waterfall analysis phase to gather requirements.

    umlbullshit.jpg

    After putting together a backlog of every task they needed to accomplish to deliver and getting what they thought were sufficient requirements Jason and Brad began writing the code to their interpretation of the requirements. Tammy and Jim were on hand to answer any questions.

    Waterfall.jpg

    Now these two developers also needed to access some services from outside the company so they had to employ an enterprise webservices developer. Desmond stepped in to help them out and wrote web services to accomodate the requirements.

    3 months down the road Desmond, Jason, and Brad declared that development was complete and they were ready to begin QA testing.

    As testing began a slew of bugs cropped up. Problems integrating with the web services, problems connecting to the business 2 business services. Simple problems with validation on fields. Roughly 10 defects per day were being picked out by the Tester who was seeing the app for the first time in the 3 months of development.

    The developers kept reporting that everything was green because these were really simple bugs honestly... validation logic, some mild integration things... nothing really that complex and the turnaround was really quick. Surely we'll make our date they said to management.

    As the date neared and neared things hadn't changed with the defect rate... about 10 per day still of various things. None too perplexing to the developers and they turned around quickly.

    Feeling the pressure to deliver, the team was expanded by adding 2 testers and another developer. They struggled to learn the state of the application and how to use the test environment and had to ask a lot of questions of the already swamped team that was working on it, but like good soldiers everyone went right at it and hammered away.

    pushcar.jpg

    The defect rate soared even higher for a while as more and more people were using the source code, using the test environment, doing exploratory testing while waiting to get the actual test scripts and requirements clarifications they needed.

    The dead line neared closer and closre and management called for everyone to work weekends. "Do whatever it takes" was unspoken but understood because we can't possibly miss this date.

    Meanwhile, in another project, during the same timeline, a similiar team was working on a rewrite of a financial application for a different platform than the original software. They decided to use agile and aligned their list of work with the requirements document and knowledge of the existing application. Each requirement was scrutinized to be independent of eachother and became a product backlog. Each items acceptance criteria was discussed between tester, developer and business owner until a negotiated scope was agreed upon, estimated, and committed to for a 3 week sprint. If the item was completed, it was demo'd to the stakeholders at the end of the sprint. If the item was not completed (meaning it wasn't user accepted, qa tested, code reviewed, security scanned, end to end integration tested, unit tested) then it was not demo'd to the stakeholder. Sometimes they showed the stakeholder what they did, but a very large disclaimer was put on it, that it was not "Done" yet.

    This second team had to change directions a lot. They ran into many things that made the requirements have to be adjusted, acceptance criteria to be re-negotiated, and expectations to be modified. In the end, what the customer originally asked for was only a memory and the real product stood before them, working, tested, and ready for deployment. Now, it wasn't on schedule by any means and much of the functionality originally asked for wasn't in the deliverable that actually was launched... but everyone was in agreement as to why and the business owner "Signed off" on what was delivered and was in agreement with it the whole way.

    Full story

    Comments (0)

  • Incremental Development is Active Listening

    Go ahead, please read about active listening if you're not familiar with it.

    http://en.wikipedia.org/wiki/Active_listening

    Ok, so how the heck is this like incremental development?

    Well let's think about it just like this:

    Product owner: i want a thingamajig

    Developer: you want a thingamajig, sure i'll go make that

    3 days later:

    Developer: here ya go, a thingamajig. *Shows to PO*

    Product owner: oh this is what you thought a thingamajig was? hah, no it's actually like this...blah blah

    Developer: Oh you wanted a thingamajigawhatchamacallit?

    Product owner: Yea that...

    and thus it goes, zeroing in on exactly what they wanted.

    thoughts?

    Full story

    Comments (0)