Increasing the adoption and popularity of software tools

Personal experiences with a product's mini-ecosystem

Monday, 5 September 2022

I’ve been reflecting on my learning tech over the past five years. Like most developers, that’s included a vast array of tools and tech. Most of the following observations result from my interactions with Gatsby, Strapi, GraphQL, and tangential tech. I’ve also used tools that remained… Low-key.

Bear in mind this is more of a dive into the things I most appreciated and my decision-making process rather than a comprehensive analysis:

Common use-cases

The first thing users want to know is whether their key problems will be solved or not. Products communicating that were clear about it on their landing pages and:

  • Included blog posts covering common use cases for building blogs with similar functionality.
  • Provided shortcuts to common configurations of a final product. Skeletons, starters, and so on.
  • Provided plugins for integrating other libraries and tools into the software.
  • Provided well-designed and aesthetically-pleasing versions of various implementations of a product.

The sheer number of Gatsby plugins covering my needed functionality helped my confidence; funnily enough, this reminds me of why I used to pick WordPress for launching projects. Back in 2018 I was less familiar with React; as a result, I found inspecting Gatsby Starters immensely helpful. It seemed aesthetically pleasing UIs were downloaded more - likely particularly appreciated by people who haven’t honed visual design skills.

New users can find their way around

New users in this context include experienced and inexperienced users; as long as they’re new to the product. Content posted included:

  • This should be obvious: robust and well-written documentation (concise) is a requirement for anyone navigating their way around software tools.
  • Tutorials covering integrating the product with other technologies - especially the more popular ones.
  • Updated tutorials, which were even better to find.
  • Tutorials written in such a way that makes it easy to get started but still offers specifics to delve into at a later date.
  • Incredible documentation genuinely made for an enjoyable experience.
  • GitHub issues; resolutions with explanations were fantastic.
  • Code written in a core language so it’s easy to decipher and implement; the code becomes easier to troubleshoot when something doesn’t match up.

Tutorials accounting for 80% of what I needed to implement functionally for a project was the tipping point for my decision to run with GatsbyJS + Strapi as technologies new to me, as opposed to something like WordPress I could already use. The remaining 20% was mostly due to available documentation and assistance. I never thought I’d find a version migration enjoyable, but here we are. 💀

It was challenging to follow TypeScript examples when learning something new; the syntax was confusing when I wasn’t all that familiar with it and didn’t have a developed mental model. Plain JavaScript better supported the learning process. Similarly, minimal implementations should be just that; even Tailwind can make things difficult to read for people who aren’t used to it.

I found this particularly unhelpful: providing a bunch of files to copy and paste without explaining much. One may as well link the repo with a script at that point.

Direct help

I usually try to get by with as little direct help as possible. It’ll be necessary at different levels though - from people interested in a product to current users with advanced problems. Product teams ensured they:

  • Built a helpful community across various platforms. Being able to ask for help in both forum form and chat is beneficial, even if this process requires streamlining later.
  • Enabled and elevated active members to assist others with the product.

In order to arrive at a solution, I’d consult resources in the following order:

  1. Documentation
  2. GitHub issues
  3. Google for tutorials
  4. Chat app/forum (whichever was more populated)
  5. Ask for help in chat

Strapi’s community made a significant effort to help people (shoutout to Derrick Mehaffy, thank yoooou), and that made it so much easier for me to overcome some of my roadblocks. Another tool had a Discord server that wasn’t particularly helpful, so I began avoiding it for the most part. The result was no chance of me participating in their wider community. Slack was horrible sometimes; I’d go looking for issues but the free tier prohibits searching beyond 10k messages.

Other

A few other points of impact:

  • The tools that grew were updated regularly, communicated updates frequently, and offered well-maintained newsletters and updates in chat channels.
  • Presentation of a product matters to some degree. A well-designed user interface affects the perceived user experience and professionalism of a product.
  • Product teams conducted user research interviews. Having participated in one, you can tell how seriously they take addressing user needs. Side note: I was impressed and appreciative to see developers conducting these in addition to designers.

There’s something to be said for building tools that ‘fit into the mainstream’. Tools that slot into the React ecosystem, for example, and suit the needs of many people have a much higher likelihood of increased adoption due to the sheer volume of users. I mention this because it should be taken into consideration for comparisons.

We build for people

Strapi has raised USD 45 million in funding to date, and Gatsby USD 46.8 million, both in Series B funding rounds. While solving core needs is at the crux of it all, it’s clear the people at the helm clearly understand that their products exist in the context of a wider community and that decisions are made accordingly. These products have evolving business models; they’re not just tools in a vacuum. That’s something anyone building a product to serve others would do well to remember.