This looks like a pretty naive solution. The more elegant way to do optimistic UI would be to use CRDT or OT. Usually syncing is talked about in the context of syncing multiple clients. Here, we just want to sync the cached offline state with the server state. This allows you to make arbitrary changes to your offline state even if your server has conflicting changes incoming, it will all be eventually consistent in t…
Making Instagram.com faster: Part 3 – cache first
71–72 of 72 posts
Re: Making Instagram.com faster: Part 3 – cache first
#72> However, as the product grew, a side effect was that our web performance began to slow. Over the last year we made a conscious effort to improve this. We’ve [1] been advocating strongly for using performance budgets [2] as a means of protecting hard-earned performance improvements. There’s some depressing stat around performance regressions... something like 25-50% of big sites regress in performance 6 months after…
That's us. Big win last fall, right back where we started. And it's not like we stopped working on things in the middle. Every feature request is adding more logic to the code, and it's not uncommon for the business to ask for code that affects every single path. I've noticed this before, but it's very true on this project: management is very hesitant to create new 'areas' of the application, and so more and more fun…
This really nicely describes why I think so much software becomes bloated. You see this with startups all the time--at first the product is hacky/clunky/lacking features, then after some time and love it does a small set of things really, really well and is truly a joy to use, and then later on it becomes slow, bloated, and trying to do far too much and ends up doing many things unremarkablely rather than a few things well (the opposite of "half, not half-assed").
I think that last stage happens when you have individual teams A/B testing new changes independently and hacking on each new piece without much thought to the overarching cohesiveness of the product. All the incentives naturally align toward this too, so it takes some really strong leadership to prevent it and have a broader product vision that supercedes all the local optima of each individual team's features.
(As a side note, this also often happens when the software/startup needs to be monetized)