Apidays New York 2024 - The value of a flexible API Management solution for O...
Stop SharePoint Project Failure
1. Stop SharePoint Project Failure;
Create Real Requirements
SharePoint User Group of D.C.
June, 2013
Matthew J.
Bailey
2. I consider myself a “SharePoint All-Rounder”. My job tasks vary from
Administration, Development, Training, Analyst, UAT and Project Management.
My job changes daily based on the crazy life of an IT fellow in corporate America,
but it keeps things interesting!
If I don‟t know an answer to one of your questions, I will try to find out or point
you in the right direction!
SharePoint Business Analyst &
IT Project Manager
JDSU
Matthew J. Bailey, MCTS
3. What is Project Failure?
It means different things to
different people.
The product did not finish or launch at all / abandoned
The project finished but did not deploy
The project finished but not as promised or expected
The project finished and deployed but unexpected issues occur later
The project deployed, according to requirements, but no one used it
4. SharePoint Project Failures -
Quotes
What u talkin‟ bout Willis?
“It was so slow we couldn‟t use it”
“We spent over 1 million dollars on it and it still doesn‟t do what we
wanted it to”
“The project finished and deployed but unexpected issues occur
later”
“The project deployed, according to requirements, but no one used
it”
5. SharePoint Project Failures -
What Really Happened
I be talkin‟ „bout this!
“It was so slow we couldn‟t use it”
“No one did a demo first” , “it has been a constant add-on of one project on top of
another coded poorly”, “so many people have worked on it, consultants, employee
turnover, etc”, “the sales person showed me a demo so I know it should work”, “I read it
on the internet so it must be true”, “the server infrastructure could not support it”, “it
had 3rd party black box dependencies”
“We spent over 1 million dollars on it and it still doesn‟t do what we wanted it to”
“The right people were not involved in the design or are no longer here”, “someone
promised the moon and delivered an asteroid”, “miscommunication”, “requirements were
not very specific”, “people conveniently forget”
The project finished and deployed but unexpected issues occur later
“who would be managing later was not considered”, “employee turnover”, “long term
usage and data size was not considered”, “maintenance is not being performed”,
“uncontrollable issue such as my home internet service to my company’s VPN that is slow“
The project deployed, according to requirements, but no one used it
“user design was not considered”, “the users of this were not consulted”
6. The “Risk” Factor
3rd Party Tool Integration / Dependency on Other Items
Specialty coding / little documentation / hard to find a knowledgeable
resource
Lots of InfoPath
Adding to an existing highly complex environment that you did not
build
complex workflows
Lots of SharePoint Designer
Insufficient hardware (need to do research for what is sufficient)
Insufficient architecture / configuration
Trying something unknown without creating a thorough, real demo
3rd Party Dependancy
Term Store / Taxonomy / Metadata Complexity
Multiple Languages
Different environments / sync / content deployment
custom page layouts
javascript files / jQuery version incompatibilties
existing solution files / .dlls that need to be changed
needing to code something that needs special permissions
7.
Warning, success can be hard work
Our requirements / design
documents should include:
!
8.
Requirements Documentation
Our requirements / design
documents should include:
Scopes
Assumptions
Risks / Concerns / Unknowns
Dependencies
Audience
Responsible Parties (even if unknown)
* NOTE: Requirements documents can vary from company to company.
These are guidelines not a mandated format that must be followed.
9. How we thought the project should go
We haven‟t realized it yet,
but it is going show up
later…
Performance
3rd Party Tool Integration / Dependency on Other Items
Hardware / Infrastructure Issues
Choosing poor development methods / lack of experience
11. How could we have prevented
this?
Scope
• How the user will interact to complete this process
• What the finished result will be
• What the expected level of effort will be
• Budget
• “ Oh, well we have text in CEWP and typed on the page. “
• “ Understanding what SharePoint can/can’t do & how hard it is to do “
• “ page should copy over any text we put on it. “
• “ I know you told me that wasn't possible 3 times, but I am going to ask again and then ask
someone else on the team because I really want it. “
• “It doesn’t have the wording I want “
• “Oh, we have a bunch of custom web parts on the pages. They don't seem to be copying over to
some sites.”
12. How could we have prevented
this?
Audience (stakeholders)
• IT / Administrators / Infrastructure / Architecture
• End users / Other developers/project teams (not directly on this
project)
• Past parties involved with project (if needed)
• Change Management
• Managers (related or ones whose actions could put a stop to
everything)
• Project Managers & Project Developers
• “Wait! We have a huge company acquisition coming and everything has to stop until we make
changes for that. “
• “ Yeah, just send me an email and I'll do that (I'm still waiting...) “
• “ Who are you? “
• “ Others agenda / needto control / be right, etc. “
• “ Oh, I didn't know anything about this project you were working on. We were working on
something that might affect this. “
13. How could we have prevented
this?
Dependencies
• Ability to perform our job function / do what we need to
• Ensure other items we need function properly now
• Ensure we have access to what we need
• Budget
• Skilled SharePoint resources
• “We are developing on a desktop configured with different versions of SharePoint vs. your
enterprise server configuration. Your Page Layouts on your test server are broken. “
• “ Well, we have different page layouts that we use but it should work for all of them regardless of
which one we use. “
• “ How come these CQWP parts aren't showing on some of the site pages? Yeah, they are all looking
up different to list items based on different metadata terms, most of which don't exist so they
would apply to the new page on the other site. “
14. How could we have prevented
this?
Assumptions
• Governance stating what is allowed to be done/used in this
environment
• Bugs - Known
• Properly configured well performing infrastructure
• “What am I allowed to do”
• “We have to present this to Change Management now. Oh, you don't feel comfortable with
manually copying .dll files to 9 servers due to our load balanced environment?”
• “Why is this workflow sooooo slow?”
• “ What do you mean I'm not allowed to use SPD on the test server, why is it disabled? You didn't
tell us how we could build it. SPD is disabled for security reasons, why would you need it? “
15. How could we have prevented
this?
Risks / Unknowns
• Company initiatives
• Project participant turnover
• Project history
• “ Effective immediately, we will be streamlining the organization and the following personnel
changes will be made... “
• “ We have to do a restore on a server so your project is delayed. “
• “ yyy isn't available, you will now be contacting zzz “
• “ xxx isn't available, you will now be contacting yyy “
• “ History “
16. How could we have prevented
this?
Responsible Parties
• Company initiatives
• Project participant turnover
• Project history
• Participant committment
• “Yeah, just send me an email and I'll do that (I'm still waiting...) “
• “ I have too much to do (a.k.a., surfing the internet) and can't test this, can you ask someone else?
“
• “ I thought we had agreed on a list of defects with this project, why have some disappeared from
the bug list “
17.
It‟s a fine line to walk…
Depending on your role, you
may not be at liberty to
address some topics
If you are in IT, you don‟t want to look incompetent, yet lack of disclosure creates an
environment for rumors to be created and spread.
If you are a consultant, there is a challenge between knowing you need the work to survive
yet not being dishonest or taking on more than you can handle.
If you are in management, you may not be able to disclose items such as budget,
employee turn over, company/IT direction, etc.
If you are selling the 3rd party product, it is hard to know everything about a potential
customer‟s systems and needs, yet bringing it up could eliminate the product from being
considered.
18.
More Ideas to create scope…
What can assist us with
project success even more?
Pictures / Video
Technically specific SharePoint items
Diagrams
19. Step 1 – What we know
What are we sure of and is
ready for a final
confirmation?
! We know we are building a workflow
! We know who some of the people involved are
! We know there will be a budget and IT related people involved
! We know there will probably be a timeline
!
20. Step 2 – What we know we don‟t
know
What are we not sure of but
know it?
? Who in IT will be helping us
? Who specifically will the developers be
? What parts of SharePoint technology are we going to be using
? What are our restrictions regarding coding / implementation
? Who could be the other stakeholders in this
?
21. Step 3 – What we don‟t know we
don‟t know
We haven‟t realized it yet,
but it is going show up
later…
• Bugs that will surface
• Company initiatives changing
• Participant / people turnover
• People‟s agenda
22.
Diagrams can help, or at least confuse your stakeholders
enough to make them stop and think….
Our requirements / design
documents should include:
Scopes
Assumptions
Risks
Dependencies
23. SharePoint Technical Considerations (1)
Are we allowed to deploy full trust solutions?
Would be good to know if we can use all of the SharePoint functionality or not
upfront.
Are we depending on an AD authentication from another
location?
Have the users been made aware that there can be slowness or failure due to
AD being down on the verification side?
Are we dependent on a web service/data cloud service from
another system? Has this service been tested / researched for reliability?
Are we allowed / will we need to run code with elevated
privledges?
Has research been done to verify that you must use this method, if it alright to
use it at this company?
Are we allowed to deploy code to the GAC?
Did we ask if we can create custom .dll files and must they be bundled in a
.wsp for deployment?
Are we dependent on or using a complex taxonomy / term store?
Who manages the term store? Programming against it can have challenges.
There were known bugs with renaming terms in the Hidden Taxonomy List
prior to SP1 for SP2010. If programming against it, how are you programming
to access the data.
Are we dependent on data that is not always fresh, such as a
search index or an import job?
Are we familiar with the search topology, can it support robust searching? How
frequently are the indexes crawling and will full or incremental crawls be used?
Anything dependent on the User Profile Service? Do we know how often this runs and what it is importing?
Are there items such as cache settings or security you do not
know about that will create issues?
Have we checked if there is any site level caching, site collection level caching,
server level caching or load-balanced / failover issues that could make us think
twice on how we program?
Do we have proper test / stage / prod environments to properly
develop test on (whether it be internal or working another party
who is doing the development for you)?
Do we have proper, completely similar environments set up to develop, test
and deploy on? Was a good deal of time spent comparing the environments to
make sure they are similar (i.e., C.U., SP numbers, features enabled, search set
up same)?
24. SharePoint Technical Considerations (2)
Are we allowed to run PowerShell scripts?
Is there anything in this project that is going to require data clean up, changes to
existing items, special configurations or other items that you will need PowerShell for?
Are we aware of architecture / power of architecture?
Although this can be difficult to gauge, do we at least know how many servers, with
what types of hard drives, CPUs, memory & network connections are in this puzzle?
Which features / services are enabled on which servers? Can what I am implementing
handle the traffic, processes or coding?
Are we aware of complexity of previous solutions / coding you are
walking into that is messy?
Do we know the history of this project? Have several people already worked on it and
left it in a shambles? Is there documentation or can we get a hold of someone who
worked on it? Are there end users available who can explain what it is supposed to be
doing?
Will we need to/ are we allowed to create custom Timer Jobs /
schedules windows tasks?
If you are start to require complex coding, will you be allowed to create these types of
features on the servers? Will the server admins allow it?
Will we rely on scheduled tasks or timer jobs that do not run frequently
enough?
If you cannot increase the frequency of the timer jobs, do the users at least know that
in some cases the time delay so they do not think something is broken as it "appears to
work one day and not the next"
Can I give the right permissions to users of your application that are
need to use it?
Have we designated which role needs to accomplish which tasks in which areas of
SharePoint (i.e. there are sites they need Owner access to but they are a Contributor
everywhere else, do we need to create custom permission levels)
Will I need / can I use some "fancy" security authentications such as
claims/secure store/FBA, etc?
Is IT alright with doing this? Has the person doing it completed something similar in
the past to troubleshoot the complexities of it?
Will we be doing client side/browser dependent application coding and
can't control the clients browser or device?
User experience such as streaming media from 3rd party video player, mobile,
responsive design is a potential UX risk.
Will we need custom web parts?
Are there already web parts to do this? Can a 3rd party web part be used instead
(risks)?
Will be using using some codeplex / open source unsupported code?
Has there been a lot of testing done to ensure the usability of this? Is it continually
update or supported? Is there any other information on the internet about it or do you
know anyone who has used it?
25. SharePoint Technical Considerations (3)
Are we dependant on an API that could change?
jQuery and version changes, different items needing different versions. Other
products API that could change (i.e. video streaming service other .js libraries,
java, ODBC)
Are we dependant on 3rd party applications running on top of
SharePoint that are like a "black box"?
Is there a product such as a workflow or data integration product from a 3rd
party involved in this project? If so, are you familiar with how it works or is
there little ability to see
Are there multiple people working on a project and there is code
overlap or overwrite?
Is there a code vault/TFS scenario in place? Is there ongoing discussion with all
developers involved? Are others deploying code in between times you are
introducing new conflicts?
Are we sure of data retrieval formats / availability?
Are you aware of how the data in SharePoint/SQL is stored? If using InfoPath,
are you aware of how some of the format of the data is returned?
Are we familiar with applicable known bugs / patches ? A quick glance to the known bugs site for SharePoint can give some guidance
Will we be able to access ULS logs to troubleshoot on production
servers?
Will you have access to the ULS/Server logs to troubleshoot, how long are
they being kept for, are there backups created if something goes wrong,
Is existing lack of governance going to create issues?
data formats, different types of columns, data spread across different
sites/collections/web applications
Are we using InfoPath? Are using a great deal of InfoPath, is it mixed in with Content Deployment
Are we using SharePoint Designer Workflows?
Do you understand the level of complexity of the workflows going forward
and currently? Can SPD workflows support this, would VS workflows be
better?
Might we might be upgrading soon?
There are a great number of changes in SharePoint 2013 that could affect how
you do many things
26. A picture is worth a thousand words hours of work
27.
Final Thoughts…
What can assist us with
project success even more?
Letting Go: What can you control, what can you not
Do your best, keep notes from each lesson you learn for future projects
Take the time, even though it may not be enjoyable, to do more work upfront
Get commitment and sign off from others
Don’t give up! (unless you just got a way better job offer of course)
28. Feel free to connect:
@matthewjbailey1
http://www.matthewjbailey.com
http://www.linkedin.com/in/matthewjbailey1
sharepointmatthew@gmail.com
Download my slides and get started at:
http://bit.ly/195mmDP