View Ravichandran J.V.'s profile on LinkedIn RJV 's Blog: December 2007 Tweet @ravichandranjv


Tuesday, 18 December 2007

Understanding a process - CMM & Agile

God is in detail and that is why a sculpted stone has that much structure and partial life to it because much detail has gone into making it. A process is much similar to a sculpture - the more detail you take care to put into it, the better it is going to shape up.

But, having said, it is also necessary to understand that an acute understanding of what the organisation is actually striving for is important. Is it an organisation that has quantity output as the priority as in the case of project based companies or is it concerned about quality, innovation and creativity as in the case of product based companies? Because accordingly your processes would shape up. Putting a person who has an outlook that fits the former type of company in a creativity driven company would mean havoc in the organisation's goals. Because this type of an employee would be pulling up people, who come late to work without regard to how late the guy actually worked etc.

Another instance for understanding a process. What is the implication, in microscopic terms, of a CMM 5 based company adopting an existing Agile methodology? Why is it necessary to understand the implications? Because a CMM 5 company already has a lot of process in place and is driven by continuous improvement goals, which means that since the inlaid processes of a CMM 5 level company is so deep the processes should automatically pave way for a methodology that not only has all the principles in place but also would seamlessly fit into the organisational model whereas, an adopted methodoloy will have to be either forcibly fit into the quality model or sufficient attention would have to be given to analyse whether the methodology can really be adopted! What we are arriving at, if I can summarise the above lines, is that because a CMM 5 company has Continuous Improvement (an umbrella goal that would also mean improvement in every aspect of its functioning) as its primary concern, adopting a methodology would be inherently putting the process into back gear or may even throw it out of gear. It would be much similar to the above metaphor of the non-creative minded employee getting into a creative lot. A misfit, in simple terms.

This is not to say that questioning accepted methodologies is what Continuous Improvement means (I am just pre-empting some arguments that may arise and answering them!) but how a CMM company should look at Agile.

Deviating from packaged quality models to hybrid models, where some points come from one model and another from another, would probably be the right way towards continuous improvement because that is what a CMM 5 based company is looking for, right? And to look at an Agile development model in a lower level would not make sense (just a reminder for readers).

To sum up, a well-defined process is like a tailored suit meant to fit into a type of structure that it was defined for. Forcibly fitting development methodologies without any regard to the underlying process is like trying to fit a suit into another body structure.

Tuesday, 11 December 2007

Lambda Expressions

It was in 2006 that I heard from a remote place called Mohali that there was a likelihood of a new type called the inferred type in the new version of .Net. At the time this term did not cause as much alarm as did something called "Lambda Expressions"! Looking back over the last few years since .Net came in, .Net has kinda stunned you at first sight with new terminology. I remember writing somewhere it is all about new terminology only and there was nothing new actually. I guess I was wrong to some extent and right to some because the need to create new terminology arises from identifying new technology and introducing them in the right manner to a new audience. Like for instance, the LINQ. At first sight, it is not something that you will fall in love with but expanding it to "Language Integrated Query" makes your life suddenly easier.

Lambda Expressions are somewhat similar. Looked at individually, where c=> x==y;, they would seem to be the toughest things doing the rounds but if you progress from the .Net 1.1 version's way of calling methods through delegates to anonymous methods in 2.0, the expressions make a lot of sense for its conciseness.

If in .net 1.1,

public delegate void MyDelegate();
public class TestDel{
public void IncreaseValue(){
Console.WriteLine("The value has increased");
private static void SomeMethod(int x){
MyDelegate del;
if (x>10)
del=new MyDelegate(IncreaseValue);
del=new MyDelegate(ValueDecrease); // ValueDecrease() not defined
public static void Main(){

More to follow...