A Waterfall Analyst in an Agile World

business analystsHello fellow Salesforce Citizen Developers!

I’ve been working in some technology related function for most of my working life.  One of the key roles I have done is that of analyst.  Now analyst can mean different things to different people and even different things depending on the context of the work.  For this post think of an analyst as the person who helps the business clarify what needs to be done to meet a current business need.  In other words, analysts write requirements.

I know that some of you are cringing now with that simplistic definition but the point of this post is not to extol upon the definition of an analyst but to point out some key differences I have encountered regarding analysis work when working within a waterfall methodology and when working within an agile methodology.

Let’s first get some clarification around “waterfall methodology” and “agile methodology” in the context of this post.  In my experience what we call “waterfall” is basically defining everything waterfall-vs-agile2that the business needs or wants upfront, documenting in detail each item, developing the solution, testing the solution, deploying the solution.  You can think of a waterfall where at the top is the business saying what it needs and at the bottom splashing into the river below is the deployed solution.

As for “agile” the steps are similar but the work is done in small increments (called sprints) and pieces of the solution are delivered earlier than with waterfall methodology.  You also need, as I discovered, to unlearn some things you did in “waterfall” or the analysis work will bog down the agile process.

So what have I found that I needed to change to more effectively work within an Agile methodology?like-want-need

Create “Good Enough” Requirement Documentation

In Waterfall it is common to create a massive Business Requirements Document (BRD) that details every little thing.  You review it with your IT team and then walk away while they create a solution.

For Agile the business and tech work much more closely together so a doorstop of a document isn’t needed or, for that matter, wanted.  Instead the analyst should facilitate meetings between business and tech and talk through what needs to be solved and why.  The group then defines the requirements (stories) together at a level of detail that is good enough for everyone to be on the same page regarding the solution.

doco1Meet More, Document Less

I like to create documents.  There I said it!  I even used to be called the Doco Queen because I created some whopping huge and detailed Business Requirements Documents.  I also prefer to send all my fabulous documentation to folks to review instead of meeting. I have since learned that this is not the best way to get things done in an Agile way.

When you only have a sprint (typically 2 – 3 weeks) to get something defined, developed, tested and accepted you need everyone in the room and talking through each requirement.  Even for a team not located together, talking things through via phone, Skype, telepresence or some other mechanism, is preferable to reviewing documentation.  You need the give and take of a conversation to understand what the business needs and how you might go about building the solution.

So I have learned to document that basic requirement in the form of user stories and leave the details to the group sessions (typically called “grooming refinement sessions”).

Define What is a Successsuccess-criteria-1

To help everyone understand what “done” means regarding designing and building a solution, I have learned for each and every requirement the high importance of answering the question – “How do I know that this requirement has successfully met my business need?”

As an analyst this is an important part of the job when working with business partners.  Helping them to articulate what they would need to have/see/etc in order to consider what has been built to successfully meet their need.  This step can be hard for some folks but it is vital.

In Summary

So as a citizen developer I wear the analyst hat often and with great gusto.  I just need to remember to put on my Agile Analyst hat when I am working within an Agile world and define good enough requirements with only what’s needed documented including well defined criteria for success.

 

 

 

 

 

 

 

 

 

Blog Site Review – 89 Sites and counting!

As a citizen developer it is important to be in touch with the Salesforce community and to learn how others solve problems.  For me I have almost always been able to find the answer to my question either in the success community, developer forum or from a blog site.  In my quest for answers I have so far identified 89 Salesforce related blog sites and I find more every day.

I thought it might be helpful to you if I share what sites I have found so you too can benefit from them.  So I will begin a series of posts focusing on a different blog site.  I will provide (where I can) some basic statistics, an overview of the information found on the blog and key posts I have found helpful.

Basic Stats:

  • URL of the site
  • Primary owner of the site (person or company)
  • Date of first post
  • Total number of posts as of date of my summary
  • Post Categories/tags

I hope you will find this series helpful.  Let me know what you think.

blog5

Focus on ‘Why’ instead of ‘How’

Knowing the how is necessary.  Understanding the why is illuminating.

Knowing how to perform a task is necessary.  Understanding why the task needs to be done can help you achieve a deeper understanding of the task and the process to which it is related.why what how

Knowing how to implement a solution in Salesforce is necessary but understanding why the solution is needed is much more important and illuminating.   Many times users will ask for changes based on their perception of how to fix the problem.  These changes sometimes address the immediate need but not the underlying problem that created the issue in the first place.  By asking users why they need a specific change, the analyst can get to the heart of the problem and help find the best solution to address the underlying problem so the issue will not happen again.

According to a new study in the Journal of Consumer Research, people who become focused on how to achieve a goal may have a harder time achieving their aims than people who think abstractly about why they want to do something.

Question

Can you share an example when knowing the ‘why’ helped with finding the best solution?

 

Good, Better, Best Requirements

I have gathered and documented thousands of requirements for hundreds of applications over
the years.  Good requirements are easily understood by the IT team and are testable.

I recently found a great post by David Shaffer called “It’s the clipboard2Requirements fault! A Recipe for Requirement Clarity “.  He really provides a clear concise method for developing solid requirements.  Below are a list of questions from his article that I highly recommend any analyst consider when gathering and documenting requirements.

For each requirement you ask the following questions:

  1. Is the requirement written in S-V-O format? (Subject-Verb-Object)
  2. Is the requirement written in active voice using a strong auxiliary verb?
  3. Does the requirement focus on the business need rather than a technical solution?
  4. Is the requirement easy to understand by all audiences?
  5. Is the requirement simple, short, and unambiguous?
  6. Will an example improve the understanding of the requirement?
  7. Will a visual figure or wireframe improve the understanding of the requirement?
  8. Can the requirement be tested?
  9. Does the requirement contradict any other requirement?
  10. Does the requirement describe how it must be implemented (Ex: display in alphabetic order, ascending/descending order, required/optional field, alphanumeric, numeric, etc.)

Question

What are some questions you normally use when gathering requirements?

4 Types of Email Notifications

Emails are part of the business landscape so including them in your Salesforce applicationemail1 makes sense.  Designing the look of the email and its contents is important so that the emails provide users with the right information at the right time.

So what are some typical scenarios that result in email notifications?

  1. Acknowledgement – when a user submits a request, CASE, etc
  2. Status Update – providing user with status of request, CASE, etc
  3. Escalation – providing user with information on an escalation
  4. Information – providing user with information

Design Considerations for Salesforce Email Templates

Every email should include the following:

  • Reason person is receiving the email
  • ID / Link back to the Salesforce record which resulted in the notification (if appropriate)
  • Relevant information
  • Next Steps for person receiving the email (if any)
  • Next Steps for Company/Group (helps to set user expectations)
  • How to contact us

In the process of creating your templates consider the following:

  • Pick the appropriate email template type based on what your email recipients can handle and the level of layout control you require.
  • Maximize your subject line
    • Keep it concise but informative
    • For mobile recipients some researchers feel the first 35 characters are key
  • Use Merge Fields to personalize content
    • Be sure the merge fields you will be using have data. The merge field will not appear in the email for a record where there is no data in that field.
    • Email templates give you access only to the fields that are accessible to you via your page layout and field-level security settings.
  • Configure your email Deliverability Settings — Information about these settings can be found here.

A great place to see how to create a Salesforce Email Template is the article “How to create an email template in Salesforce” at wikihow.com.

Question

How do you use email notifications in your business?

Using Salesforce to Manage Users’ Requests – Part 2

 

In order to manage users’ requests it is important to have a defined process where all requests are handles.  The steps needed to define and implement a process are:metrics1

  • Determine the what
  • Determine and implement the how
    • Input channels for submitting a request
    • Salesforce object to use (CASE or custom)
    • Fields (existing and new)
    • Usability (Page Layout(s), Existing fields to use, etc)
    • Data Quality (validation rules)
    • Setup appropriate components within Salesforce
  • Determine communication

In Setting up a Request Management App – Part 1 we addressed the “what”. In this post we will be addressing the how at a very high level except for the setup which will be covered in Part 3.  Additional posts will provide a deeper dive into some of the areas.

Input Channels

As part of designing your request management process and application it is important to understand how you expect users to submit their requests into the system.  A user can use any or all of the following channels to make a request for information, report an issue or request an enhancement.
Input Channels

  1. Face to Face
  2. Phone
  3. Instant Message / Chat
  4. Email
  5. Webpage
  6. Salesforce

For input channels 1,2 and 3 the Salesforce Administrator will be the one creating the request in the system.  For input channels 4, 5 and 6 the user will be creating the request in the system.

Through continued training and good feedback and status information for requests you could reduce or perhaps eliminate input channels 1 – 3 so that the Salesforce Administrator is not manually creating requests.

Which Salesforce Object to use?

The design decision around what Salesforce object to use as the center component of the request management application can be affected by several things

  • what version of Salesforce your company uses
  • how deeply you are currently using CASE
  • do you have resources with the skillset to do customizations

Using CASE

The ideal design option in my opinion is to use the CASE object.  It provides inherent functionality to allow users to email or submit a request via a webpage and have a case automatically created.

Use Custom Object

If you feel that the risk of using CASE for request management is too great due to how your organization is currently using this object, consider creating a custom object instead.  With this option you will have to handle functionality related to processing emails and requests submitted via a webpage yourself.

What Fields

Regardless of which option you choose, CASE or Custom Object, you will need to design the fields to be created on the object.  In Setting up a Request Management App – Part 1 we defined a number of pieces of information that we would need to acquire at the beginning or during the request management process.

Here are some things to consider when creating fields:

  • Make the field name meaningful and concise as possible
  • Use the appropriate datatype
  • Include a description FOR EVERY FIELD!!! (See Mike Gill’s post Admin Commandment 1 for more information as to why this is important)
  • Include help text as often as possible. Make sure it is written with the user in mind.

User Experienceusability1

The area of User Experience (UX) encompasses many components and too involved to go into in this post; therefore, we will focus on just usability.

A solution to a problem can be achieved in many ways.  Some ways are efficient but are not very usable to the people who will be actually using it.  As Citizen Developers we have a great advantage on designing for usability because in many cases we will be using what we are designing!

So what to consider with regards to usability?

  • Is information grouped together and labeled in a way that will make sense to the users?
  • How many clicks does it take to do common functions or to access common information?
  • Is the help text actually helpful to the users?
  • Are the messages displayed to users (error, informational) useful and provide enough detail for users?
  • How easy is it to use the solution?
  • How quickly can users perform tasks?

Data Quality

The old adage of “Trash in is trash out” applies to data.  Bad data in from imports, data load process and other sources results in bad data out in reports or down the line to downstream processes.  So how can Salesforce Citizen Developers achieve high quality data when designing a solution?

  • Understand the data that is going to be loaded and how the data will be mapped into your solution
  • Create alerts to notify key users of any data quality issues
  • Stop bad data from being entered using validation rules and required/read only flag on page layouts as needed
  • Create and distribute reports and dashboards specifically focused on data quality

Other Design Decisions

There are so many decisions to be made when designing a request management process it can be overwhelming.  One method to make sure you hit all the important items is to walk through the process on paper or whiteboard.  “Wear” the different hats (user, citizen developer, manager, etc) to be sure all the information each needs is defined and the process (statuses) make sense.

Email Notifications

Emails are sent for a variety of reasons.  As part of the design you will need to determine when you want to send out an email, to whom will it be sent and what will it say.  Some possible scenarios are:email1

  • Acknowledge Submission
  • Status Update
  • Escalation

Support Process (Status Progression)

Where a request is within the support process is usually indicated by its status.  What statuses to use, what each means and how a request moves between them is important.

A very simple status progression is shown below.  Request comes in with status of NEW.  As it is being worked its status is IN PROGRESS.  When it is completed the status is COMPLETED.  During the process the request could be cancelled.

Simple Status Progression

Escalation Rules

For each type of tracked request we have a defined an expected completion time which feeds into our key metrics and which also has been agreed upon by the users.  Escalation rules are there to make sure every request is worked within the expected timeframe.

How will escalation process be handled within the request management system?

  • What criteria will be used to determine escalation?
  • To whom will escalation notifications be sent?
  • Will ownership of escalated requests be changed? If so, how?
  • Will requester be notified of the escalation?
  • What are the ramifications for an escalated request?

Email to CASE / Web to CASE

Input channel of email or web form requires some design work.

  • Email to Case Routing setup (priority, origin, create a task)
  • Web Form (where will this form be put?)

Questions for You

What are some design tips not covered in this post that would help Salesforce Citizen Developers create a request management application?

 

 

Using Salesforce to Manage Users’ Requests – Part 1

In order to manage users’ requests it is important to have a defined process where all requests are processed.  The steps needed to define and implement a process are:

  • Determine the what
    • type of user requests are to be handled in this processNowServing
    • key metrics will be tracked for this process
    • information for each request the user must supply
    • non-user supplied information is needed
  • Determine and implement the how
    • Input channels for submitting a request
    • Salesforce object to use (CASE or custom)
    • Fields (existing and new)
    • User Experience (Page Layout(s), Existing fields to use, etc)
    • Data Quality (validation rules)
    • Setup appropriate components within Salesforce
  • Determine communication
    • Reports and dashboards
    • Training
    • Release Communication

In part 1 of Using Salesforce to Manage Users’ Requests we will be addressing the “what”.

Type of User RequestsDM Gears1

Users may ask you for many things which can be grouped into the following general types:

  • Information: how do I do something, how does this work
  • Issue: can you fix my problem
  • Functional Need: I need system to do this

In your request management system you will need to decide if you want to handle all three types of requests through the same system.  In some organizations production problems (issues) may already be handled through a different application or process.  For this series of posts we will assume that our request management app will handle all three types.

Key Metrics

If you don’t measure your process, metrics1
you can’t manage or improve your process.

With every process and system you need to define your success criteria so you will know if what you created is meeting everyone’s needs and performing well.  You must therefore identify some key metrics upon which you will monitor and evaluate the request management process and app.  As you are considering what to measure remember that every metric should lead to a management decision.

Some suggestions are shown below.  The KPI Library is a great resource for ideas on metrics.

  • Time to Completion by request type

For each type of request define what an acceptable completion time will be and communication that to the users.

Example:  Information requests will be completed within 72 hours; Issues will be acknowledged within 1 hour and addressed within 24 hours; Functional change requests will be acknowledge within 4 hours, vetted within 3 days and completed within 2 weeks.

  • Hours to Complete by Request Type

For each type of request capture number of actual hours worked to complete it.  This information can be used in a metric called

  • Percent of requests by priority

This metric reflects the size of the potential risk of urgent changes on the quality and performance of the change management process.

User Supplied Informationclipboard2

What information should a user be required to provide when submitting a request.  The information will probably vary depending on the type of request.

For all requests I suggest gathering the following:

  • Requester’s full name and contact information (at least phone and email)
  • Type of request (Information, Production Issue, Functional Need)

Below is a suggested list of information based on request type:

  • Information
    • Question
    • Why do you need the information
  • Issue
    • Description of Issue
    • When did it occur
    • Name of application (if you are supporting several applications)
    • Attachments for screenshots
  • Functional Need
    • Name of application (if you are supporting several applications)
    • What business problem are you trying to solve?
    • Why does this problem need to be solved?
    • How many users are affected?
    • If there currently a workaround? If so, describe workaround.

Non-User Supplied Information

As requests are processed additional information is needed to support our key metrics as well as to manage the process.  This information would be supplied by someone other than the user.

Below are some suggested information:

  • When (date) was request submitted
  • What is the request’s priority
  • Who owns the request / who is working on the request
  • When (date/time) did a person start working on the request
  • When (date) did the request get completed
  • What is the status of the request
  • What was the answer (if request was Informational)
  • What was the solution (if request was production issue or functional need)
  • Who approved work on the request (If request was production issue or functional need AND your process requires approvals)

Stay tuned for the next part in this series where we will explore the “how”.

Questions for Youbusiness-man-question-mark1-300x282

Have you implemented a process to manage user requests?  If so, what types of requests do you track and what information do you capture?