5 ms·
> because so many of the programs you depend on are written by dicks and idiots Out of all the problems with programming as a job, this is around the bottom of
by superbcarrot 6y ago
> because so many of the programs you depend on are written by dicks and idiots
Out of all the problems with programming as a job, this is around the bottom of my list.
- rufus_foreman 6y agoI'm working on an app that calls other internal services inside our company, one of them is a call to update an account balance. We were running into this issue where we were getting a 504 Gateway Timeout on the update balance call so I eventually found the Slack room for that team and asked about it. They ignored me for a couple weeks, but I kept asking and eventually someone answered and said yeah you'll get the 504 Gateway Timeout if you try to update the account balance to the same value that it already has. OK, that makes sense to you? What if there was an actual gateway timeout? You would also get a 504 Gateway Timeout in that case. They apparently have no plans to modify this service's behavior. I let it go, I just moved on with my life. I did not find myself awed or stunned with the mountains of work and talent and creativity and foresight and intelligence and luck that went into it.
- infogulch 6y agoI can guarantee you that 5 other teams rely on that specific behavior and don't have the will/independence ("budget") to implement that change if the api was fixed. Not only that, but if they did make that change, their manager would instantly have a handful of directors down their throat demanding an explanation why they just added work to their teams that are busy with Feature Work (TM).
- reaperducer 6y agodon't have the will/independence ("budget") to implement that change So, dicks and idiot middle managers. I think you made his point.
- philosopher1234 6y agoNo. This is such a small issue who honestly cares if it gets fixed? I guarantee you this is not the most important thing anyone involved could be working on. Too many perfectionists on this website.
- sixstringtheory 6y agoThe person who brought up the story mentioned account balances. Someone will definitely care when a latent combination of bugs is triggered and the company loses money because of it. See Knight capital and the more recent Citi debacles.
- WrtCdEvrydy 6y agoThis is a total failure to follow any sort of standard. A 504 is a gateway timeout due to the server failing to complete the action, hell, a 400-level for "you fucked up" would be preferable.
- fastball 6y ago4xx would be what you want anyway, no?
- jholman 6y agoWhat you described: let x = 2 // runs x = 3; // runs x = 3; // runtime error, you made a mistake No, I'd want a balance update to succeed. Even if it's to the same value that it already had.
- wccrawford 6y agoOr at least return a "no change" message, and not a failure result in the 400s or 500s.
- fastball 6y agoI don't think it's clear from the OC that even if they weren't using the wrong HTTP response they would want an update to succeed if it is the same value, at which point 409 could be a reasonable response code.
- WrtCdEvrydy 6y agoToo real.
- rufus_foreman 6y agoYeah, I'm sure there are valid reasons for why it behaves the way it does and there have been staff reductions in the last few months. The point is that it is pretty typical to spend huge amounts of time figuring out why things work they way they do, and it turns out to be some minor detail that isn't going to help you be a better programmer, it is just work that needs to be done to keep things from falling apart. It isn't very romantic.
- mgkimsal 6y agoSimilarly a colleague just told me yesterday about a data vendor who is sending data over on a almost nightly basis. They changed the process/format - without notifying anyone - and things broke. End users of my colleague's application were now saying they were seeing inactive client data coming up in their app, and it was causing confusion. During the time trying to figure out the new behavior, the main client finally got something in writing about "here's how it works" from the data vendor... * Rule 1... * Rule 2... * Rule 3: If a client record has not had any data updated, we will only send over the client name and header info, but no additional data records will be sent over. * Rule 4.... * Rule 5: If a client record is no longer active in the system (for example, has been deleted), we will only send over the client name and header info, but no additional data records will be sent over. Questioning back to the original data provider - if we get a client name and header info, but no additional data records - what does that mean? Does it mean the client is inactive/deleted, or simply that they've had no data change since yesterday? Absolutely no coherent response, and I doubt there will be one. The defense of "no no, we have to keep stupid behaviour around because people rely on it!" doesn't even stand - this change came about in the last couple weeks, after having worked this way for more than a year. It's both maddening and frightening how fragile so much daily data exchange is.
- ywei3410 6y agoOh man, we had a connection with an API recently where if you sent it some incorrect data it would just hang. No errors, no closing of the connection. Just hang. And ofc they don't offer a heartbeat over that channel. That would still be fine... if the data was static. But it's not - and changes are communicated; but not to the relevant tech teams.