Live data from Hacker News

Ask HN: Have you ever worked on a product that was killed by technical debt?

news.ycombinator.com

261–270 of 331 posts

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#262
post #245

How about: All Of Them Every failed product/project I've worked on in my professional career, which had full intent to ship from the start, was killed by technical debt. It's usually indirect, but it's always the root cause. It takes many forms: * Too buggy to ship, due to a creaky old code base being over-stretched to a product with too high reliability/experience expectations. * Product form factor, efficiency, use…

Interesting that you talk about project that never shipped, When I read OP's question I was thinking about already-shipped products that became too hard to run and maintain.

I am curious how long your products/projects were in development for before falling to tech debt? Were these net-new projects?

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#263
post #256
post #236

Earlier quoted context omitted.

Well, the correct answer is often also "They did it that way because it was a reasonable choice then, and they didn't have the benefit of hindsight that I have now."

Its also possible that whatever constraint they were working around no longer exists. Either way, it's a case of not tearing down a fence before you know why it was put up. G.K. Chesterton, 1929: >In the matter of reforming things, as distinct from deforming them, there is one plain and simple principle; a principle which will probably be called a paradox. There exists in such a case a certain institution or law; let…

In my experience Sturgeon's Law usually overrules Chesterton's fence.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#264

This is going to be vague for obvious reasons. I worked on an EDA product for a short time. Its code base had a few components, some of which were written by the product team, and some of which were copied (without source history) from other teams. The team decided to make a cloud version of the product too, and to do that, the team split in half and each new team had their own copy of the code base. No sharing code,…

Having used several different EDA tools, I completely believe this. I don't know how they can be so poor across the board. It is part of the reason I switched from doing software & hardware to just hardware. Life is too short to deal with bugs in synthesis tools.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#265

Earlier quoted context omitted.

This is interesting, and as the other commenters have pointed out, creating a parser for /all/ variations of CSV can be very tricky.

But your code doesn't even handle the trivial case. "She said, \"Hello, world!\"" You can drop the "meh, I know I didn't handle all the complicated cases" act. We all recognize the classic developer I-could-build-that-in-a-weekend hubris when we see it. :)

Hi,

Thanks for your thoughts. As I have stated elsewhere, the code handles all of the cases I needed it to handle, due to the stability of the input file format (which was emitted from another program). I don't see that this should be too hard to believe.

I also said in my second edit, on the top line, 'Not so trivial after all!'. If I was putting on some kind of act, wouldn't that have been dropping it? Further, I noted in my first edit, before I had received any replies, that I 'know this version won't support escaped separator/newline characters', so I am not sure what you were trying to add with your example?

I think that my central point (and I totally accept that I didn't express this well) is that depending on the specifications of your program, the required CSV parser /can be/ very short. When one compares this to other data exchange formats, for example JSON, it is clear that the barrier to /entry/ is much lower. The shortest JSON parser I could find with a cursory look was 200 lines of C.

I totally appreciate that to write a CSV parser that works for all cases would be extremely longwinded. It has been interesting to hear other people's experiences and opinions about that. But the fact remains true that /in some cases/, depending on the requirements of the program, the parser can be very short.

> We all recognize the classic developer I-could-build-that-in-a-weekend hubris when we see it. :)

It is funny you should say this. I needed the CSV parser because I thought it would be fun and interesting to see if I could build an anti-malware tool in a week (I am taking a malware detection class at the moment, I wanted it done before the next lecture). I did not expect I would be able to have anything good working in that time, but by the early hours of the next morning I had a perfectly functional anti-malware tool. It can use ClamAV signatures (so it can detect everything(?) that ClamAV can), runs in parallel, has a nice text console with DSL, and is fast enough (processing 210k small files in ~5 minutes, checking against ~60k sigs). It is about 650 lines of Erlang (including comments). I am saying this not to boast(!), but to make the point that I greatly underestimated how productive I could be, beat my expectations by many fold, then people comment about my hubris online the next day. It is funny how life goes!

Thanks,

Sam

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#266
post #244

I was CTO of a company that had a two-week outage due to technical debt. I didn't sleep much for any of it. We fixed it, and we'd lost about 30% of our subscriber base in that period. The company took on new funding to survive, invested that in a new set of products, and shuttered the old stuff just to stay afloat. I am currently working in a business where there is a nearly 8-year old Rails app (600+ models, 250+ co…

IMO this is the price to pay for a dynamically typed language. 60K LOC is not much in a static language, you can use tools to refactor it easily or to visualize the control flow. But with a dynamically typed language? Its a nightmare. You change one thing and cannot possibly know what else could have gone wrong.

It depends.

I work on such type of codebase, but we have a fully covering testing suite, so applying changes is not a problem (interestingly, I've just realized that the line count of the testing code is 50%+ more than the base application code itself).

So ultimately I think company culture (that is, emphasis on automated testing, for dynamically typed languages) is the crucial factor.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#267
post #262
post #245

How about: All Of Them Every failed product/project I've worked on in my professional career, which had full intent to ship from the start, was killed by technical debt. It's usually indirect, but it's always the root cause. It takes many forms: * Too buggy to ship, due to a creaky old code base being over-stretched to a product with too high reliability/experience expectations. * Product form factor, efficiency, use…

Interesting that you talk about project that never shipped, When I read OP's question I was thinking about already-shipped products that became too hard to run and maintain. I am curious how long your products/projects were in development for before falling to tech debt? Were these net-new projects?

> When I read OP's question I was thinking about already-shipped products that became too hard to run and maintain.

I've been mostly in consumer electronics related companies, where a product which ships and then becomes too hard to maintain usually doesn't "fail". It just gets phased out. In a way, this is another way technical debt has an indirect, but large impact on products: obsolescence becomes a necessity. Not so much planned — which implies malice — as simply realizing it's not possible to maintain indefinitely.

> I am curious how long your products/projects were in development for before falling to tech debt? Were these net-new projects?

Usually very quickly, or after far too long.

The better projects know ahead of time that there are Dragons lurking in the code base. But that's effectively saying there are projects which never even got past brainstorming because we knew the technical debt was too high.

On the other hand, there are projects where it only becomes apparent how much debt there is after a lot has already been invested. It's like you'd expect, e.g "There's a performance problem because of a basic primitive this library uses everywhere. And that was originally a workaround for a compiler performance bug. We could fix the compiler bug, but it turns out other libraries relied on it..." and so on. Extra time-to-market makes a product make less and less sense — fashions change, hardware improves, new tech arrives — and so it gets killed. Or worse, shipped.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#268

Earlier quoted context omitted.

I worked for a company that grew considerably for 10 years and then lost its biggest client and folded quickly. We had spent a few years reworking our platform in a way that might have been successful enough to weather the storm of losing that client, but technical debt really slowed us down. Technical debt may not have killed the company directly, but we have to wonder how we might have done if we could have spent m…

This is revenue diversification not technical debt. Companies with a single customer funding the business should be actively pursuing a high priority strategy to reduce this risk.

It was both. The combination of two failures put them beyond the point of recovery.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#269
post #33

Knight Capital lost $465 million in 45 minutes caused (at least in part) by technical debt and poor development practices. Summary: http://pythonsweetness.tumblr.com/post/64740079543/how-to-lo...

To me, the single line that stood out was: "The new RLP code also repurposed a flag". I've never seen a flag repurposed without catastrophic effects.

To be fair, the only time you hear about someone repurposing a flag is when it has catastrophic effects.

Re: Ask HN: Have you ever worked on a product that was killed by technical debt?

#270

Earlier quoted context omitted.

Would these be cases where Robert Martin's 'The Clean Architecture' [1] would help, where the core enterprise logic is separated from third party dependencies, making the latter easy to swap out and replace? I'd imagine a number of these cases are caused by a heavy reliance on third party technologies that are no longer supported, or very few people still understand. [1] https://8thlight.com/blog/uncle-bob/2012/08/13…

It's a great idea but in reality most third-party tools are going to work slightly differently and the abstractions will leak (unless they were developed against an existing interface, in which case you don't need to create the wrappers yourself anyway).

https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
Post reply on HN