Design for a developer tool 2. Priorities

Mar 2024

This framework is bottom-up. It's relevant when you implement product thinking in an existing SaaS. When you start from scratch, consider using something like Value Proposition Canvas. To understand why I created the framework in the first place, at Uploadcare we have more than 100 lines in our internal document, so it required sorting if we wanted a clear picture. I will use the File Uploader and Upload API as examples for simplicity.

This framework is bottom-up. It's relevant when you implement product thinking in an existing SaaS. When you start from scratch, consider using something like Value Proposition Canvas. To understand why I created the framework in the first place, at Uploadcare we have more than 100 lines in our internal document, so it required sorting if we wanted a clear picture. I will use the File Uploader and Upload API as examples for simplicity.

Features list

  1. 1 • List your features. Use your docs, pricing, and anything you find appropriate, and combine them into a single list.

  2. 2 • Pain or task. Why did you build this feature, and what problem do you want to solve? Reality check: if you can give a clear answer, the problem exists. Of course, the best answer is the one you've got during your CusDev sessions.

  3. 3 • Status quo. What users would do if your service didn’t exist? Use the name of the competitor here if it's the only realistic answer. Otherwise, it won't tell you anything about the problem.

  4. 4 • Type. It’s an adaptation of “Candies, Vitamins, Painkillers.” Choose based on your answers in the previous steps:

    • Solver — solves the problem: there is an existing process that this feature eliminates or drastically simplifies. Your most valuable features will fall into this category. Both File Uploader and Upload API are solvers.

    • Unblocker — allows developers to use your service. Integrating without unblocker would be impossible or pointless for a portion of your audience. Unblockers usually don't have their own status quo. Example: language/framework integrations.

    • Enhancer — bigger, better, faster. It’s not a novel solution; it incrementally improves existing processes. Example: accelerated uploading. Uploading becomes faster and more stable, yet there are no significant changes to the workflow.

    • Enabler — It doesn’t solve a specific problem but opens a spectrum of possibilities. It expands the number of solvable problems. Example: object recognition.

  5. 5 • Impact. How many users are affected? Scale: High, Mid, Low. Use actual data when available; otherwise, set it intuitively.

Here's how it's going to look like:

Here's how it's going to look like:

Feature

  • Pain / task

  • Status quo

  • Type

  • Impact

File Uploader

  • To build a user-friendly uploading UI, you need a lot of controls and states, and you have to handle progress, errors, and validation.

  • <input type='file'>, DIY, opensource libraries

  • Solver

  • High

Upload API

  • The backend for file uploading is a vast scope creep.

  • S3 with DIY backend

  • Solver

  • High

Priorities

  • High-impact solvers are the easiest to sell. So, when you write about any product part, the first step is to find relevant high-impact solvers and create a single message with them.

  • Next — mention all unblockers and place accents by impact.

  • The rest depends on the artifact you’re working on. You probably don’t need to mention the rest of the features if it’s a product page. However, the documentation must provide complete data.

I won't mention enablers — they are very rare and require an individual approach. Generally, priorities are:

Impact

Solver

Unblocker

Enhancer

High

1

2

5

Mid

6

3

7

Low

8

4

9

You can use this method to structure your product pages, navigation, documentation, dashboard — practically anything — with high certainty. Yet, it’s true for any such framework: don’t follow it mindlessly. When in doubt, trust common sense.

In action

Here is how I used this framework to structure the File Uploader page. I can't show you the whole table since it's Uploadcare's internal document, but I can share the shortlist:

  • High-impact solvers

    • UI

      • Auto-upload

      • Multiple files

      • Drag and drop

      • Responsiveness

      • Modal and minimal modes

    • Connected to API

      • Storage

      • CDN

  • High-impact unblockers

    • Customization

    • Major frameworks support

  • Mid- and low-impact unblockers

    • CSP compatibility

    • Camera support

    • Signed uploads

    • Large files, up to 5 TB

Product pages have the most impact on the Evaluation stage of the Developer Journey (see previous part):

Empower, show your magic and elegance. Display the primary usage scenario as simply and clearly as possible. A demo would work best.

This stage is characterized by the following questions:

  • Will it meet my needs?

  • Does it look easy to use?

  • Are there any red flags?

  • Is pricing a barrier?

Now, I'll show you how this data influenced the page's structure.

Page structure

See it live on Uploadcare website.

It's best to start with a live demo when possible. It's a lot easier to build trust with a show-don't-tell approach, and it will cover all of the UI high-impact solvers organically alongside with customization.

Tone of voice on Developer Journey Map
Tone of voice on Developer Journey Map

Next, I have “Connected to API” in my list. We need to remember why this feature is valuable when constructing a message. There are a lot of front-end components for uploading out there, but it's a huge time sink to get them to work with your storage provider and retrieve files back to your app.

Tone of voice on Developer Journey Map
Tone of voice on Developer Journey Map

Integration examples will cover the framework support and prepare the user to move to the learning stage. Code examples can also be a live demo. We used Sandpack to achieve that quickly.

Tone of voice on Developer Journey Map
Tone of voice on Developer Journey Map

Since I've described the product, I'll use the rest of the page to mention the lower impact blockers and answer the other questions of the Evaluation stage: credibility, scalability, and pricing.

Tone of voice on Developer Journey Map
Tone of voice on Developer Journey Map

Conclusion

This part is formatted like a guide, but is it worth it for you to reproduce my approach? See final thoughts in part 3.

Design for a developer tool 2. Priorities

Mar 2024

This framework is bottom-up. It's relevant when you implement product thinking in an existing SaaS. When you start from scratch, consider using something like Value Proposition Canvas. To understand why I created the framework in the first place, at Uploadcare we have more than 100 lines in our internal document, so it required sorting if we wanted a clear picture. I will use the File Uploader and Upload API as examples for simplicity.

Features list

  1. 1 • List your features. Use your docs, pricing, and anything you find appropriate, and combine them into a single list.

  2. 2 • Pain or task. Why did you build this feature, and what problem do you want to solve? Reality check: if you can give a clear answer, the problem exists. Of course, the best answer is the one you've got during your CusDev sessions.

  3. 3 • Status quo. What users would do if your service didn’t exist? Use the name of the competitor here if it's the only realistic answer. Otherwise, it won't tell you anything about the problem.

  4. 4 • Type. It’s an adaptation of “Candies, Vitamins, Painkillers.” Choose based on your answers in the previous steps:

    • Solver — solves the problem: there is an existing process that this feature eliminates or drastically simplifies. Your most valuable features will fall into this category. Both File Uploader and Upload API are solvers.

    • Unblocker — allows developers to use your service. Integrating without unblocker would be impossible or pointless for a portion of your audience. Unblockers usually don't have their own status quo. Example: language/framework integrations.

    • Enhancer — bigger, better, faster. It’s not a novel solution; it incrementally improves existing processes. Example: accelerated uploading. Uploading becomes faster and more stable, yet there are no significant changes to the workflow.

    • Enabler — It doesn’t solve a specific problem but opens a spectrum of possibilities. It expands the number of solvable problems. Example: object recognition.

  5. 5 • Impact. How many users are affected? Scale: High, Mid, Low. Use actual data when available; otherwise, set it intuitively.

Here's how it's going to look like:

Feature

  • Pain / task

  • Status quo

  • Type

  • Impact

File Uploader

  • To build a user-friendly uploading UI, you need a lot of controls and states, and you have to handle progress, errors, and validation.

  • <input type='file'>, DIY, opensource libraries

  • Solver

  • High

Upload API

  • The backend for file uploading is a vast scope creep.

  • S3 with DIY backend

  • Solver

  • High

Priorities

  • High-impact solvers are the easiest to sell. So, when you write about any product part, the first step is to find relevant high-impact solvers and create a single message with them.

  • Next — mention all unblockers and place accents by impact.

  • The rest depends on the artifact you’re working on. You probably don’t need to mention the rest of the features if it’s a product page. However, the documentation must provide complete data.

I won't mention enablers — they are very rare and require an individual approach. Generally, priorities are:

Impact

Solver

Unblocker

Enhancer

High

1

2

5

Mid

6

3

7

Low

8

4

9

You can use this method to structure your product pages, navigation, documentation, dashboard — practically anything — with high certainty. Yet, it’s true for any such framework: don’t follow it mindlessly. When in doubt, trust common sense.

In action

Here is how I used this framework to structure the File Uploader page. I can't show you the whole table since it's Uploadcare's internal document, but I can share the shortlist:

  • High-impact solvers

    • UI

      • Auto-upload

      • Multiple files

      • Drag and drop

      • Responsiveness

      • Modal and minimal modes

    • Connected to API

      • Storage

      • CDN

  • High-impact unblockers

    • Customization

    • Major frameworks support

  • Mid- and low-impact unblockers

    • CSP compatibility

    • Camera support

    • Signed uploads

    • Large files, up to 5 TB

Product pages have the most impact on the Evaluation stage of the Developer Journey (see previous part):

Empower, show your magic and elegance. Display the primary usage scenario as simply and clearly as possible. A demo would work best.

This stage is characterized by the following questions:

  • Will it meet my needs?

  • Does it look easy to use?

  • Are there any red flags?

  • Is pricing a barrier?

Now, I'll show you how this data influenced the page's structure.

Page structure

See it live on Uploadcare website.

It's best to start with a live demo when possible. It's a lot easier to build trust with a show-don't-tell approach, and it will cover all of the UI high-impact solvers organically alongside with customization.

Tone of voice on Developer Journey Map

Next, I have “Connected to API” in my list. We need to remember why this feature is valuable when constructing a message. There are a lot of front-end components for uploading out there, but it's a huge time sink to get them to work with your storage provider and retrieve files back to your app.

Tone of voice on Developer Journey Map

Integration examples will cover the framework support and prepare the user to move to the learning stage. Code examples can also be a live demo. We used Sandpack to achieve that quickly.

Tone of voice on Developer Journey Map

Since I've described the product, I'll use the rest of the page to mention the lower impact blockers and answer the other questions of the Evaluation stage: credibility, scalability, and pricing.

Tone of voice on Developer Journey Map

Conclusion

This part is formatted like a guide, but is it worth it for you to reproduce my approach? See final thoughts in part 3.