Working in the Information Technology field for over 17 years has its advantages. Mostly, the knowledge I've gain from being hired to help an IT project recuperate from failure. As America struggles to get back on its feet, most companies are working hard not to have a failed project. This is because failed IT projects are very costly in that the company spends money; but gets nothing in return. The following paragraphs list the top six reasons I've seen IT projects fail.
#1. Unfounded Requirements Assumptions
Within IT, we all know requirements are defined by the customer (see my blog article titled: Requirements: Understanding the Customer's Vision ). Requirements may come from taking notes during a meeting with the stakeholder and translating the notes into requirements. Alternatively, requirements may also come from making a list of questions that you ask the stakeholder. You then use the stakeholders' response(s) to define one or more requirements. So, what about assumptions? Even if a Business Analyst or Systems Analyst derives assumptions; the assumptions should also be discussed with the stakeholders. What's not a good practice is adding assumptions to a requirements document; and, distributing the document without discussing the assumptions with the stakeholders. Discussing assumptions with the appropriate stakeholder(s) before adding them to the requirements document is essential. This approach develops trust and shows the stakeholders they are in charge.
To avoid confusion or miscommunication, it's best to make sure all requirements are discussed, especially those derived from assumptions, before they are added to the requirements document.
#2. Making Promises Without Understanding What it Would Take to Keep Those Promises
This is one of the most frustrating problems--especially for those who diligently work hard to ensure all projects they support are successful. Those responsible for negotiating timelines with the customer should always talk to the team about proposed timelines before any promises are made. If short timelines are needed, the best approach is to prioritize requirements. This way requirements can be implemented by priority (understanding that all requirements can't be assigned a "High" priority). Negotiating realistic time-frames is key to successfully completing a project. On the other hand, making promises that include short turnaround times for larges amounts of work isn't a good idea. This usually leads to poor quality work that frustrates the customer and makes the entire IT team look and feel bad.
#3. Using a Role Other Than A Business Analyst/Systems Analyst to Gather Requirements
Requirements gathering is about more than just talking and writing. The Business Analyst/Systems Analyst responsible for defining requirements has learned elicitation techniques to define what the customer needs and wants. In addition, the Analyst has learned Gap Analysis techniques, traceability and other requirements-related techniques. Assuming anyone on the team, including Technical Writers or Developers, can define requirements can lead to costly mistakes. The roles in IT are divided such that each team member brings the specialty needed to accurately accomplish specific activities within the Software Development Life Cycle. When a practice other than an industry best practice is used; unwanted, unexpected results will usually surface.
#4. Releasing Software Without Proper Documentation
Before a new system is released, the proper documentation should be created. Most team members hate writing documentation; but that doesn't minimize the fact that system documentation is crucial. Any new business application should be accompanied by the following:
a. End-User materials - User's guides, getting started guides, quick reference guides and other materials needed to tell the user how to install, setup and use the system is important. (See my blog article titled Technical Writing & Technical Training Materials.)
b. Training Materials - Some systems may be complex enough to require user training. For example, Enterprise Resource Planning Systems (ERPs) should never be implemented without a cohesive plan to provide users with training. Training is important because it ensures users understand how to use the system to do their job. (See my blog article titled Technical Writing & Technical Training Materials.)
3. Re-engineered Business Process Document - If a new business application causes an organization's business process to change; it is imperative to educate the users. For example, to order a magazine users may call the support desk. The Customer Service Rep. do the following:
1. Take the order;
2. Type up a label and invoice; and
3. Send the request to the mailroom to fill the order and mail it out.
But, what if the company installs a new system. With the new system, the customer still calls the support desk. However, instead of typing up the invoice and mailing label; the Customer Service Rep. is now expected to enter the information into the system. The system then creates the invoice and sends a notification to the mailroom. Notice how end-user documentation will tell the Customer Service Rep. how to use the system to place the order. But, also notice how the process has drastically changed. Neither end-user nor training materials typically address the business process changes. This is why a plan should be implemented to document the business process change. The documented process change can be made part of the end-user's training. Or, the relevant documents can be given to employees impacted by the change. This ensures the organization continues to run smoothly with little downtime. It also ensures employees understand how to do their jobs with a new system in place. (See my blog article on Business Process Re-Engineering and Enterprise Architecture, Segment Architecture & Solution Architecture ,)
#5. Hiring a Project Manager Who Doesn't Understand the Project Manager's Role
The Project Manager (PM) is one of the key people on the project. In addition to managing the project budget, timelines and deliverables; the PM is the key interface between the IT team and the customer. It is important that the PM understand the balance between customer responsibilities and the IT team.
I worked on an important project with a PM who negotiated due dates without establishing "how" the work was to get done. The PM wanted the customer to pick the templates and methodology that would be used to complete the work. With due dates already negotiated, I knew the more time it took to get the project started; the less time we had to complete the work. I knew the longer we "sat back and waited on the customer"; the less likely we were to succeed. Instead of sitting around I put together the templates based on the methodology I thought would be best for the customer's environment. Although I was not the PM; I still did not want to be part of a failed project. I pleaded with the PM to take the templates to the customer and ask the customer to simply review and provide input on what we provided. One meeting between the PM and customer gave us the go-ahead we needed to get started. The customer became enthusiastic because the project began to move forward. Things were getting done and the customer knew exactly what we would deliver and the approach we would use to do the work. As problems arose the PM was stumped. But, each time I used my experience to advise the PM on the best way to tackle the problem to achieve maximum project success.
Not everyone on a project team will have the experience I have. But if the team has a Project Manager who understands the various IT roles, SDLC methodologies, the customer's role and most importantly the Project Manager's role and responsibilities--things should go just fine.
#6. Not Using a Cohesive Methodology to Implement Software
It is not uncommon for a non-IT company to believe IT work can be accomplished without a methodology. The one company I stepped into that did not use an IT methodology to complete IT work experienced failure over and over again prior. The non-IT company hired IT people. But, since the non-IT people didn't know what they were doing; they inadvertedly hired IT people who didn't know what they were doing. So, the non-IT company ended up with an IT Department that had extremely weak IT skills.
Consequently, no one in the company trusted the IT Department. When I interviewed to join the IT team; the IT team assured me everyone (besides the IT Department) was responsible for the project failures. I wanted to discuss the methodology being used to do the work. I was told a methodology had not been adopted. So, the first thing I did was point out that it is impossible to successfully complete a project without using an "established" methodology.
I recommended an approach and created and circulated the templates. I documented the approach using a Visio diagram that everyone could follow and understand. Then I suggested that we try the approach out on a small scope of work, which we did. Everything went smoothly and the project was a success. The company adopted the methodology and greed no IT work would be done without using the agreed upon approach.
In short, never try to complete IT work without using an established methodology. These methodology were established after teams attempted to do work without them.
In Summary
Following is a list of things you can do to keep your IT project on the right track and avoid the blunders that cause projects to fail:
#1. Always have unfounded requirements assumptions approved by the stakeholder before they are stated as requirements.
#2. In IT, always understand what it will take to keep a promise before you make the promise.
#3. Always use a Business Analyst/Systems Analyst to gather and manage requirements.
#4. Always make sure proper documentation has been developed before releasing a new software application.
#5. Always hire a Project Manager who understands the Project Management role in its entirety and has experience successfully filling the role.
#6. Always use a cohesive methodology to implement a software application.
A blog that tells how to write requirements, develop Android apps & games, work with business intelligence data, work with medical data, develop software, write test cases for user story scenarios, develop SharePoint apps, develop with the Unity Game engine, create plugins for social networking apps, build apps on a cloud platform, etc.
Showing posts with label solve business problems. Show all posts
Showing posts with label solve business problems. Show all posts
Sunday, February 24, 2013
Monday, June 4, 2012
Requirements: Understanding the Customer's Vision
Establishing the Vision
One
of the most important aspects of designing a system is requirements
gathering. A company can have the most seasoned user experience
professionals, top-notch developers and exceptional testers that catch
every defect. But, will the customer be happy with a beautifully built,
flawless product that isn't what was needed? Probably not!
For over 8 years I've worked as a business systems analyst; typically hired as a consultant after a project has failed. And, in most cases, the projects that failed did so because incorrect assumptions were made. And, requirements were then written from a mixture of inaccurate assumptions and customer statements.
The only way to accurately identify customer requirements is to ask questions. Ask questions and let the customer state his/her vision for the implementation. Be sure to ask about business problems and needs that may have initiated the need for the project. You can manage this information by creating a list of business problems and/or needs. Ultimately, all requirements and problems/needs should be managed using a requirements management system such as RequisitePro.
For over 8 years I've worked as a business systems analyst; typically hired as a consultant after a project has failed. And, in most cases, the projects that failed did so because incorrect assumptions were made. And, requirements were then written from a mixture of inaccurate assumptions and customer statements.
The only way to accurately identify customer requirements is to ask questions. Ask questions and let the customer state his/her vision for the implementation. Be sure to ask about business problems and needs that may have initiated the need for the project. You can manage this information by creating a list of business problems and/or needs. Ultimately, all requirements and problems/needs should be managed using a requirements management system such as RequisitePro.
1.1 NEED: Need a dashboard that reflects current sales by region
1.2
PROBLEM: Currently, end users are not able to associate a customer
order with a region (data can only be associated with a city and state).
Should we have the system assign the region based on the city/state?
How can we fix this problem?
1.3 NEED: Need to be able to generate reports for segment marketing. We need to implement a business intelligence solution.
1.4 PROBLEM: All employees can add order records, when only Customer Support should be able to add order records. What’s the best way to address this problem?
1.3 NEED: Need to be able to generate reports for segment marketing. We need to implement a business intelligence solution.
1.4 PROBLEM: All employees can add order records, when only Customer Support should be able to add order records. What’s the best way to address this problem?
Notice,
with each problem the customer realizes that it’s a problem; but the
need that will be used to fix the problem has not been identified.
Ultimately, all problems should be translatable to a definite need that
everyone agrees on. Following is the updated Problems/Needs list with
the problems translated to a need. (Note that with requirements it is
good to keep all of the information in place and add notes as changes
are made. Then as questions arise as to where the requirement came from,
you have the historical data to refer to.)
Problem/Needs List UPDATED
1.1 NEED: Need a dashboard that reflects current sales by region
1.2 NEED: Add region data added to the database. Need to get the CD from the Post Office that includes city, states and zip codes. Verify that the region data is also included. If not our DBAs will need to add the region data. (Description for the need is: This need resolves 1.2 Problem: Currently, end users are not able to associate a customer order with a region (data can only be associated with a city and state). Should we have the system assign the region based on the city/state? How can we fix this problem?)
1.3 NEED: Need to be able to generate reports for segment marketing. We need to implement a business intelligence solution.
1.4 NEED: Need a Customer Support Role. This role should be the only role with the right to add a customer order. No other roles should be granted this right. . (Description for the need is: This need resolves 1.4 Problem: All employees can add order records, when only Customer Support should be able to add order records. What’s the best way to address this problem?)
1.2 NEED: Add region data added to the database. Need to get the CD from the Post Office that includes city, states and zip codes. Verify that the region data is also included. If not our DBAs will need to add the region data. (Description for the need is: This need resolves 1.2 Problem: Currently, end users are not able to associate a customer order with a region (data can only be associated with a city and state). Should we have the system assign the region based on the city/state? How can we fix this problem?)
1.3 NEED: Need to be able to generate reports for segment marketing. We need to implement a business intelligence solution.
1.4 NEED: Need a Customer Support Role. This role should be the only role with the right to add a customer order. No other roles should be granted this right. . (Description for the need is: This need resolves 1.4 Problem: All employees can add order records, when only Customer Support should be able to add order records. What’s the best way to address this problem?)
Once
the problems/needs list has been completed you will need to ask about
the Features the system is to support. Features are the highest level of
requirements. The features will ultimately be used to organize the use
cases.
Following is a list of features to provide an example of what a feature might look like:
1. Manage Customer Records
2. Interface with the XYZ Accounting System
3. Generate Business Intelligence Reports
4. Manage Sales Records
5. Manage Employee Records
6. Manage Customer Orders
Both
the Problems/Needs list and the Product Features are added to the
Vision document, which includes other information such as information
about the stakeholders (individuals who are directly impacted by the
success or failure of the projects). The Analyst should ask stakeholders
whether or not they have any type of success criteria. A success
criterion is a requirement that the system or project must meet for the
project to be viewed as a success. For example, a success criterion may
be that the system must be in place by a specific date. If this is the
case adding a priority to your features, use cases and functional
requirements become critical. When you have short timelines, you will
need to work with the stakeholders to prioritize the requirements.
Requirements marked with a “High” priority are implemented first. Then
the “Medium” priority requirements are implemented once all “High”
requirements have been successfully implemented. Lastly, your “Low”
priority requirements are implemented once the Medium priority
requirements have been implemented. The following table
shows an example of the High, Medium and Low priorities mapped to
features, use cases and functional requirements.
Features
|
Feature Ranking = High
|
Feature Ranking = Medium
|
Feature Ranking = Low
|
Use Cases
|
All Use Cases = High priority
|
Approximately %50 of use cases = High priority – ONLY IMPLEMENT THE USE CASES MARKED AS HIGH.
|
Less than %50 of use Cases = High priority– ONLY IMPLEMENT THE USE CASES MARKED AS HIGH
|
Functional Requirements
|
All functional requirements = High priority
|
Approximately %50 of functional requirements = High priority– ONLY IMPLEMENT THE FUNCTIONAL REQUIREMENTS MARKED AS HIGH
|
Less than %50 of functional requirements = High priority– ONLY IMPLEMENT THE FUNCTIONAL REQUIREMENTS MARKED AS HIGH
|
In
addition to adding information about the stakeholders, information
about the end users of the system is also included in the Vision
document. Other information included in the Vision document includes the
technical documentation and end-user training requirements as well as a
high-level list of other requirements such a performance. Once the
features have been identified, the use cases are defined and added to
the use case specification. Then the functional requirements are defined and added to the software requirements specification.
To accurately design a business solution from requirements; the analyst must take on the role of a detective. He or she must search for unknowns; and, turn mysteries into concrete statements for feedback. At times the analyst will have to draw conclusions from provided information; and, clearly state those conclusions for feedback. Thorough investigative work is what it takes to accurately define a business solution. But it also takes an understanding of the technology associated with the project.
It's also good practice to gain an understanding of any initial groundwork already laid for the project. For example, ask for a copy of the Statement of Work (SOW). Also, ask for existing system documents, system diagrams, and access to the current system, if applicable. And, in some cases, personal time may need to be used to read through the materials--if the deadlines are tight. But, it is worth it to put forth the effort to gain this insight prior to meeting with the customer. This allows requirements gathering sessions to be used to gather requirements.
Summary
Below is a list of tips you may find useful while meeting with customers to understand system requirements:
1. Ask for existing system or project documentation.
2. Be willing to use your personal time to learn concepts if deadlines are tight.
3. When meeting with the customer ask questions. And, make sure the stated business problems/needs are addressed.
4. Enter all requirements into a requirements management system.
5. Perform a gap analysis between the current system, the business problems/needs and the use cases and functional requirements. If a business need has not been translated into an actionable requirements be sure to translate it to either a use case or functional requirements—based on the need and how it is to be implemented.
6. Write questions that will help close the identified gaps. Then be sure to obtain complete answers to those questions.
7. Update the requirements as you receive answers to your questions.
8. Generate a trace matrix or report for customers to review.
Labels:
business analyst
,
requirements
,
solve business problems
,
system analysis
,
system design
,
Use Cases
,
users stories
Subscribe to:
Posts
(
Atom
)