image-center

I am currently working on three different tasks simultaneously. The first one is just about creating a plot (kind of useless, I think) but something that needs a little bit of work. The last time I did something similar, I assumed it would be a one-off thing, and used the most convoluted approach I could. Sadly, I can’t reuse it at all. Feeling a bit annoyed for having to do something so mundane!

The second task is about setting up and running an experiment. This should be quick, I think. I can do one of the other tasks while the experiments are running. Hmm… but the experimentation platform seems to be outdated; my first try just failed. After 4 iterations of trying to run the experiment, each of which takes about 10 minutes, I am finally able to get it to run.

My third task is the one I find somewhat interesting. It aligns the most with what I love doing. Core Machine Learning. I want to use this task to understand something fundamental to the problem, something that will help me to better explain why the model does what it is doing. After about 30 mins, I reach the conclusion that all of my approaches converge to one grand intractable problem and that the model behaviour can as well be explained by the hyperparameters. That’s a bummer! And here I thought I finally found a problem I could dig my teeth into. Meanwhile, I uncover another error in the second task. I have to start all over.

I end my day feeling frustrated and somehow managing to partially finish some of the tasks at hand. Have you had these days, where you feel like you’re super busy the whole day but see hardly any progress at the end of it? I am also sure many of you also know how you could have managed the day better. But the next time you face a similar situation, do you always follow through? I find it hard. I have this strong impulse in me to be fast, productive and efficient; even if sometimes that means being unorganized and trying things without thinking them through. In the end, of course, no surprise I end up being slow, unproductive and inefficient.

And it sucks! I have pondered over what is the problem, why I am not as efficient as I want to be, and why this is stressing me. I have identified a couple of points that I want to keep reminding myself to avoid these situations in the future. Hope these help you too.

Stop. Think. Proceed. … Repeat.

In task first two tasks mentioned above, I could have (and should have) stopped, think about why the errors are cropping up, run test cases wherever possible and more importantly ask myself the question, whether there is something I should do to ensure reproducibility the next time I run it.

Think Ahead

Being fast does not always increase productivity, especially in the long term. In the context of data science, it is almost always a trap. It is very easy to deliver a specific result very fast by employing quick and dirty approaches. The problem is: It is not extensible… at all. Probably nobody except you will understand what is going on, and you will probably spend more time the next time you have to do it.

Being in a rush will cause mistakes, repetition of work and frustration

Kind of self-explanatory right?

Focus on the here and now

This one I think is the reason I tend to rush in the first place. Have you found yourself thinking this to yourself?

I am not really interested in this task. I just want to get it over with. That other shiny and beautiful task will give me redemption!

If you have, trust me you are not alone. We need to learn to be patient and focus on the task. (Now that is why being grown-up sucks!)

Under-promise. Over-deliver

The divine mantra! One of the reasons why you probably rush through your work is because you have promised (at least in your head) that you’ll deliver results for so - and - so tasks. Quite understandable then, why you’d rush and throw caution to the wind. Isn’t it better to then just underpromise and once you are done with your under-promised task, essentially overdeliver?

Updated: