Sample Customer Interview
Sample Customer Interview
You can listen to and download an MP3 of the sample customer interview from Deploy Empathy here.
An annotated transcript is available in Deploy Empathy in Chapter 50 (page 231).
Transcript
Michele: Hi, Is this Drew?
Drew: Yep, this is Drew.
Michele: Hi, Drew. Thank you so much for taking the time to talk to me today. I really appreciate it.
Drew: Not a problem. Thank you for having me.
Michele: So before we get started, I just want to ask if you had any questions for me?
Drew: Not off the top of my head. I’m sure I’ll find some along the way.
Michele: Okay, feel free to ask any questions that might come up.
Drew: Okay.
Michele: And just before we get started, I just want to make sure that it’s okay if we record this interview.
Drew: Yeah, absolutely.
Michele: Okay, so just to get started, could you just tell me a little bit about how you came to even needing something like Simple File Upload in the first place?
Drew: I’m building a product that is a job listing platform. We wanted companies to be able to upload their logo to sit next to their listing. But for our stage two of that, we’re actually adding in some more verbose user accounts, where users will have avatars. They’ll be able to upload resumes and stuff like that. So we just really saw that we were gonna need something that would allow us to upload all the files and handle them easily.
Michele: Yeah, that makes sense. I’m curious, have you tried anything else to do this?
Drew: Yeah, we were using Firebase Storage, because we were using Firestore as our database. So we started using Firebase Storage just because, you know, they were right next to each other [and it] seemed like an easy enough fit. And it was working at first.
Drew: But we recently started going through a big migration to Next.js, [where] some things are just handled a little differently from a code perspective. And Firebase Storage just did not work as easily as it was supposed to. We found ourselves running into a lot of walls, jumping through a lot of hoops just to make the simplest things work.
Michele: Can you tell me a little bit more about those hoops and walls that you ran into?
Drew: I’m trying to think of a specific case.
So we’re really just trying to load the image before the component was loaded so it would be there when the page did load.
But because of how they give you access to it, with promises, and all of that fun stuff, I don’t know if it’s because we were implementing it wrong, or maybe they just weren’t ever really meant to work hand in hand, but we were getting errors that it couldn’t do what we were asking because the data it needed wasn’t there yet when it was asking for it. And we really started to feel like we were just putting Band-Aids on things to make something work, and this was really kind of our big push to make the platform more stable, not less. That was probably the biggest one.
Michele: Sounds like that was frustrating. A lot of fits and starts for you guys.
Drew: Yeah, it really was because we had it working, and it took a little bit of work to get it working that first time. And most every other piece of the code kind of just transferred one-to-one for the most part, and this part just did not. And we already had a decent amount of files in the storage that we wanted to get to, but for whatever reason, be it user error or storage error, it just wasn’t happening.
Michele: Yeah, do you remember how long it was from the time when you decided to start using Firebase Storage? And then until you decided it wasn’t going to work? How long was that?
Drew: Oh, we started using it around a year ago, and it was working fine. We started working on this big rebuild about maybe a month and a half ago, and that was probably when we started realizing that it wasn’t gonna work. And I think I spent probably three days trying to wrestle it before I just relented.
Michele: Oh, man. So it took six weeks of trying to get it to work, and then you intensely worked on it for three days, and then it still wouldn’t work.
Drew: Well, the six weeks wasn’t fully working on trying to get it to work. Six weeks was getting all the components moved over, and all that other stuff set up for the new environment. But you are correct, it was three intense days of trying to make it work.
Michele: Man, that must have been super frustrating.
Drew: It was, and I was at my wits’ end.
Michele: So when did you start thinking that maybe [you could] use something else?
Drew: Almost immediately, I wanted to use something else, but I didn’t know what else would be out there at the pricing model that they provide. But I guess, free always comes with caveats, and I found those caveats early on.
Michele: Oh, so Firebase Storage was free if you were using Firestore.
Drew: Yeah, they have this whole platform set up where it’s free up until X amount of requests, but that number is really high. So it’s really enticing when you just want to get something up and moving. We just kept hitting brick walls with the storage.
Michele: Yeah, it sounds like it. So, you had three days of intensely trying to work on this. You wanted to use something else, but you didn’t know what other options there were. Did you start researching other options? Can you walk me through that a little bit?
Drew: I didn’t really research too many options, just because the product we’re building is not generating any revenue, and it’s kind of a “side project last, first status.” So I wasn’t really seriously considering anything that had a paywall on it because I wasn’t sure that it would ever pay itself back off. I knew there were other options out there that would either require moving our storage and our database altogether, which didn’t really seem appealing, or having two different services, one to manage each, but then the storage still being just as complicated, only somewhere else.
Michele: It sounds like you had a lot of things you were trying to weigh back and forth about whether you should sort of try to plunge forward with this thing that was already being very frustrating, and then all of the negative effects of switching and all the complications that would introduce.
Drew: Yeah, I really didn’t want to spend a whole lot of time investing or building up a new infrastructure for a new product to handle this one thing. I think the most frustrating part was that it worked and now it doesn’t.
Michele: Yeah, that’s such a letdown.
So, I just want to ask about something you said. You said you didn’t want to consider anything with a paywall, and when you say paywall, do you mean something that has a free tier and then it goes to pay as you go? Or something that you have to pay for upfront? I’m just wondering if you can say what you meant by that.
Drew: The other options that I knew were out there usually had [an] upfront paywall that—well, I guess not upfront paywall, it was kind of a pay-as-you-go, depending on what you use. And I didn’t know what those numbers would equate to. So where we were in the project, I didn’t want to invest too much mental overhead into trying to figure that out.
I really wanted to stay focused on just building the thing.
Michele: That makes sense. Yeah. So it sounds like the pricing models, based on what you were doing, it was unclear what you would have to pay for those if you had to pay for them.
Drew: Yeah, exactly.
Michele: And you just wanted to get this thing that you thought was gonna be easy out the door, and the thought of doing all those calculations was not really where your head was at.
Drew: Yeah.
Michele: Yeah, that makes sense. So let’s jump to Simple File Upload. Can you just let me know how you heard about it?
Drew: I heard about it through two different ways. I heard about it in a virtual coffee community I’m in. And then I also heard about it through the Twitterverse.
Michele: And so can you tell me when you first heard about it? Was this around the same time that you were trying to wrangle this whole Firebase thing? Or was it after? Or was it before?
Drew: It was a little bit before. So I think I first heard about it when we were at the very beginning of the big framework migration. So it was kind of at the beginning of that when I heard about it, but at that point in time, our current solution worked. So I wasn’t really, at that point, I wasn’t really looking for anything else.
Michele: That makes sense. And then you had those sort of three days of struggle, and then it occurred to you at some point that you could maybe use Simple File Upload for that. Does that sound right?
Drew: Oh, no, it never occurred to me. I was gonna continue banging my head on the keyboard. But a friend in the virtual coffee community said, “Hey, why don’t you just try this thing?” Because I’d already heard about it in the virtual coffee [community] and had already heard about it on Twitter. And at that point, I was so white knuckling to holding on to our current solution that the thought hadn’t even registered. Yeah, so someone else recommended it. And as soon as they said it, I was like, this is it. I hope this works.
Michele: It sounds like you put so much work into trying to make the other thing work that you were like, really wanted that to work. You didn’t want to have to walk away from all of that frustration that you went through.
Drew: Yeah, I did. I was being very stubborn.
Michele: That makes sense. I mean, it sounds like you poured a lot of effort into it. But then, so this friend that you heard about Simple File Upload from, had they used it themselves?
Drew: I’m not sure if they use it themselves. I know he and Colleen [Schnettler, the founder of Simple File Upload] both work with Ruby.28 So maybe he was more familiar with it because they had chatted about it from that perspective.
Michele: You said you had heard about it through these groups you’re in. Did you look for any other places for information about it before you decided to use it?
Drew: I looked at the website and kind of skimmed the documentation and somehow came across a CodePen or some type of little code snippet that let me kind of test drive it. And based on that, I was like, if it’s really this easy, then I don’t see why I wouldn’t use it.
Michele: So before you started using it, was there anything you were sort of [unsure about]? It sounds like you were unsure if it was actually as good as it seemed? Is there anything else that you were unsure about? Or you weren’t able to figure out before you used it?
Drew: I don’t want to say [I was] unsure of how the Amazon S3 buckets and stuff worked. I knew that’s what it connected to and that’s how it worked. But I’ve heard a bunch of people get frustrated about how complicated that would be. I guess I was curious as to whether or not it actually made it that simple.
Michele: It sounds like you were almost doubtful whether it could be that easy.
Drew: Yeah, it seems like from what I’ve heard about S3 buckets, that that’s such a big problem that it wouldn’t necessarily be an easy thing to wrangle into a simple solution.
Michele: So have you gotten the chance to use it yet?
Drew: Oh, yeah.
Michele: Okay, so how did it go?
Drew: I think I had it working in five minutes.
Michele: And how did that make you feel?
Drew: Oh, man, I was elated. If I didn’t live in South Georgia, I would have shouted it from the mountaintops.
Michele: I think you still could.
Drew: Yeah, absolutely.
Michele: Wow. And so you were able to sort of drop it in where you previously were using the Firebase Storage?
Drew: Yep, I don’t even really think there was much configuration needed. So I’m specifically using the React component version of it. So I just kind of got my account set up, dropped in the React component, and there, it really just worked.
Michele: And so it sounds like it’s really working for you. And you had looked into some other things. And I’m curious, for the site you’re working on, are you working on that with other people?
Drew: Yeah, so there’s a team of five of us. But we call it a “side project first priority, last thing” that we’re working on. So there’s five of us that work on it, but one of us may be full tilt for two weeks straight, and then you won’t hear from us for a month or two.
Michele: Gotcha. So when you were sort of in that period of knowing that what you were doing wasn’t going to work, even though that was sort of hard to admit to yourself, understandably, and then deciding to switch to Simple File Upload, was there anyone else you talked to about that decision within the team, or the company?
Drew: I mentioned it. I mentioned it to everyone. I guess it was never really put to the table for a vote. But I was just kind of like, “Hey, we keep running into problems with this current thing. I’m going to give this a try and see what happens.” And I think everyone on the team had already heard about Simple File Upload because they’re in the same virtual coffee community. So I want to say it was a unanimous yes.
Michele: And was there anyone outside of the team who needed to weigh in on that, or anything like that?
Drew: Not really. Right now, it’s a small project, small team.
Michele: Gotcha. So you’ve gotten to implement it. And so you have it working on the site now with the logos?
Drew: Yep. It’s working. It’s up and working. And it’s beautiful.
Michele: Yeah. So do you think you’re going to use it for the applicant photos as well?
Drew: I believe so. Yeah. We have it working in this instance. Or we have it working in the way we need it now, so I can only see it making the other places we need file upload better.
Michele: Cool. Well, thank you so much for taking the time to talk to me. I’ve learned so much from you. Is there anything else you think I should know?
Drew: I guess now that we’ve been talking about it, I do have a question — and this would probably end up being a feature request more than anything. But are there plans in the future to, from the Simple File Upload dashboard, to be able to section off different stuff? You know, maybe this is type A files vs type B? Or is that already there and I haven’t seen it?
Michele: So I can’t speak to that, because I don’t work on it myself, but could you walk me through how that would fit into your process, or how that would help you?
Drew: Sure. We’re going to be rolling out some user accounts. There’s gonna be two different types of accounts, and so one of the account types is going to have avatars and PDFs. It may or may not even be necessary, because at the end, all we just need is the URL anyways. But if for whatever reason we do need to go to the dashboard to see those files, it would be nice if they could be sectioned off. You know, “These are our user accounts. These are our company accounts.”
Michele: Oh, got it. So the first one are the users, like people uploading resumes, is that right? And then the second one is the companies and then all the images associated with the companies.
Drew: Yeah.
Michele: Which will be the logos.
Drew: Yeah. And that may not even be necessary, because we’re really just taking the URL and piping it in somewhere.
Michele: Yeah. Could you just tell me a situation where you would need to [do that]? Distinguishing between those files, what would that help you do? What’s a situation where that would be helpful?
Drew: I can’t think of one off the top of my head. But when we first started working towards getting user accounts in place, that was actually a question one of my team members brought up was, when we send this to Simple File Upload, do we have to specify that it goes to this file or this file, or is it all the same place? And it’s kind of, “Oh, that’s a good question.”
Michele: And did that person want them to be differentiated?
Drew: I don’t think they necessarily wanted them to be differentiated, as much as they were just making sure that they weren’t doing it the wrong way by not specifying somewhere.
Michele: Gotcha. Gotcha. They wanted to make sure they were using the tool right?
Drew: Yeah.
Michele: Yeah. Yeah, that makes sense. You had mentioned with Firebase that you guys were kind of unsure whether it was user error, versus the limitations of the tool. And so it kind of makes sense that you would have questions about using it right.
Drew: Yeah, because we’re mostly junior developers building this. So we’re making it up as we go.
Michele: We all are.
Drew (Laughing)
Michele: Cool. Was there, or is there anything else? Did you have any other questions?
Drew: No, I think that’s everything I have.
Michele: Okay, great. Well, thank you so much for taking the time to do this today. I really appreciate it.
Drew: Thank you. It was my pleasure.
Michele: All right. Thank you so much.
Drew: Thank you.
Michele: Bye.