People & Money & Time

People & Money & Time

(can't catch them all)

Pokemon lied to me

A colleague of mine and I were trying to determine how to decide which way to move forward with a potential purchase. We were evaluating two similar products. One we would have to buy, the other we already had access to.

There were overlaps between the features of both, I was struggling with how to decide.

She then mentioned...

I have a framework for these types of decisions. Look at each product through the lens of People, Time, and Money. You never have all three, usually one, maybe two. Go.

Then and there I realized Pokemon lied to me, I won't be able to catch them all. I don't know how I am gonna tell the kids...

How have I not heard/used/plagiarized (kidding, full props to my "colleague") this approach before?

So to try to visualize this further I ended up here:

def decider(people: int, money: int, time: int) -> int:
    """
    A pseudocode function to help a human make decision-based off 
    arbitrary values only they understand.

    Args:
        people: how many people are available?
        money: How many dollars are needed?
        time: How many days will the people need to invest?

    Returns:
        A value between 1 - 10 representing a score for a 
        decision. 1 is poor 10 is great.

    """

    # this should mess with the human (har, har, har)
    return 0


def main():
    service_a = decider(9, 8000, 365)
    service_b = decider(6, 0, 365)

    if service_a > service_b:
        return "CHOOSE A"
    elif service_a == service_b:
        return "DO NOT PASS GO"
    else:
        return "CHOOSE B"


if __name__ == "__main__":
    main()

In our case, the fact that more people could work with Product A outweighed the cost and helps us ensure we can "spread the load" to help scale the product. More "eyes on Target" the better off we are. Money isn't always the decider, we can leave that up to insanely written Python code ;)

To the moon 🚀

After applying this approach to my current challenge, it became very obvious how well this framework can scale to support so many different challenges/decisions we all run into during our day-to-day:

  • build it vs buy it
  • IaaS vs PaaS
  • AWS vs Azure vs GCP
  • boxers vs briefs

If I can just somehow use this to name functions, methods, and classes? Man, I hate naming stuff (I did write a Python script to help with this, future post maybe).

I took the time to write this post because I wanted to cement this idea in my coconut. Time to go and sort out what to say to the kiddos about Pikachu and his friends...