Surveyor is a small tool that helps teams looking to implement Outcome-based product management and classify and categorize features based on systematic user feedback. For this purpose, Surveyor will review your roadmap, extract features and their outcomes and create a structured survey with following elements:
- measurement of customer satisfaction using Net Promoter Score (NPS)
- measurement of feature opportunity using the Ulwick Opportunity Algorithm
- classifcation of features as must-be, one-dimensional, and attractive using the Kano model
The created survey can then be distributed among users to gather feedback. Once a sufficient amount of responses have been collected, surveyor will retrieve the results of the survey, collect and aggregate them and store them within the roadmap, so that they are available for the entire product team.
Using surveyor relies on four tools:
- aha.io – is the roadmapping tool that surveyor retrieves features and releases from (at least a Premium account is required to use Aha)
- FluidSurveys – is the survey tool that will be used to create surveys and collect responses (at least the Ultra account is required, the free usage tier does not include access to the API)
- Leningen – running Surveyor requires building it from source code, and this process is using Leiningen as the build tool (Leinigen is free software)
- (optional) Heroku – Surveyor has been developed to be deployed on Heroku, but can also be run on other PaaS platforms, or run on a self-hosted server (the free usage tier is just fine)
- (optional) Foreman – to simulate a local Heroku environment
Check out source code using Git from https://github.com/trieloff/suveyor.
Build a standalone version using:
$ lein uberjar
For local development, run
$ lein ring server
Make sure you have a local reverse proxy set up that handles SSL for you. Surveyor only runs on HTTPS, as some of the APIs that Surveyor is using are enforcing HTTPS.
Surveyor is using two custom fields to track status and metadata of a feature: outcome and survey. You need to add these in your aha.io product settings.
- Log in to aha.io
- Click Settings
- Select your Product or Product Line that you want to use with Surveyor
- Click Custom Fields
- Click + next to the section labeled Features
- Enter name: Outcome
- Enter description: Specify what the outcome of the availability of the feature will be. Good outcomes describe how a measurable KPI is changing
- Enter key: outcome
- Select placement: with attributes
- Click Save
- Click + next to the section labeled Features
- Enter name: Survey
- Enter description: URL of the survey used for tracking feature status
- Enter key: survey
- Select placement: below record
- Click Save
Surveyor uses Aha's score system to track Importance, Satisfaction and Opportunity. Following steps are required once to set up the scoring system:
- Log in to aha.io
- Click Settings
- Click Configure Scorecards
- Click + next to the label Configure Scorecards
- Enter Ulwick Opportunity Score as the name
- Click Add Metric
- Enter
Opportunity
as metric name – minimum 0, maxium 20 - Click Add Metric
- Enter
Importance
as metric name – minimum 0, maxium 10 - Click Add Metric
- Enter
Satisfaction
as metric name – minimum 0, maxium 10 - Select equation type advanced equation
- Type following equation:
Opportunity
– the other two metrics are only informational, Surveor will handle the calculation.
The new scorecard needs to be applied to all products that Surveyor should manage. Stay in aha.io and follow these steps for each product or product line:
- Click Product or Product Line in the left sidebar
- Select Configure
- For option scorecard for features select Ulwick Opportunity Score
- Click Update
Repeat this for all products.
In order to use Aha's API, you need to register an application with Aha.
- Log in to aha.io
- Open the Aha Developer Console
- Click register new application
- Enter a name
- Enter the Redirect URL. In development mode, the URL is generally
https://localhost/aha.callback
, for production use replace localhost with your hostname - Click save
- Note Client ID/Application ID and Client Secret – these are needed for later steps
In order to use FluidSurveys' API, you need to register an application with FluidSurveys.
- Log in to FluidSurveys
- Open the FluidSurveys Developer Console – you can also browse there from the username dropdown, by selecting Developer
- Click create new application
- Enter a name
- Enter the redirect_url. In development mode, the URL is generally
https://localhost:443/fluidsurveys.callback
, for production use replace localhost with your hostname. Do not omit the port, otherwise the integration will break - Click Create
- Locate your application in the list and click Manage
- Note your client_id and client_secret – these are needed for later steps
Copy the file surveyor-default.properties into surveyor.properties and edit the settings. Each
setting can also be overridden through an environment variable, so that aha.host
becomes $AHA_HOST
. This is useful for a
deployment on Heroku, where you don't want to store security credentials in plain text.
Configuration Parameter | Environment Variable | Description |
---|---|---|
aha.clientid |
$AHA_CLIENTID |
The Client ID/Application ID provided by Aha.io |
aha.clientsecret |
$AHA_CLIENTSECRET |
The Client Secret provided by Aha.io |
aha.clientdomain |
$AHA_CLIENTDOMAIN |
The hostname where your instance of Surveyor is running. In development you can keep localhost , for production replace it with the correct hostname. This should be the same hostname you have been specifying as part of the Redirect URL for Aha and redirect_url for FluidSurveys. |
aha.host |
$AHA_HOST |
The tenant name for the your Aha account. When you are logged in to Aha.io, if the looks like https://mycompany.aha.io , you should use mycompany as value for this parameter. |
fluidsurveys.clientid |
$FLUIDSURVEYS_CLIENTID |
The client_id as provided by FluidSurveys |
fluidsurveys.clientsecret |
FLUIDSURVEYS_CLIENTSECRET |
The client_secret as provided by FluidSurveys |
All of these settings are mandatory and required to make Surveyor work.
There are multiple ways of running Surveyor
$ java -cp target/uberjar/surveyor-standalone.jar clojure.main -m surveyor.repl 3000
$ lein ring server
$ foreman start
Follow the Heroku Clojure Guide to install Surveyor on Heroku. Do not forget to set the configuration options as environment variables.
Use Aha.io to create features and group them into releases. For each feature that should be considered for the survey, define the Outcome in the feature metadata.
- Open Surveyor
- Click Log in with FluidSurveys and Aha.io
- Surveyor will redirect you to a FluidSurveys authentiaction screen. Accept the request
- Surveyor will then redirect you to an equivalent Aha.io authentiaction screen. Accept this request as well
- Select the product you want to generate a survey for. All products will show up, but only products with the appropriate settings (custom fields and scores) will work with Surveyor
- Select the releases you want to include in your survey. You can either check the checkbox for multiple releases or click on a specific release
- (Optional) Select the additional options, if needed
- Click create release survey or create multi-release survey
- Copy the Survey URL
Distribute the survey among your users. You can use in-application messaging or e-mail for this.
Patiently
- Open Surveyor
- Click Log in with FluidSurveys and Aha.io
- Authenticate, if needed
- Select the product you want to gather feedback for
- Select the release you want to gather feedback for
- Click retrieve results
Your survey results will now be merged back into Aha.io
In your roadmap, you will now see following things:
- Some features have the tag must-be
- Some features have the tag one-dimensional
- Some features have the tag attractive
- All features have a new Aha Score
- Clicking on the Aha score, will show scores for Opportunity, Importance, and Satisfaction
Use this information to re-plan your roadmap.
- Override scores – by default, Surveyor will not include features in the survey that already have a score. Check this option to include features that have (manually set) scores
- Override survey links – by default, Surveyor will not include features in the survey that have been covered in other surveys before. Check this option to include all features. Warning this will break the link to the older survey, so that updates to the older survey's results will not be reflected on the affected features.
- Inlcude deleted features – by default, Surveyor will not include features that are in the will not implement state. Check this option to override the behavior.
plenty.
Copyright © 2014 Lars Trieloff
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.