Agile Exercises – The Generation Gap

Agile Exercises – The Generation Gap


As a relative newcomer to the world of Agile – having worked over 15 years in the Data Warehousing Industry – I was more than excited and willing to explore this new methodology in my first Agile project.

To those inhabiting the world of agile development – the buzz words fall off their lips like something that others are supposed to know and understand as soon as they hear it. For example: SCRUM, Stand-ups, Dashboard, User Stories with Story Points, and features and tasks – these were the equivalent of a cultural shock to me. I did not understand them, and few people were willing to help me understand them – they didn’t have the time and if they did, they didn’t have the inclination – despite my having informed them at the start that I had no idea of Agile methodology. I don’t know whether it’s the fact that the people implementing this methodology either did not know what they spoke of, or they were unable to articulate it properly. Either way, it was no help to me.

Point in fact – take the project manager (um… Agile doesn’t do project managers – they’re called Scrum Masters) from one of my projects. She insisted I put everything into business like terms for the User stories. I told her – okay – this is what I want to do – I want to merge data from two tables, de-dup some data and then merge the rest. How would you put it in terms that a business user understood? She looked at me like I had gone mad. From the word “Master” attached to the word “Scrum” you would expect someone who would be a MASTER at the work that scrum was supposed to do! Sadly, that was not the case.

Perhaps this was an aberration – not the reality. So I decided to keep an open mind, and moved onto my next project… This time, I thought, this time I am prepared.

I was not.

I was given a task that under normal circumstances would take one person between 15-20 days. A chunk of design, development with complete unit testing. Despite my protesting that this particular task could not be completed in that period of time – I was given the directive – I had to finish it in 10 days. With all my years of experience, I realized that these so-called scrum “masters” did not have the foggiest clue as to what went into an actual development cycle. And be it agile or waterfall or cascade – they would have failed to understand what each person’s task involved. They failed to understand the complexity of the work, they failed to understand the nuances of estimating based on complexity, they failed to understand a simple concept – that design and development require different elapsed times for task completion.

Small wonder then, that it was with trepidation and a complete absence of expectation, that I approached my third project. I was reasonably sure that this was going to be an equally uphill task for me. To my pleasant surprise, I found a group of people, who not only understood Agile methodology, they also understood the philosophies and hence the history behind it – they practiced as they preached. They provided training for us. It was a welcome change to be able to understand exactly what the meanings of those buzz words were. They made their expectations clear. It was a very, very enlightening time for me.

But I was also a bit disturbed at their willingness to completely denigrate the waterfall methodology. Having worked in that world, and successfully at that, I was piqued when they constantly dismissed the method as a non-working, non-productive, non-profit-making method for software development.
It is this point that I had my epiphany. What was I hearing other than the generation gap between tried and true methods of software development – albeit methods that evolved with decades separating their evolution? Much like children whose parents do not understand their “language”, and who do not understand their parents’ language – this was the difference that I was hearing.
So here I am. Trying to make sense of what makes Agile tick and what made the waterfall method tock, and whether there is a mean between them – where the twain could meet?

My opinions here are solely my own – based on years of experience working with successful Enterprise Data Warehouse Development projects. So here I list what I feel are the pros and cons of either method as applied to EDW development.

The waterfall methodology assumes that each phase of software development – i.e. – requirements definition, analysis, design, development and deployment follow one another after the successful completion of a previous phase. The weakness in this methodology is apparent – results take a long time to reach the business who are paying for those results. The strengths here are also apparent:

        Development takes the least amount of overall time, as everything is planned out and the work can be handed out to the developers who will develop to specs that are as complete as possible.
        It allows time to build a framework for development – so that the developers could concern themselves with only the actual build.
        It leverages each person’s expertise, and each team usually reports to a leader who allocates the tasks and is responsible for the delivery of each piece, thereby ensuring that each person is leveraged to their best ability.
        There is less oversight on a micro basis on each person allowing them to focus intently on one and only one task at a time.
        There is a deadline that has to be met, and expectations are clearly understood.
        The whole team works towards one set of deliverables within each release of the software. 
        Lulls are incorporated into the plan (if well planned)
        Corporate politics and bureaucracy is an accepted fact of life – especially in those corporations that are large and already have well-entrenched enterprise architecture standards and processes. And there is usually person on the project team who deals with these issues.
        In other words, there is a fair level of protection from internal politics for the delivery teams.
        Big teams for each of the areas.
The agile methodology assumes that
        Each set of tasks can be bundled up into a “user story” each of which can be completed over a set period of time – usually two weeks.
        There are no team leads, only a scrum master who leads a team of folks usually about 10 people.
        Not sure how development tasks are measured vs other tasks
        Framework building seems to be an on-the-fly effort – which means not much thought is given to either the requirements or the design of this piece of work
         Each person is supposed to take up tasks that are outstanding within a user-story and work on them.
        Each day, there is a stand-up – 10-15 minutes where you recite what one has done, and what one will do.
        There is extreme over-sight on each person’s work, because every single day one has to spend at least 15 mins updating their storyboards with the tasks they’ve completed or not
        There are no lulls in agile. It is expected that one will be working x # of hours per week – regardless. The pace is non-stop. The burn-out is inevitable.
        The only insulation against corporate politics and bureaucracy is the scrum master – and then even they might not know how to deal with technical stuff
I can see where Agile would work extremely well with regular software development.
-          With each release of software, newer features can be aligned, pulled in and worked on.
-          Each release can be as big or as small as needed
-          The data model can be as big or as small, as conformed or non-conformed as needed
-          Most software designers write “code” – scripts that are tucked into version control systems that allow any and all people to work on it. Since each piece is constantly evolving over time, this method of development works very well.
-          There is a sense of isolation within each scrum team, in that they work in their bubble and can be successful at it, since it is the same pieces of code they are working with.
-          There are few software systems that incorporate multiple technologies within the system itself. Although they may interact with multiple systems and technologies.
-          There is little demand to have a framework for data movement or integration.
-          There is a lower demand to manipulate terabytes of data on a daily basis as compared to an EDW.

It would be difficult to imagine these positives working in an Enterprise Data Warehouse.

An EDW requires that multiple systems feed into it. It requires that there are multiple software and hardware systems incorporated within the EDW platform – and deployment must account for each of these platforms. There are multiple access modes for an EDW – both canned and dynamic. Therefore, the foundations of an EDW need to be solid, yet flexible. Hence my crib about the foundational work or framework for the ETL portion. There needs time for this activity. Agile methodology cannot afford that.

Most EDW builds work within phases, i.e. they take a set of tasks that can be performed to provide results at the end of a three-to-six month period. The approach may be to take a source system at a time, a subject area (or part thereof) at a time or a report at a time. The results are usually in the form of a full deliverable – or as close to a perfect deliverable as possible – in other words – “done-done”. This is probably as close to a release period in comparison.

Perhaps the biggest difference in both methods lies in the oversight and daily tasks.

My complaint is that Agile is very micro-managed. And it is.

For example, I estimated the build of a complex ETL process to cover three days. My scrum master said – so for three days in scrum your only response will be working on task xyz? Yes, said I. Unacceptable, he said. My mouth dropped open. Can’t you break it down? He asked. No – was my response. Because in all honesty – how can you break down a particular piece of task  - which has already been unitized as far as possible. With waterfall method – I would not need to do this. More importantly, I would not need to explain to my lead why I need the time I do so. In fact, I would have been told that I had 3 days to complete the task.

Then there’s the scrum meetings. 10-15 mins every day for a group of around 6 six people sounds good, and it is. However, for a development team there is almost always the need to meet to discuss issues, logical flaws, business process understanding, design discussions. To me – the 15 minute stand up is a complete waste of time. Besides all our statuses are reflected in the daily dash board – which reflects exactly what we will say. I don’t get the need for redundancy in a supposedly lean method.

There is the end of sprint retrospective. Each team sits down and goes over what was good and what wasn’t. Lessons learnt etc. This takes the better part of half a day. Then there’s the sprint planning session which takes about a day. Ergo – with each sprint remove a day and a half of work spent in planning!

Here are some numbers for agile:

People on team                                                                                          60
Number of scrums                                                                                     12
People per scrum                                                                                       5
avg burn rate per person per hour                                                      90
Days per release (6 weeks)                                                                    30
Sprints per Release                                                                                    3
                                                                                                                          
Time/Money in Scrum Meetings                                                        
Time per person per release (hours)                                                 5
Per Day burn rate per person                                                                $               450.00
Time taken for 60 people                                                                        300
Dollar amount per release                                                                      $         27,000.00
                                                                                                                          
Time/Money per Sprint Retrospective                                             
Hours per Retrospective (assuming half day)                                 240
Dollar Amount per Sprint                                                                        $         21,600.00
Hours /Retro / Release                                                                            720
Dollar Amount / retro / Release                                                           $         64,800.00
                                                                                                                          
Time/Money per Release Retrospective                                         
Hours per Retrospective (8 hrs *  # of people)                              480
Dollars Per Retro                                                                                         $         43,200.00
                                                                                                                          
Total hrs spent in Planning Per six Weeks                                        1500
Total $$ spent                                                                                              $       135,000.00
                                                                                                                          
Total Releases in a Year                                                                            9
Total Hours in I Year                                                                                   13500
Total $$ in one year                                                                                   $   1,215,000.00

Perhaps the most telling difference between Agile and Waterfall methodologies is the concept of “done-done “.

Within Waterfall, the concept does not exist. When a task is done-done – it means that a task is perfectly done and ready for release – and it conforms or fulfills all requirements that it has to address. Any changes to be incorporated – will require a change request process.

Within Agile this phrase means that a task is for that particular sprint only. Agile methodology requires keeping tasks in backlogs. In itself a very descriptive way of saying – whatever is not done or cannot be done at the current sprint, can be pushed on the back burner and we’ll work on it if and when the requirement presents itself. In the meantime, it can stay tucked away, swept under a rug, you get the picture. When it is pulled out of the backlog – then no change request process is required – because, in all fairness, it is non-existent and therefore net-new. 


Comments

Popular posts from this blog

New Symbol for the Indian Rupee

The Age of Foolishness

The meaning of Christmas - for me