Much of the recent discussion around Apple, HEY, In App Purchase (IAP), Subscriptions, the App Store, and the iOS developer community has been about money. Is a 30% cut fair? How about 15%? What if it was 5%?
And some people say “Why not just have a special price in-app that’s 30% more than your usual price? Just pass the Apple tax on to customers?” Because that’s not the point.
I won’t deny that money, or the vig, in this case, is a large part of the story.
But personally, as the owner of a business, this isn’t just about money. Money grabs the headlines, but there’s a far more elemental story here. It’s about the absence of choice, and how Apple forcibly inserts themselves between your company and your customer.
Does the world’s largest company really get to decide how millions of other businesses can interact with their own customers? In fact, Apple’s policy distances you from your customer.
When Apple forces companies to offer In App Purchases in order to be on their platform, they also dictate the limits to which you can help your customer.
This has a detrimental impact on the customer experience, and your relationship with your customer. It can flat out ruin an interaction, damage your reputation, and it can literally cost you customers. It prevents us from providing exceptional customer service when someone who uses our product needs help.
Most people don’t know what happens to your customer relationship when you’re forced to accept In App Payments or offer subscriptions in Apple’s App Store.
1. When someone signs up for your product in the App Store, they aren’t technically your customer anymore — they are essentially Apple’s customer. They pay Apple, and Apple then pays you. So that customer you’ve spent years of time, treasure, and reputation earning, is handed over to Apple. And you have to pay Apple 30% for the privilege of doing so!
2. You can no longer help the customer who’s buying your product with the following requests: Refunds, credit card changes, discounts, trial extensions, hardship exceptions, comps, partial payments, non-profit discounts, educational discounts, downtime credits, tax exceptions, etc. You can’t control any of this when you charge your customers through Apple’s platform. So now you’re forced to sell a product — with your name and reputation on it — to your customers, yet you are helpless and unable to help them if they need a hand with any of the above.
As anyone who runs a subscription company knows, billing issues — whether problems, or kind considerations — are delicate situations where the utmost care and attention is required. At Basecamp, it’s our #1 category of customer service requests every single month — and often by a long shot. And it’s not because our payment system is complicated — it’s very straightforward — it’s because life is complicated.
Billing concerns and account management concerns aren’t just about money, they’re about people, about situations, about context, about humanity.
For example, at Basecamp we help people for all sorts of reasons. We apply credit to accounts for all sorts of reasons. We provide hardship exceptions for all sorts of reasons. We discount our software for teachers. We provide free versions for first responders. We extend trials for those who need more time. We extend payment terms occasionally for those who can’t make ends meet this month. We make exceptions because people are exceptional. We take enormous pride in helping people out. And we’re damn good at it.
If we had to push our customers through Apple’s system, we couldn’t do any of that. Apple’s rules prevent us from servicing our customers, yet Apple gives us no choice but to submit to those onerous rules or not be represented on their platform. That’s flat out hostile — to us, to our customers, and to the community.
Further, like many sophisticated software companies, we already have a centralized billing system which is tied into our own back office systems. Administration, accounting, account management, data lookup, customer support, etc. If one of our customers is forced to pay with Apple’s payment system, we’re blind. We can’t look them up, we can’t help them. Our only answer is “Go ask Apple.” What a terrible, hopeless message to send. Developers who are forced to send this message today are often met with accusations of scamming their customers, stealing their money, etc.
Our customers use Basecamp or HEY every day, we’re here for them 24/7 to help with anything. But when it comes to billing, one of the most sensitive concerns, if you’re forced to pay through Apple’s system, well, we can’t help you anymore. As a business owner who gives a shit, that’s shit.
And with multi-platform products like Basecamp, HEY, and so many others, being forced into using a separate billing system for some of your customers and not others creates significant confusion and complexity for customers.
Let’s say someone signs up for HEY on an iPhone, pays with Apple’s IAP system, and then decides to switch to an Android phone. Billing is entirely messed up now. They can’t update their credit card through the HEY app on Android because their billing info is stored with Apple. And we can’t help them. Who wins there? Apple wins. This creates immense lock-in when all your service subscriptions are tied to a single platform. If you change your phone, do you now also have to change your email address?
This is why we have a universal, non-platform-specific centralized billing system. We make a multi-platform product. Web, Mac, Windows, Linux, Android, and iOS. Pay us anywhere, we can help you anywhere. Except Apple won’t permit that — you can’t pay us our way if you’re using the iOS App. You have to pay Apple’s way, and messes everything up for everyone other than, you guessed it, Apple.
Apple’s payment policies create two classes of customers for us: “The can-helps” and “The can’t helps”. Apple has no right to force this on us, on our customers, or on any business — big, small, freelance, independent, whatever.
My loyalty is to my customer, not to a platform. I wake up every day to take care of my customers, not to take care of Apple.
When you think about the big picture of a complete customer relationship, in app purchases are one of the most hostile customer experiences I’ve seen. Sure, the purchase part is relatively easy (most modern purchase flows are these days), but that’s where Apple stops. We end up with our hands tied behind our backs. Unable to help customers to our own high standards because Apple won’t let me, or my employees, do our jobs.
(Republished from my open letter to Apple back in 2020. The same applies today, in 2024).
Validation is a mirage.
Spend enough time talking with entrepreneurs, product people, designers, and anyone charged with proving something, and you’ll bump into questions about validation and certainty.
“How do you validate if it’s going to work?”
“How do you know if people will buy it to not?”
“How do you validate product market fit?”
“How do you validate if a feature is worth building?”
“How do you validate a design?”
You can’t.
You can’t.
You can’t.
You can’t.
You can’t.
I mean you can, but not in spirit of the questions being asked.
What people are asking about is certainty ahead of time. But time doesn’t start when you start working on something, or when you have a piece of the whole ready. It starts when the whole thing hits the market.
How do you know if what you’re doing is right while you’re doing it? You can’t be. You can only have a hunch, a feeling, a belief. And if the only way to tell if you’ve completely missed the mark is to ask other people and wait for them to tell you, then you’re likely too far lost from the start. If you make products, you better have a sense of where you’re heading without having to ask for directions.
There’s really only one real way to get as close to certain as possible. That’s to build the actual thing and make it actually available for anyone to try, use, and buy. Real usage on real things on real days during the course of real work is the only way to validate anything. And even then, it’s barely validation since there are so many other variables at play. Timing, marketing, pricing, messaging, etc.
Truth is, you don’t know, you won’t know, you’ll never know until you know and reflect back on something real. And the best way to find out, is to believe in it, make it, and put it out there. You do your best, you promote it the best you can, you prepare yourself the best way you know how. And then you literally cross your fingers. I’m not kidding.
You can’t validate something that doesn’t exist. You can’t validate an idea. You can’t validate someone’s guess. You can’t validate an abstraction. You can’t validate a sketch, or a wireframe, or an MVP that isn’t the actual product.
When I hear MVP, I don’t think Minimum Viable Product. I think Minimum Viable Pie. The food kind.
A slice of pie is all you need to evaluate the whole pie. It’s homogenous. But that’s not how products work. Products are a collection of interwoven parts, one dependent on another, one leading to another, one integrating with another. You can’t take a slice a product, ask people how they like it, and deduce they’ll like the rest of the product once you’ve completed it. All you learn is that they like or don’t like the slice you gave them.
If you want to see if something works, make it. The whole thing. The simplest version of the whole thing – that’s what version 1.0 is supposed to be. But make that, put it out there, and learn. If you want answers, you have to ask the question, and the question is: Market, what do you think of this completed version 1.0 of our product?
Don’t mistake an impression of a piece of your product as a proxy for the whole truth. When you give someone a slice of something that isn’t homogenous, you’re asking them to guess. You can’t base certainty on that.
That said, there’s one common way to uncertainty: That’s to ask one more person their opinion. It’s easy to think the more opinions you have, the more certain you’ll be, but in practice it’s quite the opposite. If you ever want to be less sure of yourself, less confident in the outcome, just ask someone else what they think. It works every time.
The untold history of web development:
1990: HTML invented
1994: CSS invented to fix HTML
1995: JS invented to fix HTML/CSS
2006: jQuery invented to fix JS
2010: AngularJS invented to fix jQuery
2013: React invented to fix AngularJS
2014: Vue invented to fix React & Angular
2016: Angular 2 invented to fix AngularJS & React
2019: Svelte 3 invented to fix React, Angular, Vue
2019: React hooks invented to fix React
2020: Vue 3 invented to fix React hooks
2020: Solid invented to fix React, Angular, Svelte, Vue
2020: HTMX 1.0 invented to fix React, Angular, Svelte, Vue, Solid
2021: React suspense invented to fix React, again
2023: Svelte Runes invented to fix Svelte
2024: jQuery still used on 75% of websites
A question we asked ourselves during the development of Mirror was this:
What does classroom technology look like if it became the guide on the side instead of the sage on the stage (or screen)?
If you haven’t already checked out @swivl, you are missing out. Their products, & all of their staff really helped my teaching out when we were forced to teach remotely. The Mirror looks to be another great product to help with the social/emotional learning post pandemic.
What is an Optimalist parent? Good article about parents, children, #AI, and the future, and how to help our children adapt to the world. https://t.co/9Bp6BtwB76
🎉 Introducing New Relic Grok, the first generative AI assistant for observability.
Now, any engineer (dev, DevOps, security, product, QA, support) can ask New Relic Grok, in plain language, to set up instrumentation, detect and fix issues, and manage accounts. 🧵
Reading this now, @ProductHunt engineering was so ahead of its time on remote eng team best practices.
A lot of these seem obvious now that we all work remote.
https://t.co/aykuc0YU5p
If you have a @github account, you can co-sign this letter for technologists and security experts opposing @Apple's plan. I did.
https://t.co/QIb1TwJE0C
Сравниваем с оригинальной оценкой:
— для статей нужен WYSIWYG с замороченным функционалом, поэтому заложили больше
— платёжка Нигерии, тут не 32 часа надо, а все 80
— требования по производительности ещё «+»
— поддержка IE ещё «+»
Just wrapped up a month of PM recruiting and have finally signed the offer on my next role!
I know a lot of folks are recruiting, so thought I'd share some quick thoughts for anyone thinking about recruiting for PM roles soon. A quick 6-tweet thread below: 🧵