Improving productivity vs being productive.

I think we all know these images about productivity and being smart:

Aithor: unknown

Or this one

Author: unknown

For the last one I love all the debunking (example here)

The message usually associated with these images is work smarter, not harder.
Personally, I hate this phrasing cause in some way it implies „only idiots are working hard”. But the message it tries to communicate is essential. The efficiency of your work is essential. Basically, DevOps is built around the idea of constant improvement. But one of the better examples comes from The Unicorn Project.

Ideal 3 – Improving daily work

I have my problem with The Unicorn Project, but one thing I like the book message and its Ideals – especially number 3 „Improving daily work.”
It states that if one has a choice between improving the daily work or doing the work. They should choose the former cause it will have much better consequences in a long time.

Funny thing is that at first, this point stands in direct opposition to other ideas of DevOps. Like Delivery at speed and fast prototyping.
What is the point of improving your daily work if you don’t know if you are working at the right thing? For know, keep this question in mind, but first, let’s look at some examples. Of productivity improvements at the individual level.

Productivity Improvement – Examples:

Nunit

A few months ago, I was preparing a workshop about unit tests with NUnit as an example. Looking through documentation, I fast realised that I never actually took the time to check what features Nunit3 is offering. So I started checking it.

Imagine my surprise when I found this little trick.

Instead of writing a test like this:

[TestCase(1,1,2)]
public void Calc_Add(int firstNumber, int secondNumber, int expectedResult)
{
    int actualResult = firstNumber + secondNumber;
    Assert.AreEqual(expectedResult, actualResult);
}

 You can do this:

[TestCase(1,1, ExpectedResult = 2)]
public int Calc_Add(int firstNumber, int secondNumber)
{
    return firstNumber + secondNumber;
}

Yes, it is not a drastic improvement, but it is something that can help with writing a more straightforward test.

Resharper

I love reshaper and Rider, they save a ton of time while writing code. BUT to do that you have to spend some time learning its feature. JetBrains tools are quite expensive, so without utilising them well, you won’t get a return on your investment.

Balance

Return of the investment is the issue, you have to invest your time and your money to learn tools to make improvements.
But you also have to deliver. To do your job and be on time.
Granted, the productivity improvements will make it easier and faster, but it is a rare case to find something so efficient that you will get its benefits instantly.

So the question is how to find balance?
Especially when so much other important elements are fighting for your time:

  • Rest – without it, your performance goes down.
  • learning new technology/staying up to date (this is kind of connected subject)
  • Doing a job.
  • Helping others with their task to deliver faster.
  • the list goes on.

Sadly I don’t have an answer for you. If I had one, I would write some books and do workshops on it, earning me millions.

But I have some inspiration for you.

Starcraft 2:

An example of starcraft game – warning strong language

Starcraft is a real-time strategy game – so you not only have to be good at thinking’s but also think fast.
The player is controlling one of 3 factions, and the common goal of the online match is to defeat other player and his army.
Thing is you have also to build your infrastructure to build your army, and technology to upgrade it.

Here lies complexity

You need time to build army, building and harvest resources.

To win the game, you need the army to have a proper command you have to have an excellent infrastructure to build one or another – you need resources, and collecting them takes time.

Screencap from starcraft ladder match
source

And another player is not passive
So if you take too much time building your structures and not enough building army. You may loose because the Enemy army will come and destroy you before you ready.

Screencap from starcraft ladder match
source

But if you build an army and not develop technology enough, you may lose cause he has much stronger units.

There are much more dilemmas there like expanding to get more resources.
Etc I seriously recommend watching some StartCraft matches with good commentators – it is an interesting experience.

But what has it to do with us?

Basically, we have a similar dilemma – do we build an army (Work on task)
Or infrastructure (improve productivity)

The solution to the problem that StarCraft Player have is simple:
Players usually have a game plan – it may change as they „scout” (learn) more info about what enemy is doing, but at the start, they have an idea:
They may attempt Rush Strategy – this is a risky move to take all that you have and try to win the game in the first few minutes.

They may plan to go for early game – build only the necessary infrastructure to support whatever form of attack they can do but without making the match takes too long.

Then they may plan for late-game – this usually means they will go have on infrastructure and expansion at first. But still, they will keep minus army and scouts to prepare for enemy attack.

Over the years players have mastered this, and you can find on net specific build orders with exact timings .
But what is essential in them – even the long end game builds are not waiting if building an army to last-second they spend every so often time and resources to build some units.

Back to IT

And I think it is similar to us and productivity work.
IF you plan to use this tool only today and never again. There is no point in wasn’t time to learn it.
But if you will use it this week – maybe spending an hour to watch some tutorials and tips and tricks will help you.
IF your main job is writing C# code and you will do it for years – then better invest lots of time in learning visual studio secrets.

screen shot from game Don't Starve
Don’t Starve

There are a lot more similarities with games. I think another good example would be survival games where you have to manage a lot of different resources. (Energy, hunger, mental state etc.) and still, progress the main plot. Finding balance and being able to build reserves to survive unexpected consequences is vital in those games.

screen shot from game No man sky
No Man Sky

I will reiterate the amount of time you spend on improvements has to be proportional to task size. How much it should be? For that, I don’t have the answer you will have to find it on your own.

That all for today!

Thank you for reading!
Do you have any thoughts on balance working productivity and doing actual work?

Dodaj komentarz