A site devoted mostly to everything related to Information Technology under the sun - among other things.

Tuesday, September 10, 2024

Pointing a User Story

When one attempts to point a User Story, one needs to take into account the 3 major factors pertaining to the delivery and completion of that User Story: Viz. Complexity, Effort, Uncertainty, in order to arrive at the points for it.

Factors for Estimating a User Story

One way of doing so would be to point each of the 3 factors above separately, using the usual Fibonacci sequence to assign an independent value to each factor.

The next step would be to compute the geometric mean of the 3 factors and round it up to the nearest Fibonacci number.  Here the geometric mean that could be used would be the cubic root.  Geometric mean is used since, Life is in general rather non-linear.

The advantage of this approach would be to explicitly call out each factor in the pointing process and to cause Developers to consider each factor independently.

The implementation could be a simple HTML page with 3 dropdowns (that are prepopulated by Fibonacci numbers): sel-options-complexity, sel-options-effort, and sel-options-uncertainty.

The JavaScript code - using jQuery - would be as follows:

<script>

    function GetSelectedValue() {

        var complexity = $('#sel-options-complexity').val();

        var effort = $('#sel-options-effort').val();

        var uncertainty = $('#sel-options-uncertainty').val();


        var score = Math.cbrt(complexity * effort * uncertainty);


        score = fitToFibonacciNumber(score);


        document.getElementById("combined-points").innerHTML = score;

    }


    function fitToFibonacciNumber(value) {

        if (value >= 1 && value < 2) return 1;

        if (value >= 2 && value < 3) return 2;

        if (value >= 3 && value < 5) return 3;

        if (value >= 5 && value < 8) return 5;

        if (value >= 8 && value < 13) return 8;

        if (value >= 13 && value < 21) return 13;

        if (value >= 21 && value < 34) return 21;

        if (value >= 34) return Math.trunc(value);

    }

</script>

The method GetSelectedValue() would be invoked every time the user selects a value from any of the dropdowns.  The result is then displayed on the UI (not shown here). 

In principle, any other non-linear function could be used, such as logarithm, or even the Sigmoid function.  One has to experiment with a stable Agile team over time to determine suitable alternatives to the geometric mean, utilized here.

In this treatment, the 3 factors Complexity, Effort, Uncertainty have been treated with equal weights.  However, there could be situations in which the Agile team is tackling User Stories that are more uncertain (ambiguous) or are working with lower-than-needed staffing levels or are dealing with very complex User Stories.  Under such circumstances, it might make sense to assign a different weight to each factor and then calibrate the weights over several Sprints with the Agile team.

Thursday, September 5, 2024

News of Cyborgs

In a case of Life imitating Art, we learn of a cyborg whose biological component is a fungus:

https://www.cnn.com/2024/09/04/science/fungus-robot-mushroom-biohybrid/index.html

Sunday, September 1, 2024

Programmer Joke

 Question: How can you tell when you are talking to an extrovert programmer?

  Answer: He stares at your shoes, when he talks to you!

About Me

My photo
I had been a senior software developer working for HP and GM. I am interested in intelligent and scientific computing. I am passionate about computers as enablers for human imagination. The contents of this site are not in any way, shape, or form endorsed, approved, or otherwise authorized by HP, its subsidiaries, or its officers and shareholders.

Blog Archive