Software Engineer’s Blog

Software Engineering weblog

Why do you want to adopt both CMMI and Agile ?

Following are my comments on “Why do you want to adopt both CMMI and Agile ?” in Agile CMMI for Software Professionals group in Linkedin

CMMI is about measured capability maturity, primary beneficiary being the organization/project itself, and marketing advantage being a by-product.

I have worked with customers on their way up the CMMI levels. For some of them, I am sure, primary motivation for going on with CMMI was not marketing but rather demonstrated/proven capability maturity.

Agile approach is about effectively doing software development, being open and honest with all stakeholders across the board; focus being brought back from documentation (at times, misinterpreted to mean process) to customers, milestones, deliverables and team.

Fundamentally, being agile is a statement by yourself, about yourself, to yourself. You are not agile because someone wants you to but you believe you are doing the right things by adopting agile practices and you follow them for their benefit

I consider both as two sides of the same coin (software engineering), rather than conflicting interests

January 22, 2009 Posted by | Agile, Product Engineering, software engineering, Uncategorized | Leave a comment

What’s your opinion? Which is best? RUP, Scrum, or XP?

Following are my comments on “What’s your opinion? Which is best? RUP, Scrum, or XP?” in Agile Alliance group in Linkedin

First comment:
Why not RUP and …? RUP is a process framework/knowledge base and not a prescriptive process. You rather use RUP to derive a process instance

Subsequent comment:
Great to see the active and healthy discussion and hope to see this progressing further.

In this context, I would like to reiterate and substantiate my statement that RUP is not a process but rather a knowledge base and process framework. Lists of activities, relative order in which they should be performed, which artifacts to create, and dependency between them are more of guidelines/reference, and not meant to be prescriptions. Interesting links to read in this line would be: and . There are many more but I hope these links clarifies

One does not adopt knowledge base and process framework. Rather, you pick and choose from it. I agree, “extract any element of RUP you think you need on a given project and add it to Scrum”, as pointed out by Richard, is the right way to use it. Meaning, in that case you are using RUP as a reference, and not as a textbook or bible. Again, you need not worry about size of encyclopedia if you know what you need from that

Again, I believe, good architecture and design is important for software development and role of architect, for me, is in war front (and therefor, hands on and continuous; again in sync with RUP), and not in the control room. Such architecturally-orientation is not in conflict with agile practices. In my understanding, what agile practices stand for is ‘right sized” architecture or design, rather than discounting their value.

Incidentally, I do not ask my customers to adopt RUP but I present to them as a knowledge base only. I also use it as a knowledge base, at the back of my mind, in my consulting service.

I would like to hear from you on your thoughts and on what you find in as conflicting

January 20, 2009 Posted by | Agile, IBM Rational, Product Engineering, Rational, Rational Unified Process, software engineering, Software Quality, Uncategorized, Unified Process | Leave a comment

Business, and Software Architecture

Following are my comments on “This is our chance – how we pitch architecture value to the masses” in International Association of Software Architects group in Linkedin

Business requires and would demand value now and value later, and shrinking time line is a force (like many other) that architect needs to negotiate and balance. Architecture, as a subject of study and profession, is of no practical relevance unless it is translated into tangible value in the context of current and future business realities.

I believe, architecture continues to be relevant. Architects need to identify the value in concrete terms and communicate to other stakeholders, to be relevant

January 9, 2009 Posted by | Product Engineering, Software architecture, software engineering, Uncategorized | Leave a comment

Are Developers good testers… and can test better than a QA guy…??

Following are my comments on “Are Developers good testers… and can test better than a QA guy…??” in Software Testing & Quality Assurance group in Linkedin

I continue to be a designer, programmer, and tester. My experience is:

Coding as a mix of translation, derivation, and synthesis; essentially a creative and optimistic track. Testing is an act of what I call a “constructive destruction”.

Slips from development are not, typically, intentional. My code is my baby and I would like it be the best… this is also cause, at times, for developer-tester chasm; question on my baby is considered as question on me.

Human mind is at work and it has limitations. Human mind works best on terrain it is familiar with. You train it on coding; it will adapt to that. You train it on testing; it will adapt to that. It is difficult to be both at the same time.

Again, typically programmer works on smaller unit, whether he/she is aware of and involved in larger picture or not. Focus of testing, therefore, from developer is restricted to that unit (or a similar unit from peer). This is and needs to be done

Testing of the whole software is different from testing individual unit. Perspective now has to change to whole system and its desired business value. Typically difficult for a person to be both at the same time.

If trained well, one person can do both, in two different points in time but details, perspective and approach needs to change

January 8, 2009 Posted by | Agile, Agile testing, Software Testing, Testing, Uncategorized | Leave a comment

A Tester’s Observations in an Agile Environment

Following are my comments on ‘A Tester’s Observations in an Agile Environment’ in Software Testing & Quality Assurance group in Linkedin

I have seen successful and failed agile environments. Problems occur when fundamentals are compromised.

Agile approach has put focus back on individuals, rather than process/documentation; quite rightly so.

Therefore, success in agile approach depends on motivation (very critical) and skill levels of individuals involved, team synergy and agility, and very short feedback/correction cycles. Quite ironically though, I have seen in many such projects go on downward spiral with process (I do not mean documentation here) getting ritualistic and viscosity setting in the team (may be, a human tendency). This happens over time, as project complexity increases, defeating the very foundation on which agile approach is built. Given the above, I consider effect on testing is natural and incidental, though disastrous; meaning, root of the problem lies elsewhere. I consider this tendency fatal, unless immediate remedial steps are taken.

I had been asking a stock question to many agile teams that I have come across. Question is, does you testers ACTIVELY participate in the meetings. On probing (and, only on probing), it comes out that testers participate but participation is rather ritualistic. They do not dare to ask uncomfortable questions. It is important to ask uncomfortable questions, even if sugarcoated, and get answers to those questions. After all, no one else but only testers can claim to know the software as it is (rather than, what it should be/have been), its shortcomings/pitfalls, testability issues

It does not matter to me, as a tester, whether answers (to the uncomfortable questions that I ask) come to me as documents or it comes from discussions but if answers not coming from project team, irrespective of methodologies, project is running on dangerous track.

Then, it is time for a serious jolt; a jolt from above. If jolt does not occur naturally, it needs to be made to happen. In my experience, I find that someone, somewhere is always listening. But we need to set alarm bell ringing!

January 8, 2009 Posted by | Agile, Agile testing, Functional testing, software engineering, Software Testing, Testing | Leave a comment