Showing posts with label project. Show all posts
Showing posts with label project. Show all posts

3 Aug 2013

Welcome on the CIT-Blog


Purpose of this Blog

Today, the IT department is in trouble. The business community is not satisfied of the IT department. The role of the IT department is undermined. Corporate IT is a shadow of what it should be. It is underexploited. Why? It’s all about the belief system. Do we really belief that by satisfying the demands formulated by the business community, their needs will be satisfied? Or, more importantly, do we believe this approach will allow the company to prosper?

This blog focusses on a few fundamental questions:

  • How to get the most of IT? (this issue is not a technological issue)
  • How to get the best “information component” in a company?
  • How to make IT projects to succeed?
  • How to implement successful information systems?
  • How to move from an IT department lagging behind to an IT department innovating and driving the business?

We need to change our belief system and to reposition IT within the company, redefine its role, retrain people, develop really best habits and implement healthy methodologies and finally develop a solid, flexible and manageable enterprise-wide information system that suits the company , solves its information needs and allows the business to function.

On this blog I present explain issues, forces and tendencies, mechanisms that unfold and solutions. I would like to emphasise five fundamental principles:

Five fundamental principles:
1.   Corporate IT is about Information and Information needs (not about technologies).
2.   The role of the IT department is to develop the information component of a company.
3.   The IT department is one of the most critical departments of the company.
4.   The main clients of the IT department are (in order of importance!):
a.    The company
b.    The whole business (set of businesses) & the IT department
c.    The business community
5.   Competences in Business Informatics (the conceptual area of IT, analysis and architecture) are most critical to IT department. (The IT department shouldn’t limit itself to technological knowledge.)

 

These principles are deduces from basic logic. The issues the IT departments struggle with today are linked to them. And of course, these principles do have consequences for the IT department and its environment.

Audience: Business Managers, Business Subject Matter Experts, CIO’s, IT Managers, Program and Project Managers, PMO members, Methodologists, Architects and Analysts, Software Engineers, ...

Subjects: Business-IT Alignment, Business-IT communication gap, Enterprise Engineering and Architecture, Business Analysis, Project Management, Requirements, ...

 

Enjoy.

Axel Vanhooren
 
View Axel Vanhooren's profile on LinkedIn  
 
Share it on Linkedin:  

 

ARTICLES BY SUBJECT

The IT Department

This set of posts explains how the weaknesses about the business-IT relationship and the presently followed approach based on the existing belief system.


 

Various Subjects



Agile

 

15 Jul 2013

Little Practical Guide to Outsourcing Software Development Projects



Little Practical Guide
to
Outsourcing
Software Development Projects

 
Axel Vanhooren

More and more projects are outsourced. It can be done onsite or offsite, be it as a onshore, nearshore or offshore project. This tactic can reduce the cost. But outsourced projects require a much better preparation and more formalism. Since more people are working on this type of project, more coordination is needed.  Outsourced projects are more complex, larger and riskier than when they would have executed in-house.
Taking the decision for outsourcing a software development project has more consequences for the client company or client organisation.

The decision is not straightforward at all. In essence, four aspects play a major role in the decision

·         Financial aspects
·         Practical implications for the company/organisation
·         Ability to set-up and manage offshore projects
·         The offshore software supplier
·         The type of project

Why doing outsourcing?

Cost Reduction
Probably the most cited argument is cost reduction.  Achieving a cost reduction may be not as easy. It doesn’t come down to take the plan of the project as if it was executed in-house or on-shore and using local salaries, local hiring fees and a supplier margin to compute the cost benefit. The reason for this is that outsourced projects have other requirements than in-house executed projects.

We need to consider that software development projects shouldn’t be managed as a cost, but as an investment. During the lifecycle of a software system, we need to look continuously on how to maximise its value for the company. And, the cost of the project that created the software is a fraction of the total cost of the software system’s life. Yet, during this project a lot of important decisions are taken concerning the scope, the purpose, the architecture, the design and the technologies. They have a great impact upon the future life of the system. They determine whether the system can respond to opportunities and at what cost. It determines how well it can evolve and thus influence the duration of its life. This project defines the basis of the further lifetime of the software system and influences thus the profitability of the system.

Other Reasons
Although the cost is the most cited reason, it may be not the real reason. Or, other reasons may play a role as well: understaffed IT department, lack of IT competencies, lack of trust in the IT department, a consumer’s attitude (preference for solution acquisition over doing the effort of solving problems), and so on.

The strategy to reduce drastic the internal IT department is highly questionable. Competencies in implementing changes, problem solving skills, project management skills, IT competencies and the capability to innovate and to renew itself are vital to organisations or companies. The importance of these skills depends, among other, of the size of the organisation.

Such reasons are symptoms of a very deep and serious issue that will threaten the company or organisation over time.

Good reasons are indeed the cost reduction, keeping the focus on the company’s core activities and vital systems, freeing most capable resources to work on essential projects, using faster knowledge the company doesn’t master yet, temporarily having more IT people working for the company (hiring external consultants is an alternative) and transfer of some risks. These are probably not the only reasons.

Implications of outsourcing

Outsourcing a software project can be interesting, but it has some implications.

·         During the outsourcing of the construction of a software system, information is passed to the software company. Information is spread outside the organisation.

o   Information about the way the business operates and how it is managed. It gives some insight in the processes, the logic, the available information, the services, and so on.
o   Projects are a way to transform a company. Projects give some clue about the company’s strategy, its intentions and its focus.
o   It may give indications to the outside world, or at least to the software company, how well the organisation is able to manage projects, and thus its capability to evolve and to transform itself.

·         The client organisation loses some control over its own systems and processes. Usually, the knowledge about a system developed through outsourcing is smaller than about in-house developed systems.
·         Outsourcing a project provides some power to the software company. The software company that built the built software system has more knowledge of that system than the client company does.
·         The organisation may become dependent of external providers.

Consequently, as a general rule, outsourcing strategic projects - projects that determine the position of the company/organisation in the years to come -, systems dealing with core processes or systems containing critical logic should not be outsourced.

Outsourcing all the systems containing the core processes of business or outsourcing a major part of the systems is a very risky strategy.

The lesser knowledge the organisation has over its system, the greater is dependency of the software company(/-ies), the more it is vulnerable.

Who can do outsourcing?
The IT department has to decide whether it outsources or not a project. This department is responsible for the automation of the processing of information within the company or organisation. They are also responsible for the implemented systems. If the business community starts to define and build information systems, whatever the way they choose, they engage in shadow IT. This undermines the information processing within the company, the ability of the IT department to take up its responsibilities and to play its role fully, and, ultimately, it will undermine the company.

Selection of the offshore software supplier
Selecting the right software supplier is a crucial step. Establishing the required criteria and doing research may help. The software supplier should preferably have experience in the technologies expected to be used, in similar projects, in outsourcing or offshore projects and in similar methodologies as those used by the client’s organisation. The availability of sufficient resources is another factor that may be considered. Guides about the selection of IT suppliers can be found on the web.


What phases of a project can be outsourced?

Analysis
Analysis activities can be outsourced. This includes the elaboration of business case or any other type of preliminary analysis. It is favourable, but not mandatory, that the analyst knows the business area and the company. Actually, some consider not knowing the business domain or the company as an advantage. Their arguments are valid as well.

However, it is easier when the analyst can talk with many different stakeholders, organise interviews and workshops. It is very helpful that he or she is present on the premises of the company. Analysis is about acquiring knowledge and insight. The company pays an external person to learn to know the situation within the company. Later this new insight should preferably be transferred again to an employee.

The client organisation and the software supplier have a common goal until the contract is signed. But once the contract is signed, game can be different. The client desires as much value at the lowest cost and with the lowest risks and without glitches. And some suppliers may want to deliver the minimum that still matches the agreement and this at the least effort. Both want the project to be finished as soon as possible, but for different reasons.

The analysis may be too superficial, incomplete, ambiguous, inconsistent or wrong. Or it may respond to only a part of the needs or even to the wrong needs. If the agreement is based on this analysis, in the end, the supplier delivering the solution that matches the agreement will be paid. But the client will have to face the troubles and the higher cost. An inappropriate analysis creates disappointment on the client’s side.

Outsourcing projects require analysis that are more complete, consistent, unambiguous and more detailed.

It is a prerequisite that the product to be developed is well defined. A fairly higher degree of precision and certainty makes the project easier. Changes are possible, but they may be more difficult or costly to achieve.

A good analysis is thus critical and should be conducted by a professional analyst. This can be an employee or an external and impartial consultant.

Design
The design is easier to be outsourced than the analysis. However, the company should ensure some things:

·         the design matches the analysis, fit the situation and solve the real problems and needs
·         the design must lead to an efficient functioning system
·         the required system’s qualities are built-in by design
·         the company understands the design thoroughly

Although, the design can be done by the partner, the company should master the design. A close follow-up is important. The design determines, for example, the scalability, the expandability and the flexibility of the system. A bad design may make the maintenance costly, making changes so hard that the company cannot make use of some opportunities, or may increase the cost of future changes.

Programming and Testing
Programming and testing are the phases that are the most easily outsourced.

It is beneficial that the software supplier follows coding policies of the client company and that the software code is well-structured, clean and efficient.
The client organisation should test the software when delivered. These tests should be more through than simple UAT’s. In the end, the client organisation is responsible for putting a software system in production. This means that outsourced software is tested several times. It is first tested by the supplier to ensure it does deliver working software that matches the demand. A part is retested as part of the UAT.  It is advised to test the software one more time by the client to verify and confirm it is working well and can be released to the production.

Delivery
The delivery phase includes the handing over of software and documentation. But, at least as important, is the assurance that a maximum of knowledge about the delivered software is transferred. Without this knowledge, the delivered software is nothing more than a black box of which the functioning is assumed to be as described in the requirements or is guessed.


Project Organisation
The company should follow up the project, ensure the analysis activities, verify the design and establish, execute and verify testing activities. This means that the company should appoint persons to these roles. The software supplier is likely to have the same roles in his part of the project.

Responsibility of the company
The client company’s has to ensure that the project delivers a product that corresponds to its needs. That is its main responsibility. In the beginning of the project, the client company is responsible for the correct identification of the needs. During the execution of the outsourced activities, the client organisation must ensure the product the software supplier is building corresponds to what is agreed and suits the client organisation. And upon delivery, the client organisation is responsible for the hand over, for the acceptance, for further testing, for the implementation and for the transition. There might be some nuances in this list of responsibilities depending on the specific situation and agreements.

The outsourced activities can be considered as a sub-project within an overarching project. The company is responsible for organising this overarching project and organisation. Even though the sub-project is managed by the software supplier, the client company should follow up and control the work done by the software supplier.

Follow-up, Control and Transition
The outsourced project must be followed-up and controlled by project manager, analysts, architects and possibly some other roles assigned on the client-side of the project. This follow-up doesn’t concern the quality of the activity plan, the progress of the outsourced project or its resource usage. It is much more important to verify that the requirements are well rightly taken into account in the design, the suitability of the design, and so on. The software product should not be a black box. It should be at least a grey box. The client, and more particularly, its IT department, needs to know the architecture, the implemented mechanisms, the organisation of the source code, and so on. This is about the understanding of what have been established before programming, or in terms of layers of detail, the layer just above the source code. The client should have and should validate the analysis and design artefacts made by the software supplier.


Essential aspects
There are some factors that require much more attention in off-shore projects:

·         An analysis of high quality
·         A higher degree of formalism
·         Good agreements will avoid many misunderstandings, wrong assumptions, discussions and disappointments.
·         More and effective communication
·         An efficient way to follow-up the project
·         Good testing

A few issues to consider
Some issues are important to consider:

·         How does the software company react when there is a doubt about the specifications?
·         What are the agreements about handling changes of requirements or specifications during the project execution?
·         Is the software supplier ready and able to follow the client’s coding standards and quality levels?  How is this process of transferring, using these standards and the control of their compliancy organised? This includes documentation standards.
·         How is the integration of the new system in the existing IT environment solved?
·         How much knowledge of the delivered system is transferred and how is this organised?
·         What support may be needed and what can still be expected from the software supplier months or years after the product has been delivered?
 


Cultural Differences


There are differences among developers. When specifications aren’t clear for the developer, developers may react in different ways. Some will stop working, others will interpret the specifications without caring, others will try to understand the purpose and guess for the right interpretation and others will ask for clarification. There are differences among the company cultures. There are differences among the clients and the suppliers. With offshore projects, the cultural differences are even greater when the parties are from distant countries. Additionally, the most obvious practical barriers are the distance, the language and the time zones. And maybe the legal differences play a role as well. This makes offshore projects more complex.

Anecdote: An offshore software supplier had delivered demanded software and was partying. The client was testing the software and found a few hundreds bugs. They called the software supplier to ask for explanation. “We are testing the software you delivered and we found 300 bugs in it. This is inadmissible. The contract stipulates that you would test the software before delivery.” Software supplier: “You found only 300 bugs. We tested it as agreed and found around 800 bugs. So, you still have 500 bugs to find. Good luck.”

Starting with outsourcing
Knowledge and experience in outsourcing projects can be built up gradually.
There is a lot to learn of the experience of other’s offshore project. Much can be learned from failed projects. There is plenty information on the web.

An evaluation of the present capability in managing and executing software development projects is a key to first consolidate or strengthen this capability before engaging in outsourcing.
Nearshore is somewhat safer than offshore projects. Small and non-vital projects are better candidates to begin with. Gradually larger projects can be outsourced.

Good Luck with your projects!

Other Resources

Outsourcing Management Body of Knowledge (OMBOK)™
URL: http://int-iom.org/documents/OMBOK.pdf

IAOP - International Association of Outsourcing Professionals
URL: http://www.iaop.org/

IAOP - Outsourcing Professional Body of Knowledge™ (OPBOK)


 
Keywords: software development, project, outsource, outsourcing, onsite, offsite, onshore, nearshore, offshore, project management, CIO, strategy, IT strategy, shadow IT, ERP, IT department
 
 
©2013 by Axel Vanhooren. All rights reserved

27 Oct 2012

When is a Project Successful ?


A seemingly simple but essential question is when is a project successful? The usual and probably most evident answer is when it delivers on time, on budget and within scope. But is this the right answer?
If the project reaches its objective, it is successful. If not it is a failure. Objectives allow people to work together in a same direction on a same mission. But more than that, people are evaluated on their ability to reach the established objectives.  Rewards are often linked to objectives. Erroneous objectives and a improper reward system based on these objectives may cause a lot of havoc in the company. We shouldn't take it lightly.
First, let's take a closer look at the iron triangle objective.


The Iron Triangle

A project which delivers late or exceeds the budget is not successful. The established time and budget are compared with the project execution. If the comparison is false, then the project is a failure.  

established time and budget   <,=,>?   project execution

If the project isn’t successful, we assume the execution wasn’t right. If the comparison turn out to be wrong, at least one of the two sides of the comparison must be wrong. So what if the project has been executed efficiently and effectively? What if the right side of the comparison is right and the left side is incorrect? After all, time and budget are only estimates. What is more likely to be wrong, the estimates or the project execution, which is the reality? Can we assert the estimations to be absolutely right and the reality to be wrong? Are estimations more important than the obtained results?
 
Time and budget are estimated too low.

The persons doing the estimations are too optimistic. Maybe they wanted to save money. However, thee estimations of time and budget are too low.

The team members may seek to respond to the expectations. They want to preserve their reputation. They want to be evaluated well and get rewards and promotions. Whatever the reason, most team members will do their utmost to achieve the objectives. They will do what is needed to deliver on time and maybe also on budget while respecting the scope, even if the estimations are too low. Undoubtedly, this will put the project under pressure. The lower the estimates, the greater the pressure, unless the estimations are more than ridiculous low.

To be successful, the team has not much choices. It must apply tactics like trusting the demand and information of the business community, working overtime and taking short cuts. Maybe, the product will respect the scope, but it isn’t sure it will be of great value to the business. The demand, the scope, the requirements and the specifications will be interpreted in such a way that the minimum will be implemented to comply with them. Anything that is not specified, even if needed, won't be implemented. The most simple version of the solution will be built. The quality of the product will suffer. The result is a too simplistic, poorly designed solution, having awkward or lacking features. Important characteristics, like configurability, maintainability, flexibility or evolvability will be weak. This will increase the operational cost, as well as the cost of future changes.
The work climate is likely to deteriorate and conflicts may arise between the team members.

Using time, budget and scope increases the risk of problems, increase of cost and/or prepare for a more difficult evolution.

The project can be delivered on time, on budget and accordingly to the scope but :

·         the project members may be frustrated or completely exhausted at the end of the project.
·         the delivered quality is poor.
·         no business value has been created.
·         although the specifications has been perfectly respected, many issues are created possibly creating downtime. The data is unmanageable or unreliable. Clients are lost. It loses credibility. Reputation of the company decreases.
 
Time and budget are estimated too high.

A project manager has to be responsible. He doesn't want his project to fail, or to be perceived as a failure. He/she wants his/hers project to be successful. That’s very easy. He/she simply provides estimations that are x times more than needed. The project delivers successfully but much time, budget, resources and opportunities have been wasted.
 
Measure of the Iron Triangle?

What does the iron triangle measure? In fact, the iron triangle is not a measure of success of the project at all. It is at its best an indication(!) of the performance of the project manager to estimate the project and manage the execution against the agreed estimations. Why is it only an indication? It doesn't represent with 100% certainty his/hers performance. A project manager never has a full control over what happens in the project.

Delivering within the iron triangle

Delivering within time, budget and accordingly to the scope makes more sense when it is feasible. Therefore, certain conditions must be satisfied. The product to be built must be fairly well known. All the specifications must be detailed enough. The estimations must be reliable and realistic. Moreover, no important incidents may occur. But even then, other criteria can be added.

Not all projects are the same. Installing a technological infrastructure or an in-house software development project are completely different projects.

During most software development projects the client's needs, the problem and the context are investigated. This investigation may be done partly before the project begins and continues during the project execution. For these projects, the product is not perfectly known when the project starts. Estimations are then more unsure.

Time, budget and scope can be variable. They can be regularly reviewed during the project execution. The sponsor and client may not like this. He/she is more likely wanting to know what a project will cost, what is the delivery date and what he/she will get before approving the project start. However, in some sense, Agile projects works with variable constraints. It is presented differently and not named like that. The time, budget and scope are established per iteration and is established just before the start of the iteration. The total scope, duration and budget is the sum of the scopes, durations and budgets of all the individual iterations. Thus, this total scope, time and budget of the whole project varies on every iteration. This makes it easier to deliver within these criteria.

Project Success Criteria

Do we really need to know if a project is successful? Although this may be interesting, it is maybe not what we really seek to know or what matters most. This will be clarified.

The PMI defines the project as a process. A project can be defined as successful when it efficiently produced the product it is intended to produce.

Using only success criteria based on the process (project execution), doesn’t put much responsibilities about the final product on the shoulders of the project team. The project team can be judged successful because it produced efficiently the product demanded by the sponsor and/or by the business community. Nevertheless, the product can be completely unusable for the business or may even be harmful for the business. Basically, some project management skills and technological knowledge suffice to achieve this. This approach has clearly detrimental effects.

Product Success Criteria

The sponsor wants to get, as return on his invested budget, a product that suits him. His investment is motivated by the result, not by the building process (project). The product is more important. It makes sense to deduce that the success criteria should be based on the project’s product. The question has then to be reformulated as “Is the produced product successful?” To be successful, the team need to understand the operational environment and how people will use the product. Technological knowledge doesn't suffice anymore. More skills, like analysis and design skills, are needed.

Hereby, we must note that, measuring its success at the end of the project is just a snapshot of its business value. During the lifecycle of the IT system, after the project ended, its business value will continue evolves.

Business Success Criteria

The product can be useable by the end-users, it has to contribute to the business as well. This matters more. It's not a bad idea to link the project to business objectives. The project team will then be contributing to these objectives.

But again, things are not that simple. There is rarely a one-to-one relation between the business objective and the project’s product. The product created by the project contributes to reaching the business objective. But it is not the only factor. For example, a new sales support software application contributes to increase the sales. But the marketing campaign and the sales force influence the sales volume as well (and probably even more than the software application). Factors, external to the project, do play an even greater role. Reaching a forecasted higher sales volume is not a direct measure of the project’s product success.

 

These criteria require the IT team (not all the team members) to have some insight and knowledge in the business. It also requires a greater information exchange and some more collaboration between the business people and the project team.

One more level higher

Beyond the level of the business, there is one higher level: the enterprise. As the IT department should contribute to the enterprise, it is (also) from that level that objectives and criteria should be derived. This doesn’t only require additional knowledge and skills, it also re-positions the IT department.

Selecting Success Criteria

Success criteria should be selected with care. The most obvious criteria are derived from the objectives (project objectives, product objectives and business objectives). The facilities and machines have an accounting value. Similarly, the IT infrastructure and the information systems have a business value. Augmenting this business value can be used as a success criteria as well. We may also look at the more global desired outcome like end-user satisfaction and client satisfaction.

Or, we may get inspired from the resource-side of the initiative. Through projects, new skills can be acquired. There are factors that may seem to be not important to measure the success but which may undermine future successes. The resources may not be exhausted at the end of the project. They should be fresh to start on a new project. Unorganised or unreliable documentation or an inelegant design may not be a barrier to achieve the present objective. But they may be an obstacle to reach future objectives. Today, the failure or the success of tomorrow is prepared.

An organisation can establish a catalogue of success criteria by analysing projects and brainstorming. For every project, it can then consult this catalogue to establish a list of criteria for that project. Then, it can add more criteria specific to that project. The organisation can do the same for the product.
This is quite a lot of effort. But, why do we want to know whether a project was successful or not? It is important to know it. But today, in practice, except declaring a project’s success, what is really done with knowing that a project was a failure or a success? I have heard about failed projects that where nevertheless declared as a success and even project managers of projects that were admitted to have failed to be promoted.