Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I believe an approach like this is still likely to bite you later.

When users are only doing one-to-one right now, that's what you're going to be designing the UI for. Nobody likes a pointless dropdown to select the one possible option, after all. So how do you build a "go to pet" button? You just take the first element of the list.

But that's going to silently break the moment you start allowing one-to-many, because that button cannot exist anymore. It'll still compile without any issues - it'll just be fundamentally broken. So when transitioning to one-to-many you still need to go over all code touching it to check that no shortcuts snuck in - but this time you don't have the assistance of a typechecker to verify that you rewrote it to accept a list instead of a single object.

I've worked on one too many projects where the stakeholders wanted "infinite adjustability": it's going to massively blow up your development time, make the UX a living hell, and end up never getting used at all. Unless you already have an "upgrade to one-to-many" backlog ticket planned and the project is just one-to-one for now to get the MVP out the door, starting with one-to-many just because you might need it at some point in the distant feature is almost certainly a bad idea.



Can second this, it’s premature optimization. The real problem is usually having no easy and reliable way to migrate data / apply schema changes.


I've had a pretty easy time transitioning from one-to-one to one-to-many by just keeping the old 1-1 mapping, renaming it as the "primary" option, and then adding a list of secondary options. All of the old functionality continues to work, and any new stuff that needs multiples can operate on "[primary] + secondaries".


"renaming" you lost me there, now you have a backwards incompatible API


Just internally is fine.


> When users are only doing one-to-one right now, that's what you're going to be designing the UI for. Nobody likes a pointless dropdown to select the one possible option, after all.

Your UI does not necessarily have to expose the full flexibility of your underlying data structures.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: