August 26, 2012

How to solve it?

Summary of G.Polya's method for problem solving

UNDERSTANDING THE PROBLEM
First. You have to understand the problem. What is the unknown? What are the data? What is the condition? Is it possible to satisfy the condition? Is the condition sufficient to determine the unknown? Or is it insufficient? Or redundant? Or contradictory? Draw a figure. Introduce suitable notation. Separate the various parts of the condition. Can you write them down?

DEVISING A PLAN
Second. Find the connection between the data and the unknown. You may be obliged to consider auxiliary problems if an immediate connection cannot be found. You should obtain eventually a plan of the solution. Have you seen it before? Or have you seen the same problem in a slightly different form? Do you know a related problem? Do you know a theorem that could be useful? Look at the unknown! And try to think of a familiar problem having the same or a similar unknown. Here is a problem related to yours and solved before. Could you use it? Could you use its result? Could you use its method? Should you introduce some auxiliary element in order to make its use possible?
Could you restate the problem? Could you restate it still differently? Go back to definitions. If you cannot solve the proposed problem try to solve first some related problem. Could you imagine a more accessible related problem? A more general problem? A more special problem? An analogous problem? Could you solve a part of the problem? Keep only a part of the condition, drop the other part; how far is the unknown then determined, how can it vary? Could you derive something useful from the data? Could you think of other data appropriate to determine the unknown? Could you change the unknown or data, or both if necessary, so that the new unknown and the new data are nearer to each other? Did you use all the data? Did you use the whole condition? Have you taken into account all essential notions involved in the problem?

CARRYING OUT THE PLAN
Third. Carry out your plan. Carrying out your plan of the solution, check each step. Can you see clearly that the step is correct? Can you prove that it is correct?

LOOKING BACK
Fourth. Examine the solution obtained. Can you check the result? Can you check the argument? Can you derive the solution differently? Can you see it at a glance? Can you use the result, or the method, for some other problem?

The Phoenix Checklist

This is an effective checklist for approaching a problem; I am not sure where I picked this up from

The Problem

Why is it necessary to solve the problem?
What benefits would be received by solving the problem?
What is the unknown?
What is it you don't yet understand?
What is the information you have?
What isn't the problem?
Is the information sufficient? Or is it insufficient? Or redundant? Or contradictory?
Where are the boundaries of the problem? Can you separate the various parts of the problem? Can you write them down? What are the relationships of the parts of the problem?
What are the constants (things that can't be changed) of the problem?
Have you seen this problem before?
Have you seen this problem in a slightly different form?
Do you know a related problem?
Try to think of a familiar problem having the same or a similar unknown?
Suppose you find a problem related to yours that has already been solved. Can you use it? Can you use its method?
Can you restate your problem? How many different ways can you restate it? More general? More specific? Can the rules be changed?
What are the best, worst, and most probable cases you can imagine?


The Plan

Can you solve the whole problem? Part of the problem?
What would you like the resolution to be? Can you picture it?
How much of the unknown can you determine?
Can you derive something useful from the information you have?
Have you used all the information?
Have you taken into account all essential notions in the problem?
Can you separate the steps in the problem-solving process? Can you determine the correctness of each step?
What creative thinking techniques can use to generate ideas? How many different techniques?
Can you see the result? How many different kinds of results can you see?
How many different ways have you tried to solve the problem?
Can you intuit the problem? Can you check the result?
What should be done? How should it be done?
Where should it be done?
When should it be done?
Who should do it?
What you need to do at this time?
Who will be responsible for what?
Can you use this problem to solve some other problem?
What is the unique set of qualities that makes this problem different from another?
What milestones can best mark your progress?
How will you know when you are successful?
 

August 24, 2012

Is CMMI still relevant?

Not Any more, well at-least not as relevant as it was a decade or two back

Why do I think so? 

Fundamentally, any innovation or improvement (be it product or process), is envisioned and adapted, to solve an existing problem or exploring new opportunities. So the founding fathers of CMMI were surely trying to solve a problem that was prevalent those days.

So what problem did they solve?

In the Late 70’s & early 80’s Software Development projects spanned multiple years and huge programs were split to multiple projects and sub-contracted to multiple vendors.  The enormous size and complexity of the tasks resulted in lot of wastage of $$$ due to delayed and cancelled projects.  (Read: Mythical Man-Month).  To arrest this problem, the US Government, Industry and Academics got together and created a process model which would help Assess the process maturity of the contracted organizations, thus improving the predictability and increase the confidence towards meeting committed Schedule & Quality. Of course this evolved over a period of 6 years, between 1985 to 1991 undergoing multiple iterations. (for a brief on the history of CMMI see:  “A history of the Capability Maturity Model” by Mark C. Paulk). Subsequently, It became the de-facto Assessment of Organizational Capability & Maturity at delivering software to customers on Time & with Quality.

So why is not relevant anymore?

I would argue on three grounds

a) The Problem that CMM intended to solve does not exist anymore. Today’s projects do not span such durations, and our confidence levels have significantly improved. (Compared to early 90’s) .

b) In economic terms the marginal value that CMMI Certification provided to a Organization, (against an org. that is not certified) was significantly higher in 90’s and it is continually reducing. (Law of diminishing returns) .

c) Today’s problems are of completely different nature and complexity, and our Processes needs to be assessed for capability to meet today’s challenges.

So what are today’s Problems?

The rate of change in Technology, Consumer preferences and Market is exponentially higher than what it was 2 decades back.  Organizations are now scrambling to be adaptive to these changes & exploit the market and existing resources, without losing focus on Innovations. Hence companies today require having Adaptive & flexible processes.  The processes themselves should help support maximizing value to customers while improving continuously.  They should support and nurture Innovations to explore new market opportunities. 

Any assessment of Organizational Capability or Maturity should assess their ability to be Innovative and operate effectively in an environment of constant flux while staying profitable.