---
title: "Dev Discussions: James Perkins of RollYourTweet on How to Create a Successful SaaS | CoderPad"
description: "We sit down with RollYourTweet creator James Perkins to discuss how to create a successful SaaS."
canonical: "https://coderpad.io/blog/development/interview-with-james-perkins-of-rollyourtweet/"
last_modified: "2023-06-05 14:35:15"
---
[Back to blog](https://coderpad.io/blog/)

# Dev Discussions: James Perkins of RollYourTweet on How to Create a Successful SaaS

April 4, 2022 5 Minute Read

By Ken Swearengen

[Development](https://coderpad.io/blog/development/)![Header image of a computer in the cloud](https://coderpad.io/wp-content/uploads/2022/03/James-Perkins-SaaS-creation-blog-header.png)

Developer advocate and software engineer James Perkins of [RollYourTweet.com](https://www.rollyourtweet.com/) has some sage advice for anyone looking to create the next big app:

>

”Your users don’t care about your tech stack.”

In a [recent discussion](https://www.twitch.tv/videos/1425566066) with CoderPad’s Corbin Crutchley, James talks about his experience with creating a SaaS application and the lessons he learned from creating RollYourTweet.

He doesn’t mince words – the people who think your tech stack is cool probably are not going to be the people who are going to use it. More importantly, they’re not going to be the ones paying for it. The only reason users care about the technology you use is that it improves the product and their experience.

James – who regularly works with content creators as a Developer Advocate with Tina.io – added that “the content teams don’t care about tech, they just care if it solves their problems.”

## Learn how to run front-end developer interviews that don’t suck

[Read our guide](https://coderpad.io/blog/interviewing/5-tips-for-interviewing-frontend/)

## Feedback before optimization

The conversation then delved into the time and place for optimization – and both Corbin and James agreed there were higher priorities for getting an app off the ground than optimization.

>

“Does the code work? Do we need to spend the time to optimize it now, or can it wait? It’s more important to get it in front of the users for feedback.”

Additionally, code can be too optimized and over-engineered. Frequently this kind of code can be complex, leading to readability issues.

This may not be an issue if you’re the only one working on the application. Still, if you ever plan to scale your application and bring in more developers to your team, it can quickly become a maintenance issue nightmare. Consider what would happen if you were hit by a bus ([aka the bus factor](https://en.wikipedia.org/wiki/Bus_factor)) – would your teammates be able to maintain the code without you?

>

The “bus problem” is also an issue in Open Source Software Security, which we explore in [this blog post](https://coderpad.io/blog/development/open-source-software-dependency-security/).

That’s why James reiterated that a successful application focuses more on rapid iterative development than optimization.

## You can’t please everyone

Corbin then asked James how he deals with both growing his product and the increased criticism that comes with that growth.

James’s answer? “Thick skin.”

James started his career in tech support, so he is no stranger to being yelled at by angry customers for ridiculous reasons.

He mentions that there are two types of angry people who call customer support:

1. The people who are upset at the moment that something isn’t working. These folks usually calm down with time and reasonable effort to fix their issue.
2. People who are chronically unhappy and will never like the product.

The former may be able to give you valuable feedback on the product (once they calm down). The latter are probably not worth your time.

## SaaS success is 90% marketing and 10% code

While negative feedback can be helpful, James makes it a point to encourage his users to provide positive feedback – and he uses that process for marketing the product.

He has a “public roadmap” where users can suggest improvements to the product and then see as those suggestions are implemented. Not only does it show them what’s being worked on, but they also become involved in the development process, which makes them more invested in the product.

James will be the first one to tell you that marketing is hard, so one of his go-to strategies is “self-marketing” by just publicly answering questions about the product or just discussing a challenge he had to overcome.

For example, James recently took some feedback that he had received on Roll Your Tweet and turned it into a Twitter thread:

>

I got a lot of feedback from Roll Your Tweet, including:
📜Not enough history
🤓Creation is still Developer heavy (Must know Markdown)
🔍No way to search for a tweet.
🐌Slow
So, I tackled each of these issues in the re-write, here is how!

— James Perkins (@james_r_perkins) [March 6, 2022](https://twitter.com/james_r_perkins/status/1500508834900717574?ref_src=twsrc%5Etfw)

[](https://twitter.com/james_r_perkins/status/1500508834900717574)

## A note on analytics

Even though James doesn’t put a ton on emphasis on your tech stack, he still recommends using an analytics tool to inform your marketing efforts. Analytics will help understand how your users are using your website or application, and those insights should help you figure out how to convert people to take the action you want them to take.

James recommends using a couple open-source or privacy-focused options like [Plausible](https://plausible.io/) and [Fathom](https://usefathom.com/), but he encourages using them in a very particular way.

First, be your own user tester. Run through the pages as if you were the customer you want, and watch what’s happening in your analytics dashboard.

Once you get that initial understanding of how the analytics work with your use case, move on to the “Mum test” (or “Mom test” if you’re from the west side of the Atlantic Ocean): Show your mom or any other friend or family member your website or application. Would they know what to do with it?

Again, look at your analytics dashboard as they’re going through your service. Where are they pausing? Where are they clicking? Are they using the back button a lot? Are they drawn to a particular feature?

Answering these questions can help you figure out what to fix and where to focus your marketing efforts.

## Wrapping up

SaaS creation was just one of many topics that James and Corbin discussed – other hot topics included James’ work with content management systems (CMS), including his time at Tina.io, and a brief discussion on JAMStack and the JSX/Markdown hybrid known as MDX. The entire Twitch stream is worth watching, and [you can find it here](https://www.twitch.tv/videos/1425566066).

Interested in more developer stories? Check out these three from our coworkers over at CodinGame in celebration of Women’s History Month:

- [Meet Ilke: A Tireless Problem Solver and Passionate iOS Woman Developer](https://www.codingame.com/blog/meet-ilke-passionate-ios-woman-developer/?utm_source=coderpad&utm_medium=blog)
- [Meet Elena: A Marketer Turned Into A Web Developer and React Expert](https://www.codingame.com/blog/woman-developer-interview-elena/?utm_source=coderpad&utm_medium=blog)
- [Meet Ambareen: Standing for Women Developers’ Rights in India](https://www.codingame.com/blog/ambareen-standing-for-women-developers-rights/?utm_source=coderpad&utm_medium=blog)

## Subscribe for more CoderPad insights

## Trending Articles

Previous slide Next slide [Development

## What is Prompt Engineering?

Introducing AI tools such as ChatGPT and Bard helps increase the efficiency of tasks such as data generation, code generation and completion, text summarization, etc. How were these AI tools trained to answer almost every question you ask them? The answer, prompt engineering, is discussed in this blog post.

Read the post](https://coderpad.io/blog/development/what-is-prompt-engineering/) [Development

## A Guide To Using React’s useCallback() Hook

Are you looking to optimize your React applications? Have you heard of the useCallback hook? useCallback is a powerful React hook that helps you optimize your application by preventing unnecessary re-renders. In this post, we'll dive into React's useCallback() hook, define referential equality and callback functions and how to tie it all together.

Read the post](https://coderpad.io/blog/development/a-guide-to-using-reacts-usecallback-hook/) [Development

## MySQL vs. PostgreSQL: How Do They Compare?

A database is a convenient tool that allows users to access information, maintain records, and apply commonly used operations, such as insertion, modification, deletion, and data organization. Learn about MySQL vs PostgreSQL, their features, advantages, and disadvantages. Finally, check out which one is the best choice for you.

Read the post](https://coderpad.io/blog/development/mysql-vs-postgresql-how-do-they-compare/) [Development

## PostgreSQL LIKE Operator: A Detailed Guide

When using databases, searching for values that match a given pattern is a familiar necessity. Learn how you can retrieve entries with queries including a particular string using Postgres LIKE operator.

Read the post](https://coderpad.io/blog/development/postgresql-like-operator-a-detailed-guide/) [Development

## How To Use DataProvider In TestNG With Examples

When it comes to testing there are many tools and techniques available. In this post, we'll discuss how to use DataProvider with TestNG.

Read the post](https://coderpad.io/blog/development/how-to-use-dataprovider-in-testng-with-examples/) [Development

## How To Get Up And Running With Django Migrations: A Guide

Django migrations are a way of handling the application of changes to a database schema. By following the steps outlined in this guide, you can easily set up and use migrations in your Django projects.

Read the post](https://coderpad.io/blog/development/how-to-get-up-and-running-with-django-migrations-a-guide/) [Development

## Writing A Parameterized Test In JUnit With Examples

A JUnit parameterized test allows you to decouple data from structure, generating cleaner and more reliable tests. Learn more in this guide.

Read the post](https://coderpad.io/blog/development/writing-a-parameterized-test-in-junit-with-examples/) [Development

## How To Use Assert In JUnit With Examples

The JUnit Assert class is what you use to write unit testing assertions in JUnit. Learn more about it in this guide, full of examples.

Read the post](https://coderpad.io/blog/development/how-to-use-assert-in-junit-with-examples/) [Development

## A Simple Guide To TypeORM: What It Is And How To Use It

Considering current languages have object-oriented programming features, most database management systems are based on the relational model, with tables instead of objects. For these reasons, mapping relational objects is very important in development. In this article, you will learn what TypeORM, one of the main tools used today, is.

Read the post](https://coderpad.io/blog/development/a-simple-guide-to-typeorm-what-it-is-and-how-to-use-it/) [Development

## Using PreparedStatement in JDBC With Examples

In this post, we'll see why and how to work with JDBC and PreparedStatement. We will also learn along with examples using code.

Read the post](https://coderpad.io/blog/development/using-preparedstatement-in-jdbc-with-examples/) [Development

## React vs React Native: The Differences Explained

React and React Native are similar in that they both allow web developers to build applications based on the unique concept of components. But the two frameworks do this in radically different ways. In this post, we cover the key differences between react and react native frameworks, implementation, and which is an appropriate choice.

Read the post](https://coderpad.io/blog/development/react-vs-react-native-the-differences-explained/) [Development

## Logging in Django

The most challenging part of fixing a problem is identifying it. Unfortunately, this statement is exceptionally true when it comes to debugging. Learn how to use the power of logging into your Django applications to improve your debug process in this article.

Read the post](https://coderpad.io/blog/development/logging-in-django/)

## Hire with confidence.

See why engineering teams trust CoderPad to evaluate developers with realistic, AI-ready hiring workflows.

[Request a demo](https://coderpad.io/sales/)
