It happened to me twice. The first time was in a start-up at the beginning of the century, we were developing an electronic health record and we had outsourced the database abstraction layer to a company in Greece. In the beginning things went fine but after a while the development of the DAL went slower and slower and it became unstable as well. Eventually the word came out: the main developer of the DAL framework h…
Ask HN: Have you ever worked on a product that was killed by technical debt?
141–150 of 331 posts
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#142One application was a web application built in C++ in the 90's. It didn't have the STL, it implemented everything from XML parsing to PDF rendering from scratch. It stored all data in XML files on the file system. It was a single-threaded CGI application. And it was the core product of the small business that created it.
There was no series-B/C/D/E that was going to appear so we could hire more developers and re-write everything or develop a new, superior product, etc. This is where I learned how to maintain and extend legacy software. I spent hours pouring over Michael Feathers' book. We did manage to extend and breath new life into the system. We wrapped the old code in Python, wrote a tonne of integration and unit tests on every change, wrote some code to sync data to a database alongside the XML file storage scheme it used. We even got to a place where we started replacing code paths from the Python API with functionally-equivalent (as far as our test suite was concerned) code written in nice, clean Python (and gained some features along the way thanks to Python's nice libraries!).
We kept the lights on without having to spend too much time hacking on undocumented, untested C++ code and without trying to just re-write everything. It was much more difficult to make progress than a typical greenfield project in a dynamic language but that would've cost more upfront without a clear payoff... so we did what we had to do.
Another company? Well they decided to use a document-based data storage system as the source of truth in a hot-new micro services architecture that was going to save everything... only there was no schema validation and their use cases were killing performance in some scenarios. Random breakages cause by changes at a distance. It hasn't killed their business but it has limited their options.
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#143Earlier quoted context omitted.
Do you mean Excel to CSV? Or a CSV importer? I totally agree about Excel importing, but CSV is trivial, no? Here is an Erlang version I happened to write yesterday: lists:map( fun(Row) -> string:tokens(Row, [SepChar]) end, string:tokens(InputStr, "\n") ). EDIT: I know this version won't support escaped separator/newline characters, but I made it for a specific use case in which I knew that would not occur. Adding tha…
CSV is trivial? You may have missed this: http://tburette.github.io/blog/2014/05/25/so-you-want-to-write-your-own-CSV-code/ :-)
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#144Kind of, but not really. When I complain about that product I almost always complain about marketing, intransigent leadership, etc. Ostensibly technical debt killed the product, but technical debt is almost always a symptom not a cause. Technical debt can get out of control, but you have to wonder how it got to be that way.
It gets that way by working in a feature factory. https://hackernoon.com/12-signs-youre-working-in-a-feature-f...
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#145Killed - no. But I worked on several products that weren't able to move fast enough because of it, and lost money as result. One of those products was released half a year late and turned out to be a poor market fit. The company closed several months later. It could've used this half a year to complete a pivot with another product, which could have been successful.
If it was released late, that sounds like more a case of not having enough technical debt. If they'd kicked the can a bit further down the road maybe they could have released sooner, realised it didn't fit the market, and cut their losses.
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#146Earlier quoted context omitted.
I don't think I ever seen an Excel / CSV import implementation that wasn't a huge mess.
Do you mean Excel to CSV? Or a CSV importer? I totally agree about Excel importing, but CSV is trivial, no? Here is an Erlang version I happened to write yesterday: lists:map( fun(Row) -> string:tokens(Row, [SepChar]) end, string:tokens(InputStr, "\n") ). EDIT: I know this version won't support escaped separator/newline characters, but I made it for a specific use case in which I knew that would not occur. Adding tha…
"No, honest guys, I knew CSV was more complicated. I just didn't need to make my code safe."
Here's a csv parser in Erlang that actually attempts all that trivial stuff:
https://github.com/rcouch/ecsv/blob/master/src/ecsv_parser.e...
That's a lot more code than yours. And the notes even say it's not tolerant of badly formed CSVs.
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#147From that point on, the architecture froze. It still was possible to continue creating new features on top of it, but I am sure that architect would be able to provide both guidance and new solutions I feel may be needed. No one else picked up his tasks or views, nor was the architect position filled up.
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#148It took a year to build an index from a new crawl, and they were only doing incremental "freshness" updates in between where they updated certain pages. It was a fiasco.
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#149Earlier quoted context omitted.
This is a great example of how technical debt 'kills'. It's not a murder, it's negligence and a slow demise. I went through one of these projects. The tech debt was never as bad as you describe, but it was a small company operating on a short runway. It also taught me an unfortunate lesson about non-technical founders and the dangers of outsourced code. The MVP for the company had been bought off the shelf. It worked…
Seen this a lot. A lot of companies think they are "product" companies, but due to their unwillingness to push back on customers, they become custom engineering shops, bolting on little one-off mods to their project over and over to appease bad customers (or to appease POTENTIAL customers who haven't even bought the product yet). Stop me when you recognize this one: "Hey your product is great, but we really want some…
Re: Ask HN: Have you ever worked on a product that was killed by technical debt?
#150The last place I worked at will die because it will take them years to migrate from Oracle to postgres due to "technical debt" (the codebase is coupled with the database to a hilarious degree; business logic in triggers, huge plsql packages, plain sql queries in the java codebase, halfassed homerolled ORM). They're not getting as many new customers as they could because, for various reasons, the Oracle licensing term…
Hey, sounds like we worked at the same place! That, or the "wedded to Oracle for life" is a common antipattern. I'd add "shared everything architecture" to the horrors. Yeah, once you get that deeply entrenched in Oracle, it's almost impossible to get away, and after that experience I vowed never to work at another Oracle shop.