when re-designing a feature, one approach is to take what you have, and imagine small changes that will solve the problems with the feature. Instead, it’s often instructive to imagine that you were working from a clean slate and design the feature from scratch. In either case, the right approach is almost always to re-use the existing codebase in y... See more