Live data from Hacker News

Infrastructure Debt

littlehart.net

11–20 of 29 posts

Re: Infrastructure Debt

#11
I think the author has a different interpretation of "technical debt" than how it was originally intended.

Technical debt is not accidental and it doesn't consist of small mistakes, but it's due to a deliberate decision to cut corners when trying to get product or feature launched. Just like financial debt is not accidental, but a deliberate decision. (although you could argue that credit cards etc can create accidental debt too).

Idea is that it's okay and usually a good business decision to accumulate some technical debt to speed up your product development, but you need to keep eye on it and reduce it regularly, because if it grows too large, it can totally halt your product development.

Re: Infrastructure Debt

#12
Some good points, but very narrow focus on web development. Not everyone can work in a VM for performance reasons, and many projects target multiple different environments making it useful to have your devs on different versions to get more eyes on problems that might arise there.

In the video game industry, we usually split our developers up between each game console, so there are a half dozen different dev environments in use and it works better that way.

I like the concept of infrastructure debt, and it's clear he's talking from his own personal experience. I'm sure many examples could be made for other software industries that are also valid.

The hard part about solving these kinds of problems isn't entirely a technical problem, because many of them are caused by bad habits and stubborn programmers. To fix these issues you need to change people's daily working practices, not an easy task.

Re: Infrastructure Debt

#13

I get the benefits of having identical environments as production (and that's what I aim for, at least, with our staging server) but to be honest, I like having a small amount of diversity across our development servers. It's the small differences that have helped us to work out that bizarre bug (turns out, it was actually a problem specific to a particular version of PHP) or to find those small assumptions about the…

I just changed job and got from a very unified setup (Linux-only, everyone working on one server) to a much more disperse one (all OSes, working on local). I agree that some diversity helps to keep flexibility and have a code base, data model that is more forgiving for little discrepancies.

But I guess there must be some checkpoints, or rules, were you don't allow any flexibility. You build a much more flexible project on rocks. For instance, no deployment if one test don't pass, and tests should include "X"-lint checks.

Re: Infrastructure Debt

#14

I like the article, but am thinking about a bike shed. For each thing, like manual deployments or failure to use source control, I ask myself: Is it “debt?" Or "friction?” Debt and friction both accumulate, but debt must be "repaid" in a lump sum. If "technical debt" or "infrastructure debt" means your velocity is falling over time, it's friction, not debt. Infrastructure debt would be something that is eventually go…

(Blog post author here)

Upon reflection your use of the term "friction" is a good one. Although I tend to look at "debt" as something you pay back as quickly as possible but sometimes you can only pay it back in installments.

I guess you could say having too much infrastructure friction eventually leads to one humungous infrastructure bonfire. :)

Re: Infrastructure Debt

#15
post #10

To the author: would a bad choice of language, framework, persistence layer count as infrastructure debt? If so, then it should be noted as the most dangerous of all.

Author here:

With the understanding that I do most of my work in the most-bullied, down-trodden programming language here on Hacker News (PHP) I think that your choice of language, framework and persistence layer leads to technical debt or friction as raganwald commented above.

Like I said before, I view infrastructure debt as the cost of consistency in your environments and the cost of moving your code from one environment to another. Very rarely is the choice of language going to be a problem, unless you are trying to use a language in a way it's not intended to be uses (to throw out a completely random idea, like trying to use PHP as a functional language ).

Frameworks are a sore point for people, but mainly because they choose to fight them instead of trying to do everything the framework's way. Picking the wrong framework is a technical debt situation, not a problem of moving code from dev to production.

Persistence layer stuff is also a technical debt / friction issue. Chances are that you could use that particular data store without the persistence layer you chose. For example, I struggled to learn Doctrine1/2 but once I learned how DQL worked it became a lot easier to break out of the object-only contraints and create custom queries.

Hope that makes sense and answers your question.

Re: Infrastructure Debt

#16

I think the author has a different interpretation of "technical debt" than how it was originally intended. Technical debt is not accidental and it doesn't consist of small mistakes, but it's due to a deliberate decision to cut corners when trying to get product or feature launched. Just like financial debt is not accidental, but a deliberate decision. (although you could argue that credit cards etc can create acciden…

My experience is that it is a very rare and enlightened management team that allows developers to go back and clean up the technical debt that was created during the mad dash to get your application out the door.

Most of the time you are stuck with technical debt because there is no room in your timeline to go back and fix stuff that you know is broken.

YMMV, but as the blog post author I'm keenly aware of this situation.

Re: Infrastructure Debt

#17
1. I'm confused about who the audience of this article is supposed to be. If you're a software development team that is not using version control in a fairly deep way, you're not "in technical debt" so much as "wasting someone's time and money with your monumental incompetence." I suppose it's still good to note that you should be using it, but you're not at the point of worrying about subtleties.

2. What the author calls "infrastructure debt" is just technical debt outside the application source code.

3. Technical debt doesn't (just) happen because people are lazy, or take shortcuts, or "plan to do it the right way later.". It happens because you generally don't start an engineering effort knowing everything relevant up front. Indeed, it's "engineerIng" precisely because you're learning important things and uncovering subtlety as you progress. Technical debt is the inevitable outcome of the fixed past rubbing up against the newly-discovered present or anticipated future.

Update: So I guess I'm in the 'friction' analogy camp. :)

Re: Infrastructure Debt

#18

I think the author has a different interpretation of "technical debt" than how it was originally intended. Technical debt is not accidental and it doesn't consist of small mistakes, but it's due to a deliberate decision to cut corners when trying to get product or feature launched. Just like financial debt is not accidental, but a deliberate decision. (although you could argue that credit cards etc can create acciden…

My experience is that it is a very rare and enlightened management team that allows developers to go back and clean up the technical debt that was created during the mad dash to get your application out the door. Most of the time you are stuck with technical debt because there is no room in your timeline to go back and fix stuff that you know is broken. YMMV, but as the blog post author I'm keenly aware of this situa…

Sometimes it's up to engineers to say "I'm fixing this," and for QA people to say "I'm not signing off on this until it's fixed."

Maybe I've just been lucky, but all the places I've worked had developers and QA people that were willing to force quality into a product.

Re: Infrastructure Debt

#19
I liked the article because it made me think, again, about the debt we have at work. However, the few tacit solutions are not going to get me anywhere. This article needs a part 2 for debt that cannot be fixed with trivial solutions.

Re: Infrastructure Debt

#20
post #2

"Version control is a 20 year old, well-understood concept." Closer to a 40 year old concept: http://code.google.com/p/pysync/wiki/VCSHistory The first, at least according to that article, being SCCS in 1972: http://en.wikipedia.org/wiki/Source_Code_Control_System

Blog post author here. Yeah, I figured it has been around a lot longer than 20 years but I thought the 20 year thing would get the point across.

I was nitpicking, but it got me wondering about the history of revision control systems as I was pretty sure I had used RCS in the 1980s and I had to check to see if my memory was playing up. :-)
Post reply on HN