It's funny how even though everyone agrees in principle that you should have an API in front of your database to centralize database access and make it easier to do migrations and add caching, but there's always some excuse not to do it today, because it's always more work than whatever incremental thing you're trying to do.

I try to point out how much easier even the incremental task would be if there were already an API, but everyone only cares about the features they're trying to ship today.


Which is of course why technical debt rarely gets paid down. Nobody ever thinks about the total cost of maintaining all that technical debt, just about the cost of paying it down today.

This is why every time I touch code I pay down a little bit of technical debt. I would have a lot more trouble getting away with it if I weren't so senior, though.

@freakazoid Keeping a team focused on difficult long term tasks while continuing to work on more immediate tasks is a challenge :/

@be SRE teams at Google often had "tech debt weeks" where they'd only work on tech debt. Since you could always rely on SREs to open bugs for any tech debt, there was always a good queue to work from.

@be Of course, SREs tend to have a better understanding of the consequences of tech debt since they spend more of their time dealing with how code behaves in production.

@freakazoid how do you pay down a little bit of migration from direct DB access to DB access through API?

@wolf480pl By drawing a line in the sand and disallowing new access. Then you migrate one query at a time. We did exactly this with Second Life. Mostly it was just cutting and pasting the SQL and replacing it with a call to the API.

@wolf480pl The SL simulator used a service that ran on each node to handle database queries, so it was copy and paste the SQL to the REST service, then add code wrapped in a feature flag that calls the API instead of the proxy, then try flipping the feature flag and making sure nobody complains, then remove the code that calls the proxy and the feature flag in the next release.

Sign in to participate in the conversation
R E T R O  S O C I A L

A social network for the 19A0s.