Sunday, August 16, 2015

Motivation for Making Things Easy

So this is actually related to the previous post and another way of seeing it.

I have streamlined a lot of our processes such as build and testing (probably mentioned this several times already). But what is the motivation for building these and other tools that make doing things easier?

There are a lot of reasons but at their core is this fact: it reduces (significantly) the cost associated with doing whatever it is that they are supposed to do.

So what?

Well let's take shipping new features for a (software) product, something that is done a lot. If it takes 4 days to build and release a new version, what tends to happen?
Well from my observations and experience:
  • A single release typically has a huge list of features... and when something goes wrong it is very hard to figure out which change actually broke it (I am starting to hear prayers...)*
  • Releases are done less frequently; ready features are still waiting (and when they do go through, is been a month and no one remembers exactly what this feature does and what exactly needs testing)
  • Time and energy are wasted on mundane work that a computer could do in seconds
*Also if it needs rolling back, the features that are working fine would be removed as well. I did this once when I first took over a project. It wasn't my bug but still it was impacting users so had to rollback and removed some unrelated features. Users weren't too happy.

All of this can be summed up as either immediate pain or cause of future pain.
And so this brings us to my conclusion (it might sound familiar and like it should be coming from a philosopher):

There are really only 2 things that motivate people: pain and pleasure (reward)
Therefore if cost of doing something (Cost) > Reward, the tendency is it will not get done... until  Pain > Cost

And in the context of software development, the work is then rushed through and poorly tested, leading to production issues which again take away time from doing other work, which leads to less time for testing and developing quality code, which ... (You get the point)

Basically MORE PAIN

So what is the solution?

Reduce the cost to the point that Cost < Reward, or in other words:


Make things easier!

No comments:

Post a Comment