Introduction

On March 6th, 2019 Shifty Jelly officially released Pocket Casts version 7.0 for Android.

The reception was less than stellar.

This is the top comment on the /r/pocketcasts Reddit post about the release:

What’s wrong with you people? How do you just decide to remove my carefully curated playlists and the ability to make playlists at all? We PAID for this app and you just go ahead and make changes that fundamentally diminish the functionality of the app? Playlists are one of THE key reasons why I PAID you for this product. How about some consideration for your customers? I’ve put a lot of time into organizing the many podcasts I listen to. I’m very disappointed and will begin the process of migrating over to a new app. But, hey, what do you care. You’ve already got my money. [cutlass15]

I don’t want to turn this post into bashing Shifty Jelly or the developers and designers there. I honestly believe they want to make an app that users love. However, I think at this point, it is clear they are not meeting that mark. Users of a podcast app don’t really erupt into a turmoil out of nowhere — when users are disappointed, confused, or angry — the users aren’t crazy. There’s an underlying cause to their reaction, and it is not mass hysteria.

I’ve mentioned before, but I work in the computer industry. I know a bit how it feels when the product or platform you’ve designed is met with criticisms and critiques that you don’t understand — when it feels like that the users would really appreciate it more if they understood your vision. It’s too easy to get into a us-vs-them mindset, and to wave away any criticism as the users just not “getting it”.

The thing is, that thinking is toxic. It just doesn’t result in a better product. Sadly, this appears to be the current mindset of the developers as Shifty Jelly. Yesterday, one of the developers posted a response entitled “Let’s Clear Some Things Up” to the subreddit.

Instead of critiquing the software, today I want to take a look at that post, and see what we can learn from it.

Let’s Clear Some Things Up

Wow, has it been getting heated in here or what? Not trying to be glib, it’s genuinely a depressing place to hang out over the last few days. I see a tonne of people saying we don’t listen, aren’t listening, or are ignoring you which just isn’t even remotely true. So let’s discuss some things I see posted on here.

I really don’t like how the post starts out. The author doesn’t appear to be taking the criticism seriously; there is no contrition here. It’s not humble. A couple of negative, charged words are used (‘heated’, ‘depressing’) — and they immediately add a tinge of tension to the post.

It doesn’t feel like the author is honestly asking for forgiveness, or even asking for understanding from users. In fact, the post is defensive right from the start: “I see a tonne of people saying we don’t listen, aren’t listening, or are ignoring you which just isn’t even remotely true. So let’s discuss some things I see posted on here.” (emphasis added)

Again, users are crazy or mean — they want the same thing the developers want — a good app. When making a public app with lots of users, it’s easy to see all the negative critiques — and forget about the ‘critique’ part and just see the ‘negative’. Part of that is that most users are not really well versed in how to phrase their thoughts on a product in a way that doesn’t appear to be shallow or mean when read by the developers. A user may not know why they dislike something — so they will just say ‘I hate it!’. Just because the user doesn’t know how to formulate a critique — that doesn’t mean their initial feelings are wrong.

The opening paragraph here reads as an opening salvo — and not a heartfelt missive from a developer to their users. The users are disappointed, and frankly very angry. How does the combativeness solve that problem?

“The Mods Are Deleting critiscm” I’ve been actively removing any links to APKs people post. Pretty sure Ben has been too. We don’t know what’s in those APKs or if they contain viruses or malware, so it’s simple: if you post a link to any APK (be it Pocket Casts or otherwise) we’ll delete it. Do it repeatedly and we’ll ban you. I don’t think this is controversial. Have all the angry discussions you want, I’m not going to delete those, but no APK linking of any kind.

​I’m not going to criticize Shifty Jelly and the mods of /r/pocketcasts for deleting posts containing links to APKs. Pocket Casts is a a premium app, and they are right — downloading and installing random APKs from Reddit is probably not a great idea.

That said, this continues the overall combativeness of the post. We’re in the second paragraph in a post responding to negative user reaction — and we’ve yet to see the word sorry.

“You guys didn’t listen to us” We did. We spent months listening to you and thousands of other people in our open beta giving feedback. We changed a lot of things based on that feedback: We added Episode limits to the archiving feature, because people clearly couldn’t get by without it. It wasn’t that there was a new way to do what they wanted to do, it was functionality we realised they were missing, so we added it during the beta process.

We added an Archive all played option for those people that in the v6 to v7 migration were left with lots of episodes the app had previously marked as played for them that they needed a quick way to migrate

We fixed lots of bugs people reported. Playback, notifications, crashes, etc. We also have automated crash reporting that we paid close attention to to get those numbers back to 99% crash free where they belong.

We made changes to the add to Up Next feature to help people get things into their Up Next quicker

We made a tonne of syncing improvements, including progress reporting and immediate end of episode syncing. These weren’t small things to add, but it was clear people were having syncing issues that needed to be addressed, so we took the time to do it.

We added features like go to podcast from the player, and many other similar shortcuts people were asking for.

We added a list view to the podcast grid that many people were asking for.

We changed from making the app streaming first, to upgrading everyone from version 6 to be downloading first. This was a huge source of confusion for our initial beta testers and even though we think streaming first is a simpler model, we back-tracked because it was clear it was a mis-step.

We made constant tweaks to how the archiving feature worked, and how things like Auto Download etc interacted with it.

I could go on, We addressed 363 individual issues during the beta. Everything from fixing bugs, to changing features, to adding features.

I’m not dismissing the hard work that Shifty Jelly put in to make V7 and polish it — but, personally, none of those bullet points seem to address the fundamental issues I have with V7. The issues that I (and apparently many others) have with V7 are not merely bugs or quality-of-life issues, but are deep-seeded design issues that are not rectified by adding in more shortcuts or a podcast list-view.

As a positive, we are starting to see some admittance of faults from Shifty Jelly. But, even that has a bit of oddity to it: “We changed from making the app streaming first, to upgrading everyone from version 6 to be downloading first. This was a huge source of confusion for our initial beta testers and even though we think streaming first is a simpler model, we back-tracked because it was clear it was a mis-step.”

That seems to be stating that new users have V7 default to streaming episodes, and old users have V7 default to the old default behavior — downloading episodes.

As a user I have to ask — why is the user’s setting when upgrading from V6 to V7 not maintained? Why is V7 doing anything except honoring the user’s prior settings, if they exist?

You’re welcome to say that you feel like we didn’t listen to you, in particular, because your feature didn’t make it in. You’re also welcome to link to posts about design critiques of version 7, but we’re not always going to agree. We try to be polite to you all because posting something like “Thanks, but I completely disagree with everything you just said” feels rude, and not at all helpful. We also can’t talk always talk about future things in the pipeline, so we can’t be specific and sometimes just say “thanks for the feedback”. That’s not us being dismissive, we’re literally thankful for the feedback.

We’re over 600 words in, and ‘sorry’ is still yet to be found. Instead of that, we’re treated to more defensiveness and tension.

In particular, the opening sentence of the paragraph shows the disconnect between what the users are saying, and what the developers are hearing: “You’re welcome to say that you feel like we didn’t listen to you, in particular, because your feature didn’t make it in.” (emphasis added)

We’ll get into it a bit later on, but a major point on contention is the removal of Playlists in V7. I think it is very telling that Shifty Jelly considers such things to be a “feature[s] [that] didn’t make it in” — whereas the users rightly see that as a feature that was removed.

“What about custom episodes?” I built the original version of that feature, I can’t remember exactly when but I think it was in 2013. I literally hacked it into the app while Philip our main Android developer back then wasn’t watching. It was a hacky implementation that barely worked then, and worked even less so in 2019 due to changes in Android. Find a folder, drop file into it, pray they appear as a “Podcast” in your grid. It wasn’t well done. So when working on version 7 (which was a complete re-write of the app) we had to choose: build this as a proper feature, or remove it from the app til we can. We chose the latter. We chose it because this deserves to be a great feature everyone can use, and the code just wasn’t there for it in version 7 to make it work at all. I’m sure that’s unpopular with the people using that feature, but I can say we’re already working on bringing back a far more complete and working version of it. I want this feature, I love this feature but for now I’m ok with not having it until we can do it properly. You might not be, but all I can offer you are the facts.

Users don’t care at all about the implementation details of features in your app. They have no clue at all if a feature is backed by a robust design and implementation, or is held together with nothing but Yahoo Pipes and prayers.

As a mostly amateur developer — I completely understand the feeling. It really sucks when a feature you’ve written is buggy and poorly implemented. The thing is though — once the feature is released to the public and not explicitly declared as ‘beta’ or something similar, that feature becomes part of the implicit contract of the app. That feature should not be removed without some form of notification and consultation with users.

As a developer, you see the hacky implementation and hate it. But users don’t — they see a useful feature that they rely on.

We’re starting to get to the meat of the disconnect here. It seems like Shifty Jelly has gotten into the mindset that V7 is not an evolution of V6, but a complete rewrite. While that is likely true at the code level, that is not true at the user level.

Again — users don’t know or care about the implementation details. From a user perspective, justifying a removal of a feature by saying the new version is “…a complete re-write of the app” is not a valid justification for the users. As a user I don’t care. The app supported my workflow yesterday, and today it doesn’t. What direct benefit do I get from the fact that the code was refactored or rewritten?

“Why did you remove playlists?” To clear one thing up: our app has a playlist feature, it’s called “Up Next”. You can queue episodes up in it, re-arrange them, edit it, it syncs to everywhere you use our app. It’s great. What we removed was the ability to create more than one playlist. This was an agonising decision that we didn’t commit to until very late in the beta process. The reason we didn’t commit to it was simple: could we find a way to make it work, without breaking a whole bunch of other things and without making the app harder to use? We also have real world analytics and usage number, less than 1% of our user base used this feature. That doesn’t mean it’s not important. That doesn’t mean the less than 1% who used it didn’t love it. But we made the decision to remove it, in order for the app to be the best it can be. You might not agree with that decision, but that’s the why and the how.

I’m trying to write in a friendly and professional matter, in order to hopefully cut through the distrust and tension that has formed between Shifty Jelly and their customers around V7 — but I think an exception here is warranted.

What the fuck?

“To clear one thing up: our app has a playlist feature, it’s called “Up Next”.

This reminds me of another famous quote, when a company was dealing with backlash over an unpopular decision:

“…fortunately we have a product for people who aren’t able to get some form of connectivity, it’s called Xbox 360.”

In 2013, Microsoft was starting to talk about their next-generation console to replace the aging Xbox 360 — the Xbox One — and a particularly controversial feature of the upcoming machine was the fact the console was required to be constantly connected to the Internet to function, even for offline games.

In an interview with videogame journalist Geoff Keighley, then-President of the Interactive Entertainment Business at Microsoft Don Mattrick gave the above quote. The implication was rather clear to the press and customers — if you don’t like the always-online requirement of the Xbox One, then fuck off.

The reception to that statement — and Microsoft’s overall combativeness around the console’s online-only design — was very negative. A month after that interview, Microsoft reversed course and removed the online-only restriction before the console’s release. Two months after the statement, Mattrick left Microsoft.

The statement about ‘Up Next’ seems very similar to Mattrick’s statement. It shows no real understanding or empathy for users. Users don’t care about the backend details or the metrics — all they see is a loss of functionality that they used to depend on. There is no way to spin that into some sort of positive.

“You should revert back to version 6. This is a disaster” I get things have changed, I’m not here to patronise you or to tell you what to do about that change, but I will tell you this: we all feel this is a change for the better, and we’ll continue working on version 7, then 7.1, then 7.2 and eventually version 8 and beyond. There’s no going back, that’s not how software or products work. That’s not how Shifty Jelly (as we used to be known) has ever worked. Now you might think that’s naive or stubborn or stupid or crazy, and you’re entitled to that opinion. We disagree. We went through this same version 7 transition last year on iOS and here’s what happened: New customers were way less confused, the app was easier to use and more approachable to them. We can measure this, less support requests, less people asking for help

I know what you’re thinking, that’s because they all left! They didn’t. Our active user count went up after the update, and kept going up, it does to this day.

But your sales tanked right?! No, they went up, and continued to go up after the version 7 transition.

People now spend more time listening to audio in our app than they did in version 6, a full hour more.

Existing users eventually came to appreciate all the new features, and while a few remain disgruntled, overall the transition though hard was a success.

Our app store rating did take a hit, I don’t like that, but thought it worth mentioning because someone was bound to bring it up. It’s slowly working it’s way back up. Version 7 was a big change and we need to get better at doing those more slowly or explaining the change better. I firmly believe the same will happen on Android. I’m sure some of you disagree, again that’s your right, but it’s my belief and it’s based on hard facts from when we did this last year on iOS. Before you start writing, I know iOS users aren’t Android users (I was on an Android podcast for 2 years, I use an Android phone, I get it) but if that’s what you took from the above I think you missed the forest for the trees. This new version was designed in conjunction with the Material Design team at Google, so any “OMG iOS” reaction would be unfounded, we literally designed v7 for Android first, with the people who make Android Design.

Fundamentally, who is Pocket Casts developed for? It is nothing but a development exercise for the employees of Shifty Jelly? Pocket Casts is a premium app — it costs money. Users are customers — they paid for the app.

The core philosophical disconnect here is that Shifty Jelly seems to have lost sight of the reason they made Pocket Casts. They made it to be a good podcast app — hopefully generating goodwill (and profits) in the process.

All these justifications offered so far are framed from the developer perspective, and not the customer perspective. I really cannot keep typing “users don’t care” in response every single paragraph.

And — let me tell you — technically speaking, they absolutely can go back. Their backend infrastructure still operates. They still have the source code and binaries for V6. The only thing stopping them is their own pride.

My personal preference is for V6. That said, thinking about it — I don’t support rolling back to V6 and throwing away all the work on V7. I think they should roll back to V6 and start working with users to refine and fix V7. Put V7 out as a free app during the refinement process and call it ‘Pocket Casts NG Early Access Edition’ or something — and develop in the light, working with users.

Personally, I don’t believe V7 should have ever been released out of beta unless every single feature from V6 made it over — or had a essentially compatible replacement/re-implementation.

Developers attempting to power dismissively through negative user reactions has never worked.

“NPR has ruined this app” The team that works on Pocket Casts, is the same 5 people it always was, here in Adelaide Australia. We have added new people to the team so we could do bigger and better things, but it’s the same core product team. Yes we have new backers, but NPR (and WNYC, WBEZ) don’t have direct control of our product roadmap in any way. You can see this in simple things like the fact that we never implemented the RAD specification that they championed and pioneered. That wasn’t a fun thing to explain to them, but we remain independent for a reason and I think they respect that.

Having seen the developers reaction to criticism over the last few months — it’s clear the problem isn’t the new owners of Shifty Jelly — its just classic developer hubris.

Finally, and most importantly: if you’re angry about this new update, you should actually be angry with me. I’m our Chief Product Officer. I’m not a designer in any sense, but I do have final say over every decision we make and what things go out vs those that don’t. So if you hate version 7, you hate the things I’ve done, and you hate the decisions I’ve personally made. I say this only to make a simple, civil request: be nice to people like Ben (our Android Developer) and Sarah (our Support Officer). They are human beings who have to log in here and wade through all these angry posts people claim they never read. That s%&! takes a toll. By all means, keep posting things you don’t like or want to see improved, but don’t take it out on them. That’s really not fair. [rustyshelf]

To speak to the disappointing and angry users here: Let us all be civil. That’s not to say to not express your honest feelings, but be generally civil in your interactions with Shifty Jelly and their employees.

I honestly think they are caught in their own sort of reality distortion field — they’ve lost their way, and being especially mean or angry at them won’t get them back on track. That idea is one of the reasons I’ve written the critiques I have here — I understand that it is too easy to fall into the ‘users are wrong’ trap as a developer.

I firmly disagree with Shifty Jelly’s philosophical positions around V7. It being a complete rewrite is no excuse for dropping features. They have not been honest with users, and they have not been listening nearly enough. They are storming ahead with their vision, no matter the consequences or broken trust engendered in their hard-earned customers.

How Did We Get Here?

To be clear — I don’t actually know how we got here. To me, it appears to be a tale told before — developers taking their users for granted and becoming cloistered in their integrated development environments and forgetting about their relationship to users.

They’ve appear to have forgotten that the horse goes before the cart — that the user’s experiences should be the prime motivator of app development, not the whims of designers and developers. Pocket Casts is not a new product — Shifty Jelly is not founding a new path forward in podcast listening, they are maintaining the existing relationships between themselves (through their communication and their app) and their customers.

Mentioning relationships in regards to apps may seem odd — but it’s true. Users form a relationship with their apps. Over the last week, I’ve spent hours using Pocket Casts. I have human friends and co-workers I care for that I’ve spent less time with.

That is not to say that Shifty Jelly can never change Pocket Casts, or introduce bold new features — but such drastic changes have to be taken with care and with users.

Users are angry — an app they’ve come to love and depend on has been broken, and the developers are not respecting the users and really listening.

The design decisions around V7 are largely subjective. I don’t like the UI — hey, that’s my opinion. But other decisions are not justifiable as ‘subjective differences of opinion’. V7 has removed features — and I just don’t believe that’s justifiable from a user perspective, especially not in the manner Shifty Jelly has done it.

Where is the respect for the users? Yesterday their app supported custom episodes and playlists, and now those are just… gone. I just don’t see how a developer can see that as an acceptable outcome. It’s not just that the features are gone, there is actual data loss — information loss.

Where Do We Go From Here?

I don’t know. I don’t think V7 is fatally flawed. What is truly damaged is the relationship between Shifty Jelly and their users.

I would like to see a willingness to honestly listen to users. Some humbleness from Shifty Jelly would go a long way. I don’t want an apology — and I don’t want an explanation. I just want to feel like Shifty Jelly actually cares about my relationship to them and Pocket Casts.

I’ve said numerous times that users aren’t crazy — and don’t just fly into hysterics for the fun of it.

I didn’t write thousands of words about the new version of a podcast app because I’m crazy — I’ve written thousands of words about this because I genuinely loved Pocket Casts. In a world full of turmoil and strife and annoying complexities, Pocket Casts was a great refuge — a beautiful, intuitive gateway to the world of podcasts.

Now I feel lost. I’m clinging to last release of V6 until the backend servers no longer accept connections.

Where will I go once that happens?

I don’t know.

I used to use Google Listen, before it was shut down. I tried a few different Podcast apps, like DoggCatcher and Podcast Addict — but nothing felt right until I found Pocket Casts.

If nothing changes, at least I’ll have the fond memories of the good times I’ve spent with Pocket Casts.

A New Idea

After initially posting this entry, a new idea struck me.

Shifty Jelly’s position has essentially been that V6 is gone. V7 has been a rewrite from the ground up, and keeping V6 around (as a downloadable APK, or as some sort of ‘Pocket Casts Classic’ edition is untenable — as they will eventually introduce server-side changes that break V6. They seem to be saying that V6 is, to them, essentially worthless — it not a hindrance to their future plans.

What if they open sourced it?

Last year, Shifty Jelly was purchased by a consortium of non-profit public radio entities: WNYC, NPR, WBEZ and This American Life. Why not embrace the non-profit and public service missions embodied by public radio, and open source V6?

NPR has a history of releasing open source code.

One technical issue is that Pocket Casts heavily relies on backend servers — for syncing feeds and playback information. Personally — I find the server-side aspect of Pocket Casts one of the least essential features to me. I really only use it on one device — my phone. If they were to just rip out the code interacting with their backend infrastructure and release a initailly ‘broken’ open-source version, I’d imagine people would soon either make new server software, or would modify the open source version to replace the server-side aspects with local aspects.

If Shifty Jelly is really done with V6, why not open source it as a goodwill gesture to the community?