• We don't use a methodology here

    "We don't use a methodology here"

    "we just use what works"

    Sound familiar?

    How do you know what works?

    How do you really measure that it's working?

     

    I think back to when I was a little boy. My younger brother and I would get a board game out of the closet and decide to play. I would say "you remember how to play this?" and he would say "Of course i do!". We would start playing and i would notice him breaking a rule and say "Hey hey, you can't do that!".

     

    So now Imagine going into an organization and saying "You all understand the scrum rules, right?"

    "Yes, of course we do, we've been doing scrum for a while now"

    -- think about that. I'd like to hear your comments

     

    Full story

    Comments (0)

  • I want to do a 'tech' piece

    i want to do something 'tech' on my blog. something really impactful. I could redo something people have already written books about, but that would be boring.

    I wish I was creative enough or had enough things coming down the pipe that 'threw me for a curve', but i just don't.

    So if you have something you think you'd like to hear me rant about... drop me a line here

     

    While you think about what you want to throw at me, I'm going to tell a quick story.

     day 27 in the sprint Roger walks over and grabs Garrett the scrum master and takes him aside. He says "Man, garrett, this is completely out of control... the programmers code and code and then don't give us anything to look at until near the end of the sprint so then we can't get anything tested before the end of the sprint so I look like the bottleneck in this."

    you are garrett:

    option A: wow, let's talk about that with the developers and find out why they're doing that

    option B:I'll take care of that

    option C: It is what it is

    option D: why didn't you say this at standup

    option "other".

     

     

    Full story

    Comments (0)

  • Good Agile, Bad Agile, I'm the guy with the gun.

    I doubt steve over at Google sees really how google constructed their agile empire. I doubt some of you got my Army of darkness reference, but if you did... sweet.

    Good agile, bad agile... this reminds me of something someone said to me in an elevator the other day. "James, just remember, it's not your agile, it's <insert specific high up person's name here>'s agile".

    I found both of these statements dubiously irritating because, there is only 1 agile

    Sure, there's the profiteers out there trying to make a buck on it.

    Why shouldn't they though?

    Agile needs their community just as bad as waterfall does.

    When it all comes down to it... there's really 2 simple abstractions in 'things you do to make software'

    Those are:
    Project management Practices

    and

    Engineering Practices.

    If you look at the very very core of google, you'll probably see a very lightweight organization who has the core agile values and a very good metric on measuring both sides of the 'agile fence' (left side versus right side) so that they can make a call as to whether you're being "Agile" or being "other".

    Scrum works. Really it does.

    Organizations usually do not.

    In fact Ken Schwaber says that only 35% of organizations who attempt to adopt scrum will succeed.

    I can see that especially true in most places who see IT development as a cost center rather than a revenue stream. So long as they treat it as such, it will continue to be as such.

    Scrum takes a certain dedication to do what's profitable, to seeing employees making their own decisions, and letting cards fall where they may. For organizations whose goal is something other than engineering, they find it hard to trust IT enough to allow them such freedoms.

    You see, there's two types of adoptions of scrum that work in my opinion.

    One is a bottom-up. The employees on the team see great value in it, make connections with their real product owners and use scrum to deliver great software. They get noticed. The company picks it up and runs with it.

    The second is a top-down. The company uses a very strong executive sponsor in a special project that chooses to use scrum, trains all of the employees in how it works, then they use scrum to do software. If it succeeds, they go through the rest of the organization adopting it one team at a time. (alternatively, they go all-in)

    Which are you in?

    Full story

    Comments (0)

  • "Certified Scrummaster" misleading

    http://www.lostechies.com/blogs/joe_ocampo/archive/2008/06/07/my-issues-with-the-term-quot-scrum-master-quot.aspx

    Joe here makes a good argument that the term Scrum "Master" implies that the are the master of scrum. My CST (certified scrum trainer) made a good point during our class: The word "Certified" means that they obtained the training from a scrum alliance certified source of training. With so many sources of 'scrum' training they wanted people to get the appropriate information and this is through the 'Certified' course.

    I want to add that anyone and everyone in the scrum community acknowledges that the CSM is at the very most an introduction to the terminology and framework of scrum. It is NOT a class on how to make scrum work nor even is it a very good foundation on which to fully understand self directed work teams.

    My favorite comment on the end of Joe's blog is something to this affect:

    If you're interviewing a scrum master, make sure you have them talk about what impediments they encountered and how they got the team rallied around fixing the problem or at the very worst how they fixed the problem themselves.

    The sign of a good scrum master would be an individual who understand that they have no authority and it all falls on the team, but that sometimes they must go the extra mile to ensure visibility and conflict resolution.

    As an example:

    I remember a while back i said if you have no product owner... do it yourself... This was an impediment and the solution isn't to have the scrum master be the PO, but the VISIBILITY is what will 'force' the solution to happen. :) (i'm still waiting to find out who brings the most pain down on me, so i can identify the real product owner) :) :)

     

     

    Full story

    Comments (0)

  • Takes me back to supporting end user days

    http://blip.tv/file/1015028

     

    Full story

    Comments (0)

  • Defining done

    hanselman posts up a podcast for you guys to listen to

     

    Meanwhile, i want to share a little story.

    I was working for a little start-up tech company that's been in the business for a few years. I had moved to part time and was working at home, maintaining my own backlog of functionality out of the massive requirements documentation they had. Using the specs and use cases i setup acceptance criteria for each item and estimated each item using relative points then i began working top down 1 through 80 or so.

    After two weeks into it, the project manager called me for a status update and i looked at my spreadsheet and could clearly see that i was 18% done and i said "yea i'm 18% done".

    "Oh my, he said. That's certainly a serious issue. When do you expect you'll be finished."

    "9 more weeks, maybe as few as 8"

    "But we have to finish in 1 month"

    "well if nothing changes, i'll be done in 9 maybe 8"

    "well the other developers say they're 90% done"

    "can they take some of my work load?"

    "no they cannot"

    So we ended the call and another two weeks went by.

    "how are things going?"

    "Ironically, i'm 38% complete. I'm actually picking up pace."

    "Oh dear, 38%? that's not good"

    "how are the other developers doing"

    "They're at 90%"

    "Still?"

     

    Anyhow, this time he did take the rest of my scope away and gave it to the other developers to finish, since they were so close to being "Done".

    My brother calls this "Faith based project management".

    I call it "Lying", but i'm not known for my wordsmithing.

    Full story

    Comments (0)

  • Economic Stimulus check

    Economic Stimulus check... a contribution to gas companies right out of the taxpayers pockets.

    Maybe i'm borderline conspiracy theorist here but i find it interesting. I was sitting here thinking about my 600 dollar check from the government and pondering how many gallons of gasoline that would buy. 10 months worth or so? And if the gas prices hadn't went up by 100% this year it would have been 5 months... not nearly close to a year. So i thought for a second... what if there's a direct correlation  in stimulus check to the amount gasoline went up per year for the average american?

    So what? yea... no big deal. Just a coincidence.

    Full story

    Comments (0)

  • INVEST in user stories

    one of the tenants of the agile manifesto is that we have come to value "Working software" over "Comprehensive documentation".

    One of the most challenging aspects of gathering requirements is that they are fluid, changing, and never fully 'captured' as we would like to imagine they are. Software is ever-emerging much like writing music.

    If you're currently using requirements documents think about this for a moment... when the first draft of the requirements was shown to you as a developer you probably said "Seriously? Where's the rest?". A few versions down the road, it was starting to look like there was actually enough to begin writing. However, as you started writing some code you found more questions that you had to ask. Eventually, things, while not completely diverged from the requirements may just not have even been a part of the 'finished' requirements document.

    I can't count how many times, even with very lavish requirements documents, that I ended up finding some little aspect that i had to 'figure out' (when i say that i mean i had to guess because no one knew the answer).

    AND (tribute to mike vizdos)

    This is ok.

    And

    Agile development takes this into consideration by urging you to write software that is "Incomplete" and then show it to your user to solicit feedback!

    And

    This is where many QA people get squeemish.

    And they'll probably freak out because they think you're going to release code that isn't done yet!!! I mean how could you possibly release the ability to load documents without the ability to first save them!!! (In mike Cohn's book he talks about the product owner who wants to see how the loading of documents worked first because the product was going to revolve around that feature, and with user stories he was allowed to do that).

    Vaibhav here puts up a good reason to follow this acronym of INVEST when making user stories. I can't explain it any better.

    Once you implement the first user story you have working software and with working software, your customers can finally SEE what it is and begin making decisions about what to do next. Some people might say, well what if i already have my product and i'm just adding features to it? It works the same way, the stakeholders will get  a chance to see some fully implemented functionality (however small) from end to end and THIS is how they generate ideas and YOU get feedback that makes your product BETTER and more competitive.

     

     

     

    Full story

    Comments (0)

  • Making new events

    I was talking with a co worker and we were discussing the need for knowing whether or not a radio button was checked or not when we got the Checked event called. I suggested we create our own event and he wondered how that would possible. In the end we decided that it was rather useless to write a whole event for such a thing but the discussion was good.

    I thought the dialogue could be further elaborated on here in my blog.

     

    you can't really 'uncheck' a radio button so i'll use a check box and set it to auto postback, like this:

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RadioCheckedEventPage._Default" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>Untitled Page</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" />

        </div>

        </form>

    </body>

    </html>

     

     

    Now let’s go into the code behind and create the event we were discussing… the one where we have no idea whether it’s checked or not without inspecting the checkbox itself.

     

     

           

            protected void CheckBox1_CheckedChanged(object sender, EventArgs e)

            {

                bool isChecked = (sender as CheckBox).Checked;

                Response.Write(isChecked.ToString());

            }

     

    So what my thought was, is to create an event on the page that represented when the check changed but passed the check state in the event args.

     

    So first we need a new event args that has the check state.

        public class CheckChangedEventArgs : EventArgs

        {

            private bool _isChecked;

     

            public bool IsChecked

            {

                get { return _isChecked; }

                set { _isChecked = value; }

            }

        }

     

     

    Then we need a delegate for the event handler.

    public delegate void CheckChangedEventHandler(object sender, CheckChangedEventArgs e);

     

    Then we need an event on the page.

        public partial class _Default : System.Web.UI.Page

        {

            protected void Page_Load(object sender, EventArgs e)

            {

     

            }

     

            protected void CheckBox1_CheckedChanged(object sender, EventArgs e)

            {

                bool isChecked = (sender as CheckBox).Checked;

                Response.Write(isChecked.ToString());

            }

     

            public event CheckChangedEventHandler CheckBoxCheckChanged;

        }

     

    Then we just hook up a handler to that event and move the response.write() into it:

        public partial class _Default : System.Web.UI.Page

        {

            public _Default()

            {

                this.CheckBoxCheckChanged += new CheckChangedEventHandler(_Default_CheckBoxCheckChanged);

            }

     

            void _Default_CheckBoxCheckChanged(object sender, CheckChangedEventArgs e)

            {

                Response.Write(e.IsChecked.ToString());

            }

            protected void Page_Load(object sender, EventArgs e)

            {

     

            }

     

            protected void CheckBox1_CheckedChanged(object sender, EventArgs e)

            {

                bool isChecked = (sender as CheckBox).Checked;

               

            }

     

            public event CheckChangedEventHandler CheckBoxCheckChanged;

        }

     

    Lastly, we call the new event from the old event and pass the value. (this is the part where we realized we were just adding needless complexity, but still the lesson was good.

     

     

              protected void CheckBox1_CheckedChanged(object sender, EventArgs e)

            {

                bool isChecked = (sender as CheckBox).Checked;

                if (CheckBoxCheckChanged != null)

                {

                    CheckChangedEventArgs changeEvent = new CheckChangedEventArgs();

                    changeEvent.IsChecked = isChecked;

                    CheckBoxCheckChanged(sender, changeEvent);

                }

            }

    Full story

    Comments (0)