Thursday, May 22, 2014

Technical debt and getting rid of the elephants

Recently, I had to deal with code where I knew there were elephants in the code and I did not want to see them. Namely, adding a new build platform (mulet) and running a b2g desktop job through mozharness on my local machine.

As I passed by, I decided to spend some time to go and get some peanuts to get at least few of those elephants out of there:

I know I can't use "the elephant in the room" metaphor like that but I just did and you just know what I meant :)

Well, how do you deal with technical debt?
Do you take a chunk every time you pass by that code?
Do you wait for the storm to pass by (you've shipped your awesome release) before throwing the elephants off the ship?
Or else?

Let me know; I'm eager to hear about your own de-elephantization stories.

Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.


  1. I would say that Mozilla doesn't have a very good approach to this in general -- we tend to ignore tech debt. The most effective means I've found to pay down tech debt at Mozilla is to seize every opportunity to both accomplish someone's goal *and* reduce tech debt. Sometimes that's an outage or some other crisis or forcing event. Sometimes it's just a confluence of effort. I take what I can get.

  2. We have technical debt; that's for sure.

    I want to encourage people to do what you mention. Take every opportunity to try get things done + reduce the tech debt.

    It is because someone else mentioned that you can take a bit of time on each project to reduce the technical debt that I have started doing it. I want to encourage others to do it. It was actually less work than I thought.

    @fournm, said on Twitter, that she uses the "camp-site rule" where you leave things nicer that you found it :)

    Thanks for taking part in the conversation.

  3. I always have the urge to do this. Bug 898554 is my current example, in some of the same code as your blog post. Though I'd characterize it as chasing out the mice more than throwing elephants off of a ship.

    I'll note that in this case, many of these mice ended up not being the ones eating my cheese. They indirectly show something of the history of my earlier failed/learning attempts, and were cleanups/refactorings that mattered only to those abandoned approaches. I threw them all into the same bug anyway, which is perhaps not the right thing to do. We'll see what my reviewers say. ;-)

  4. I love the mice analogy :) I think it is even more appropriate!