Trivial

What It Means

insignificant

What My Company Thinks It Means

two weeks worth of work (grossly underestimated)

This buzzword is extremely overused and misused. It's also dangerous.

Normally, I wouldn't care so much. In software you would normally hear that something is "trivial" if it's something you can copy and paste out of a textbook. An example of this is a basic linked list. As a matter of fact... out of shear boredom I'll type up a queue right now. I swear that I am pulling this code out of my ass as I type this; I'm not looking anything up. Note: this code is untested. Don't use it without testing it first.

#include <stdlib.h>

struct Node
{
    void * data;
    struct Node * next_node;
};

static struct Node * head_node;

void init_fifo ()
{
    head_node = 0;
}

void add_fifo_node (void * data)
{
    struct Node * new_node = (struct Node *)malloc(sizeof(struct Node));

    new_node->data = data;
    new_node->next_node = 0;

    if (! head_node)
    {
        head_node = new_node;
        return;
    }

    struct Node * last_node = head_node;
    while (last_node->next_node) last_node = last_node->next_node;
    last_node->next_node = new_node;
}

void * get_fifo_node ()
{
    if (!head_node) return 0;

    void * retptr = head_node->data;

    struct Node * del_me = head_node;
    head_node = head_node->next_node;
    free(del_me);

    return retptr;
}

That took about 5-10 minutes to type out. That can be considered trivial, especially because it doesn't really do anything and isn't very safe, but that debate is an entire article in itself.

No, the problem is when management says, "Oh, that's trivial. It'll probably only take about two weeks," at a schedule meeting. Anything "trivial" in software should take less than a day, maybe two if you require rigorous testing. Otherwise, it's something worth writing down somewhere on the schedule as its own task. This is where things get dangerous. If something is so "simple" that it should take two friggin' weeks by your estimate, you're probably severely underestimating how much work there actually is. I found this quote on DadHacker a while ago; I think it's right on the money.

"When someone says that something is 'trivial,' multiply their estimate by three."

If something complicated is done so quickly and well to the point where it seems trivial from a point of view outside the team, that means that you have an excellent engineering team. That does not mean that the work is any less complex.

I actually wrote a lot more here, but I've opted to cut the article here for length. The rest of the article was a story on why the word "trivial" can bring me more frightening nightmares than Freddy Kruger could ever cause me. Stay tuned for another article.