iOS App Analytics a Necessary Evil, or Maybe Just an Evil
I have yet to see an iOS project where implementing client-side analytics (page loads, event logging, behavior tracking) wasn’t unspeakably awful to implement. A litany of sins:
Brittle: It’s far too easy to break existing behaviors when rearranging code, reordering screens, replacing outdated logic, etc.
Needy: Metadata attached to arbitrary events often requires tying together data that’s scattered across unrelated objects. Making it available at a given analytics call site forces you to punch ghastly holes through all your precious tiers of responsibility.
Volatile: Last-minute additions to feature requirements often end up requiring deep refactoring to replace all the plumbing you thought sure was not Lucy Van Pelt footballable not this time, I’m sure it’s going to ship unscathe— oh god no.
Unfriendly: You get effectively zero help from the compiler or static analyzer to help you do it right. Missing an analytics call? Too bad, nobody will notice until you’ve shipped to production and Brycepants the Product Guru has a meltdown because it looks like nobody has retooted a shitpost since version four-dot-fucked hit the App Store update tab.
Incomprehensible: Translating biz dev douchebag bingo into an expressible model is an exercise in futility. It’s even worse for whoever has to come along behind you and refactor your mess.
Costly: Once you’ve started using a particular solution/platform you’re effectively locked into it for the lifetime of the project. Often you don’t even have a say on the initial choice, either. Shame on me, shim on you.
And these are just the problems with implementation details. Let’s not forget how morally and/or legally perilous the entire enterprise is, stockpiling user data without regard for its half-life — which is effectively infinite — or for all the incalculable damage that can be done in five, ten, twenty years when Faild Strtup Dotcom goes bellyup and all it’s data gets dumped onto the lap of the highest bidder.
There are many reasons to just abandon this foul mess, and only one indestructible, immovable reason not to: you can’t run a business if you don’t know what your customers want. We all understand this dilemma, but understanding it doesn’t make it any easier to stomach.