Category: CMMi

Project Progress during Starting and Closing Phases

I think 80% of the project work is completed in 40% of the total time while it’s the remaining 20% that takes 60% of the time. Those of you who ever had to manage a project will notice that the it starts very slow and then it picks up speed and you see a lot of progress being made everyday but suddenly towards the end it slows down again and you feel that your team has lost the zest or they are slacking behind. But is this not expected ? if you plot the progress of the project (% of feature completed with time), you will see it takes up a S-curve as below: Let me explain why initiation and closing is slow. During Initiation Initiation refers to the starting phase of the project when you receive the notification that the project has started. It needs to be understood that unlike race-course horses, developers cannot dash out the gate at full throttle towards the finish line. They have just been allocated and they don’t even know what the project is all about. Here are some reasons which will slow down the progress during the starting phase: Team Establishment This is not about allocation of people. The team goes through a whole stage of Forming-Storming-Norming-Performing (Bruce Tuckman). This duration of this cycle depends on both the size of the team as well as diversity of domains/specialization within the project. Ambiguity in Requirements From no documentation to hundreds of pages of requirements, but I am yet to see a requirement document that is understood exactly in the same way by all people. There are multiple round of discussion between the team members and with the client during which the progress seems frozen. Tools and Environment In certain cases the project is dependent on tools and environment which is hard to duplicate in our development environment. I once remember a search engine portal project that we were doing in which our job was to make some enhancements. The current system extensively based on XPATH queries and we lost 10 days in just setting up the system on our server. In another project we are doing, the client had four different versions of the same application and the application called files (PHP includes) from multiple versions. We had to set up a team of 3 people for 7 days just to clean up the code and set it up on our servers. During Closing Closing is the abyss between when a developer says the job is complete and when you say that the job is complete. Here is what happens: Product Integration Often we have to wait for days (or weeks) for simple things like Payment Gateway info, SSL Certificate or information from 3rd party vendors on proprietory systems (web services) that the system must be intergrated with. Sometimes, server does not supports parts of codes that we have written and upgradation of server or rework of code is required. Note: CMMI required all integration requirements and environment to be planned earlier but still, if your hosting company responds to request within 5 days then what are we supposed to do? Defects As more features are added into the system, more bugs are also introduced. As the bug database takes a life of its own, there is a tendency to increase the mix of bugs to new client-valued functions being coded. The result is that the overall speed of the team is maintained but an increasing percentage of the effort is devoted toward fixing bugs or adding “bells and whistles” Enhancements Buy enhancement I am referring to all the things a developer had to do which he did not knew he will have to do when he started the project. This mostly comes in the form of – “Of course it was supposed to be there!” and with some luck we will be able to point back to requirement document and say “nope!”. The problem is that time is spent in these negotiations and discussions which would rather be spent on stabilizing the current set of features that the product already has. At the end, I remember what one client told me – “Project is like painting the wall – it’s the corners that take most of the time!”

Read More »

Customer is not the only stakeholder!

A stakeholder is anyone who is impacted by the outcome of the project. This can be either in a positive or negative way. These are the people who have some sort of stake in the outcome of the project. It normally includes people like clients, internal sponsors, employees, management, suppliers etc. As a small business goes on to implement CMMI, it sees clearly that customer is identified as one of stakeholder but not the only one though, there are other stakeholders in the projects as well that are equally important. It may seem that CMMI does not explicitly mentions things like “Customer Satisfaction” and “Voice of Customer” which are prevalent in other frameworks like ISO and Six Sigma. This people feel that implementing CMMI will increase overheads while not doing anything for the customer directly. For a small business, this is a dreadful scenario! I think the whole thing is being misrepresented or misunderstood. Here is why: Although CMMI does not tells that you should keep your customer happy, but it asks you to define the flow of activities that is used to create the service or product that you are offering to the customer. So it may be a case that a customer value great looking design but look at the value chain – The requirements of web design must be captured by the project manager first. While capturing the requirement, the primary stakeholder for the project manager will be the designer and not the customer himself. Another example, think about quality and timeliness of delivery.  This is something that is important to most of the customers. Now if the project lifecycle consists of analysis, design, coding, testing and delivery then the each subsequent phase relies on timeliness and quality of the deliverables of its previous phase. If one phase has poor quality or is delayed then it will affect all previous phases as well. Thus, the primary stakeholder for the analyst is the architect who will do the architecture, for the architecture it may be the developer will do the coding and for the developer it might be the tester. Now, if the developer thinks that in order to please the customer, he should work fast and in the process he introduces several bugs. Now, if the tester also thinks the same and does not do thorough testing then customer will get a buggy delivery or otherwise, the developer will have to do a lot of rework and bug-fixing which will delay the delivery. In both scenarios, I don’t see a happy customer! I think CMMI talks about this “value chain” which leads to customer satisfaction rather than talking about “customer satisfaction” first then not defining means to achieve it. If this “value chain” is not defined properly then it may be possible for the organization to satisfy some customers in some situations but it will not be possible to satisfy all customers. CMMI makes sure that everyone knows how their job connects to other jobs in making the deliverables. To conclude, CMMI does not say that customer is not important, it however talks about that chain of practices, deliverables and mutual dependencies which allow an organization to deliver customer satisfaction project after project.

Read More »

Process and Procedures

A process is series of steps or activities that you need to execute in order to solve a problem or come with an outcome or result. Processes exist within every organization, in some cases they are informal i.e. it is not documented but rather institutionalized by habit. Such as, signing the attendance register while entering or leaving office. Documenting the process is a great thing because it gives everyone within the organization a common way to solve the same problem. People often think that having a process will eliminate the need of having good people in the first place or limit their creativity. This is not true. For example, recipes for food is also sort of a process. A recipe for a chocolate cake may tell you all that is required to know about making one but still, if two people are reading the same recipe, the results that they come up will be different (and in some cases inedible). Same is true for software as well! Having a process makes people work smarter and not harder. Conduct a search for “Software Development Company” and try to navigate to process page (if you can find one!) and chances are that the general process for software development will be following: Analyze > Design > Code > Test If that is true then why the results from two software companies vary so much? In order to answer this question, ask the software engineers to tell you what they do within each of these four phases and the reason will dawn upon you. The above software development process is too generic in nature and hence it is open for interpretation. For example for you test may mean just mean ensuring that there is no spelling mistake on the page while for me it may mean that it should be XHTML validated as well. It’s actually the procedure that makes all the difference. While the process answers “what” will be done, the procedure answers “how” it will be done. The more detailed the procedure is, the lesser will be deviation for the expected results and the more consistently the process will be applied. Thus, although Process forms an outline of flow of activities but it is important to probe deeper and find out the procedures as well. Another important thing to point out is that too often, the process is focused more on the product itself then of the process that is used to create it. For example, writing a ten page document on how to format the code properly is an example of product focus. This will ensure that the code is formatted properly but how do we know that the “right” code has been written? I am not saying that code standards should not be there but I am stressing that the process focus means focusing more on the “means” rather thea of the “ends”.

Read More »

Configuration Management

Some of most frequently encountered problems in software development are faced due to poor configuration management practices such as: Previously fixed bugs miraculously reappear after latest update Development teams are working on separate versions of the code Changes implement earlier have miraculously disappeared A fully tested application stops working There is no way to trace the software requirements to the documents and deliverables. Software teams are using different versions of tools and resulting code is incompatible Configuration management falls under the category of Support process group of CMMI and falls at Level 2 in staged representation. In essence it is a discipline of establishing the integrity of the work products through proper identification, accounting, auditing and control. Here are the key things involved in this discipline:  Identifying Configuration Items Configuration items are identified at the very onset of the project. These typically include work products that are delivered to the customer, internal work products, acquired products, tools and intermediate work product that support the development effort. The following items are generally configurable items: Requirements specification, Architectural specification, Design specification, Code modules, Test data and plans, Project plan, Quality plan etc  Setting up a Baseline Establishing a baseline is most important part of configuration management discipline. A baseline represents an approved snapshot of the system at appropriate points in a system life cycle. A baseline serves a platform for further development. This is because before a baseline is established, change can be made informally but after establishing a baseline, change can only be made using a formal procedure. There are two important terms in respect to a baseline i.e. Build and Release. A baseline that is used for internal development is called a Build whereas a baseline that is delivered to the customer is called a release. Change Control As stated earlier, once a baseline is established the only way to make amendments to the “baselined” work product is through formal change requests. Each change request is recorded formally, their impact is evaluated, and they are formally reviewed and then tracked to closure. Changes are generally approved by a change control board (PM can also be a member of the group) and this ensure that adhoc changes are not made to the system. The change history of each work product should match its current baseline version. This helps the management to answer questions such as – what features has been added to the work product between release 1 and release 2? Often regression testing is also done on the configuration items to ensure that there are no unintended consequences on other configuration items. Configuration Status Accounting Configuration status accounting is quite similar to the financial status accounting in a sense it tells about the inflows and outflows that has resulted in the current state of the project. With a status accounting, the management should be able to answer questions like: How many changes have been received? How many changes approved / disapproved? How many have been implemented / pending implementation? What differences exist within successive baselines? Auditing the Configuration Finally, the system is audited, mostly prior to customer delivery to ensure that all change requests have been resolved and that the system contains only the work products that are required and nothing more. This is done by comparing the documentation (SRS, Manuals etc) to the product to ensure that it is ready for delivery. Word of Advice! Configuration Management is discipline in itself that requires infrastructure, effort and cost. Thus, these activities should be included in the original project plan itself otherwise it might seem like an overhead to do them later and the organization will make a costly mistake of ignoring this discipline

Read More »

Its a Problem not a Risk

Risk Management is a fundamental discipline for any planning process. Risk is defined as a possibility of a loss and has a probability associated against it. As a manager, it is important to continuously monitor risks and take actions to mitigate them. Dr. Robert Charette said that risk management is not about future decisions but, future of present decisions. The process to identify risks starts the beginning of the planning process itself. All the participants brainstorm to find out all the possible risks that may affect their plans. Then a monetary value is put against the risk which represents the amount of loss that will incur if the event actually occurs and finally, a percentage value is put against the risk item that represents the probability of the risk actually occurring. The impact of the risk is calculated as a product of probability and loss amount. This gives managers a way to prioritize risks and manage them effectively. For risks that can adversely impact our plans, it is also important to write up a contingency plan i.e. what will we do if this risk occurs. Decision making under a scenario of chaos is normally not as effective. I think the biggest benefit of risk planning is that it helps us in executing a pre-planned action at the time of chaos. This is because the action has been planned thoughtfully before the risk has actually occurred and hence the element of urgency does not cloud the judgment. For example, a data centre might consider fire as a risk to its facility and servers. Now, unless a plan has been drawn up earlier that tell the superintendent on duty about what to do in case of a fire, it will be difficult to take the “right action” or take “all the actions” that might be required to protect the facility and data in case there is fire. Too often within the planning process, people write down known issues as risks. Known issues are problems and not risks. For example, if you know that your organization does not have the skills to deliver the project then it’s a problem – not risk! You have to deal with it right away. A problem is a risk that has already been realized. They have a 100% probability.  The only reason someone wants to put a known problem as a risk is because they don’t want to deal with it right away. It’s same as saying – “OK! I know we cannot deliver this project but let’s put this down as a risk as we will deal with it later. Let’s focus on getting the SOW signed now”. This is wrong! Problems must be dealt with as soon as the identified and Risks can only be dealt with once they are occurred. In a nutshell, Risks always deal with future events and not present while whatever is known right now is a problem and not a risk. Thus as a customer, if  you ever come across a risk management plan where problems are listed as risks then you should be aware and ask your vendor to address them right away i.e. before the plan is approved.

Read More »

CMMI vs. ISO 9001:2000

People often tend to compare CMMI with ISO 9001. The most common thing that I come to hear is that ISO 9001:2000 is same as CMMI Level 3. I am no expert on this but being an ISO 9001 organization which has started its journey for CMMI, I cannot resist but talk about how different CMMI is from ISO 9001. First off, CMMI-SW had been designed as a framework for addressing the problem that is faced by organizations that are into development of software intensive systems. ISO on the other hand is applicable for all manufacturing organizations that may or may not be into software development. Thus, both your software organization as well as a road-side bakery can be an ISO 9001 organization but the bakery won’t get a CMMI certification. Here are the few things there in CMMI which ISO misses or does not mention explicitly: Institutionalization Without institutionalization a process breaks under pressure of deadline. CMMI stresses the fact that the process should be ingrained into business so that it becomes the part of corporate culture. Focus on Organizational Training For any process to implemented uniformly across organization and to ensure that organization keeps learning and growing it important to identify training needs and impart it properly. It is for this reason that CMMI has a separate practice area in the area of training. Maintaining Process Asset Library This library contains process assets that include process related documentation such as policies, defined processes, checklists, lessons-learned documents, templates, standards, procedures, plans, and training materials. These assets are required for the process to interpreted and executed properly. Discipline of Risk Management CMMI looks at risk management as an organized and technical discipline to identify things that light cause harm or loss. Once a risk is identified it is quantified and prioritized and the risk is tracked throughout the project life cycle. Causal Analysis The causes of variation in achieving the project goals are analyzed formally and the root is identified and addressed so the variation is eliminated or their impact is minimized. Concept of Stakeholders CMMI states that a stakeholder is anyone who is affected by or is accountable for the outcome of the project. Thus, a stakeholder can include project team members, suppliers, customers, end users, and others. I know that being in the business for software services it make better sense to be a CMMI organization.

Read More »

Continous and Staged Representation of CMMI

CMMI has two models which can be adopted by any organization which is looking to improve its processes. At a very basic level, CMMI is nothing but implementation a bunch of “practices” that are necessary to achieve high level of maturity and capability. These practices are grouped together into “Process Area” where each process area consists of a set of related practices. Each process area further belongs to four main threads and these are: Engineering Management Process Management Project Management Support Depending on what your business goals are, you can opt for a continuous or staged representation. Continuous Representation Continuous representation of CMMI is used by organizations that want to improve aspects of the organization that are most critical for their business needs. Within an IT organization context, if you think that “Time to Market” is most critical to your business, then automatically you will only want to improve the processes that directly impact the time of market. These will fall within the Project Management thread only. Thus, continuous representation of CMMI is ideal for you as it gives the flexibility of doing this. Another thing that continuous representation allows you to do , is that it allows you to mature different processes with a thread at different rates. So, if your organization is releasing “buggy” software then you may think that you want to improve only upon Process and Project Quality Assurance (PPQA), Verification (VER) and Validation (VAL) process areas. It a newer approach and this representation does not leads to a certification. Rather than having a organization maturity level, each process area has a capability level from 0-5, where 0 stands for “Incomplete” & 5 stands for “Optimizing”. Thus, the same organization can demonstrate capability level 3 in Project Planning (PP) and Capability level 1 or 0 in Supplier Agreement Management (SAM). Continuous model is mainly used for IT departments within non IT organizations rather than IT companies. A necessary precondition for an organization to choose this model, is that they should be aware of the processes and should be sure about what they want to improve. Staged Representation While continuous representation improves capability of specific processes within the organization, staged representation matures the organization as a whole. It a proven path that an organization can adapt in order to incrementally improve itself. This representation divides the process improvement effort into five distinct maturity levels (i.e. from 1 through 5) where each level has some predefined process area which an organization will need to implement. Process areas within a lower level forms the foundation of process area at a higher level. Thus a maturity level 3 means that the organization implements all process areas within Level 3 and the capability level of processes within Level 2 has also been increased to Level 3. Staged representation has been designed after collecting data from various organization and it has a demonstrated returns on investments. The best thing about staged representation is that it provides the organization with a sort of map which can guide them through process improvement. We have selected the staged model as our road map for process improvement with a target to acquire a maturity level 3.

Read More »

Understanding CMMI Levels

CMMI has 5 different levels i.e. from Level 1 to Level 5. I have tried to explain these levels in plain English so that you can understand and appreciate the whole process improvement initiative that we have taken up. CMMI Level 1 CMMI Level 1 is lower-most (or Inital) maturity level of an organization when we refer to the staged representation of of CMMI. Any organization which does not belong to any other level is considered to belong to Level 1 (or Level 0 as it should be). This level is characterized by following: There is no predictability in schedule, budget, scope or quality. The organization has some “pockets of excellence” – which basically means that there are only a few people or things that the organization can do well. The success of a project depends on the heroism of a few key players. The organization is people-dependent. Infact, all organizations are people dependent but in the context of CMMI this basically means the risk due attrition is very high. The knowhow of a project is lost with the developer who was working on it and there is no organizational learning. There is no formal or very poor planning process. The discipline of management and engineering is weak and inadequate CMMI Level 2 Level 2 is the “Managed Level”. At this level the organization sort of wakes up and instead of blaming its people it starts looking at its current processes as the main cause behind its inefficiencies. The following are the main characteristics of a Level 2 organization: The organization starts making realistic project commitments and key projects elements like cost, schedule and scope is tracked The organization defines a clear policy for project management and begins to plan the projects formally. The discipline to tracking actual project performance and comparing it to the planned performance is also instilled. So, the organization can take some proactive corrective actions if the project get delayed or exceeds it allocated budget. All the projects requirements and work-products are change managed. The changes to scope are always consolidated back into the main requirement document so that a single document containing all customer requirements are always available. Relationships with both internal and external suppliers are formally managed. All stakeholders outside the control of the project team may be treated as a supplier. Quality assurance becomes a formal process. All issues in a project are recorded for future analysis. Still at Level 2, there specific implementation of a process may differ from project to project. This happens because the employees may interpret same thing in different ways. Thus, projects may be doing there things in their own separate ways. Even at level 2 the although the organization builds project discipline, but there is still no process discipline. Things like coding practices, documentation practices etc may differ across different projects within the same organization. Thus, the results of each project may vary to a large extent. The feeling of “This is how we do things here” is non existent. This can also be seen from the fact that at Level 2 there is no process area under “Process Management” thread. CMMI Level 3 CMMI Level 3 or the “Defined” level is a stage when the processes and its interpretation gets institutionalized across the organization. The following are the main characteristics of a Level 3 organization: An Engineering Process Group or EPG (as it more commonly known) is formed. This is headed by someone from the senior management to ensure proper management commitment is there. This group is then responsible to managing the organization processes. Quality Management System or QMS document is generated which contains documentation regarding all processes. All projects must refer to this QMS and contribute back to it. It is very important as it leads to Organizational Learning. Here is how it works: Suppose “Project A” has made some process improvement or innovations, these are then fed back to the QMS. So when “Project B” is starting, it automatically shares the best practices of Project A. This ensures that organization keeps on improving and all projects share the common process. Continuous organizational training ensures that QMS is interpreted in the same way by everybody Engineering and Management activities are more aligned with each other. The engineering discipline gets more effective and the capability of the organization to delivery quality products is greatly enhanced. In reference to CMMI , Level 3 contains the maximum number of process areas that needs to be addressed. CMMI Level 4 At Level 4 or “Quantitatively Managed” level, the organization focuses on managing the projects and processes through the usage of statistical tools. This brings into picture the usage of data that the organization has started to collect at Level 3. Here is an overview of an Level 4 organization: Threshold values are established for each process area. For example, you may want to control the scope of the project more rigorously . So, you may define a threshold value that says that if the requirement is changed by more than 20% then re-planning and re-estimation will be required. All projects then need to ensure that requirements remain within the defined threshold values. All variations from the threshold value is determined and assigned to either special causes or common causes. Common causes can be thought of, as the causes for deviation that exist within the organization, for example improper training, improper risk management etc. Special causes can be though of reasons that exist beyond organizations direct control. This can be things like continuously changing customer requirements, no access to validation area etc The focus of the organization is to narrow down these threshold values i.e. if today the threshold for delivery schedule is 10% then the focus it to narrow it down to 7% or less. The quality of projects that the organization delivers it of high quality. All projects are managed and controlled using quantitative data. CMMI Level 5 CMMI Level 5 or the “Optimizing level” is different

Read More »
MENU
CONTACT US

Let’s connect!

    Privacy Policy.

    Almost there!

    Download the report

      Privacy Policy.