{"id":5222,"date":"2022-04-04T08:50:48","date_gmt":"2022-04-04T15:50:48","guid":{"rendered":"https:\/\/coderpad.io\/?p=5222"},"modified":"2023-06-05T14:35:15","modified_gmt":"2023-06-05T21:35:15","slug":"interview-with-james-perkins-of-rollyourtweet","status":"publish","type":"post","link":"https:\/\/coderpad.io\/blog\/development\/interview-with-james-perkins-of-rollyourtweet\/","title":{"rendered":"Dev Discussions: James Perkins of RollYourTweet on How to Create a Successful SaaS"},"content":{"rendered":"\n<p>Developer advocate and software engineer James Perkins of <a href=\"https:\/\/www.rollyourtweet.com\/\" target=\"_blank\" rel=\"noopener\">RollYourTweet.com<\/a> has some sage advice for anyone looking to create the next big app:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>\u201dYour users don\u2019t care about your tech stack.\u201d<\/p><\/blockquote>\n\n\n\n<p>In a <a href=\"https:\/\/www.twitch.tv\/videos\/1425566066\" target=\"_blank\" rel=\"noopener\">recent discussion<\/a> with CoderPad\u2019s Corbin Crutchley, James talks about his experience with creating a SaaS application and the lessons he learned from creating RollYourTweet.<\/p>\n\n\n\n<p>He doesn\u2019t mince words \u2013 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\u2019re not going to be the ones <em>paying<\/em> for it. The only reason users care about the technology you use is that it improves the product and their experience.<\/p>\n\n\n\n<p>James \u2013 who regularly works with content creators as a Developer Advocate with Tina.io \u2013 added that \u201cthe content teams don\u2019t care about tech, they just care if it solves their problems.\u201d<\/p>\n\n\n<aside class=\"\n    cta-banner\n     cta-banner--bg-blue      cta-banner--has-media \"\ndata-block-name=\"cta-banner\">\n    <div class=\"inner\">\n        <div class=\"content\">\n                            <h2 class=\"headline\">Learn how to run front-end developer interviews that don&#8217;t suck<\/h2>\n            \n                            <div class=\"cta-buttons\">\n                                    <a href=\"https:\/\/coderpad.io\/blog\/interviewing\/5-tips-for-interviewing-frontend\/\" class=\"button  js-cta--read-our-guide\" data-ga-category=\"CTA\" data-ga-label=\"Learn how to run front-end developer interviews that don&#039;t suck|Read our guide\">Read our guide<\/a>\n                                <\/div>\n                    <\/div>\n                    <div class=\"media\">\n                <img loading=\"lazy\" decoding=\"async\" width=\"432\" height=\"342\" src=\"https:\/\/coderpad.io\/wp-content\/uploads\/2022\/08\/Illustration-of-man-with-beard-popping-out-of-computer-chat.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/coderpad.io\/wp-content\/uploads\/2022\/08\/Illustration-of-man-with-beard-popping-out-of-computer-chat.png 432w, https:\/\/coderpad.io\/wp-content\/uploads\/2022\/08\/Illustration-of-man-with-beard-popping-out-of-computer-chat-300x238.png 300w\" sizes=\"auto, (max-width: 432px) 100vw, 432px\" \/>\n            <\/div>\n            <\/div>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\">Feedback before optimization<\/h2>\n\n\n\n<p>The conversation then delved into the time and place for optimization \u2013 and both Corbin and James agreed there were higher priorities for getting an app off the ground than optimization.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>&#8220;Does the code work? Do we need to spend the time to optimize it now, or can it wait? It\u2019s more important to get it in front of the users for feedback.&#8221;<\/p><\/blockquote>\n\n\n\n<p>Additionally, code can be <em>too<\/em> optimized and over-engineered. Frequently this kind of code can be complex, leading to readability issues.&nbsp;<\/p>\n\n\n\n<p>This may not be an issue if you\u2019re 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 (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bus_factor\" target=\"_blank\" rel=\"noopener\">aka the bus factor<\/a>) \u2013 would your teammates be able to maintain the code without you?<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>The \u201cbus problem\u201d is also an issue in Open Source Software Security, which we explore in <a href=\"https:\/\/coderpad.io\/blog\/development\/open-source-software-dependency-security\/\">this blog post<\/a>.<\/p><\/blockquote>\n\n\n\n<p>That\u2019s why James reiterated that a successful application focuses more on rapid iterative development than optimization.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">You can\u2019t please everyone<\/h2>\n\n\n\n<p>Corbin then asked James how he deals with both growing his product and the increased criticism that comes with that growth.<\/p>\n\n\n\n<p>James&#8217;s answer? \u201cThick skin.\u201d<\/p>\n\n\n\n<p>James started his career in tech support, so he is no stranger to being yelled at by angry customers for ridiculous reasons.&nbsp;&nbsp;<\/p>\n\n\n\n<p>He mentions that there are two types of angry people who call customer support:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>The people who are upset at the moment that something isn\u2019t working. These folks usually calm down with time and reasonable effort to fix their issue.<\/li><li>People who are chronically unhappy and will never like the product.<\/li><\/ol>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SaaS success is 90% marketing and 10% code<\/h2>\n\n\n\n<p>While negative feedback can be helpful, James makes it a point to encourage his users to provide positive feedback \u2013 and he uses that process for marketing the product.<\/p>\n\n\n\n<p>He has a \u201cpublic roadmap\u201d where users can suggest improvements to the product and then see as those suggestions are implemented. Not only does it show them what\u2019s being worked on, but they also become involved in the development process, which makes them more invested in the product.<\/p>\n\n\n\n<p>James will be the first one to tell you that marketing is hard, so one of his go-to strategies is \u201cself-marketing\u201d by just publicly answering questions about the product or just discussing a challenge he had to overcome.&nbsp;<\/p>\n\n\n\n<p>For example, James recently took some feedback that he had received on Roll Your Tweet and turned it into a Twitter thread:<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"responsive-embed\"><blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">I got a lot of feedback from Roll Your Tweet, including:<br><br>\ud83d\udcdcNot enough history<br>\ud83e\udd13Creation is still Developer heavy (Must know Markdown)<br>\ud83d\udd0dNo way to search for a tweet.<br>\ud83d\udc0cSlow<br><br>So, I tackled each of these issues in the re-write, here is how!<\/p>&mdash; James Perkins (@james_r_perkins) <a href=\"https:\/\/twitter.com\/james_r_perkins\/status\/1500508834900717574?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">March 6, 2022<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<\/div><\/figure>\n\n\n\n<p><a href=\"https:\/\/twitter.com\/james_r_perkins\/status\/1500508834900717574\" target=\"_blank\" rel=\"noopener\"><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A note on analytics<\/h2>\n\n\n\n<p>Even though James doesn\u2019t 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.<\/p>\n\n\n\n<p>James recommends using a couple open-source or privacy-focused options like <a href=\"https:\/\/plausible.io\/\" target=\"_blank\" rel=\"noopener\">Plausible<\/a> and <a href=\"https:\/\/usefathom.com\/\" target=\"_blank\" rel=\"noopener\">Fathom<\/a>, but he encourages using them in a very particular way.<\/p>\n\n\n\n<p>First, be your own user tester. Run through the pages as if you were the customer you want, and watch what\u2019s happening in your analytics dashboard.<\/p>\n\n\n\n<p>Once you get that initial understanding of how the analytics work with your use case, move on to the \u201cMum test\u201d (or \u201cMom test\u201d if you\u2019re 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?<\/p>\n\n\n\n<p>Again, look at your analytics dashboard as they\u2019re 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?<\/p>\n\n\n\n<p>Answering these questions can help you figure out what to fix and where to focus your marketing efforts.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping up<\/h2>\n\n\n\n<p>SaaS creation was just one of many topics that James and Corbin discussed \u2013 other hot topics included James\u2019 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 <a href=\"https:\/\/www.twitch.tv\/videos\/1425566066\" target=\"_blank\" rel=\"noopener\">you can find it here<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>Interested in more developer stories? Check out these three from our coworkers over at CodinGame in celebration of Women\u2019s History Month:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.codingame.com\/blog\/meet-ilke-passionate-ios-woman-developer\/?utm_source=coderpad&amp;utm_medium=blog\" target=\"_blank\" rel=\"noopener\">Meet Ilke: A Tireless Problem Solver and Passionate iOS Woman Developer<\/a><\/li><li><a href=\"https:\/\/www.codingame.com\/blog\/woman-developer-interview-elena\/?utm_source=coderpad&amp;utm_medium=blog\" target=\"_blank\" rel=\"noopener\">Meet Elena: A Marketer Turned Into A Web Developer and React Expert<\/a><\/li><li><a href=\"https:\/\/www.codingame.com\/blog\/ambareen-standing-for-women-developers-rights\/?utm_source=coderpad&amp;utm_medium=blog\" target=\"_blank\" rel=\"noopener\">Meet Ambareen: Standing for Women Developers\u2019 Rights in India<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>We sit down with RollYourTweet creator James Perkins to discuss how to create a successful SaaS.<\/p>\n","protected":false},"author":12,"featured_media":5276,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[9],"tags":[],"persona":[27,29],"blog-programming-language":[],"keyword-cluster":[],"class_list":["post-5222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/5222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/comments?post=5222"}],"version-history":[{"count":25,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/5222\/revisions"}],"predecessor-version":[{"id":7850,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/5222\/revisions\/7850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media\/5276"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=5222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/categories?post=5222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/tags?post=5222"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/persona?post=5222"},{"taxonomy":"blog-programming-language","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/blog-programming-language?post=5222"},{"taxonomy":"keyword-cluster","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/keyword-cluster?post=5222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}