Khoa Hong

April 22, 2021

The Grind

I often have people newer to the tech industry ask me for secrets to success. There aren’t many, really, but this secret — being willing to do something so terrifically tedious that it appears to be magic — works in tech too.

Some time ago, I implemented this animation for our mobile app:

Welcome screen animation.mp4
Welcome screen animation.mp4 544 KB

It's just a simple welcome screen with four pages introducing the features of the app. However, I wanted to add a subtle animation in order to give a good first impression. In the end, there are 52 parameters for the animation, coordinating the scroll position with the colors, positions, sizes, and scales of the background and the triangles. It looks nice in every device sizes.

When my colleagues looked at the code, the first question was "How did you come up with these parameters?", and my answer was "I tried out lots of different parameters until it looks good." Most of them thought that I was joking or was crazy.

This was not the first time this happened, and not the second time either. I have had the exact same conversation several times in different software teams. Every time, I was quite puzzled with the reactions from my colleagues, until I saw the article from Jacob.

We’re an industry obsessed with automation, with streamlining, with efficiency. One of the foundational texts of our engineering culture, Larry Wall’s virtues of the programmer, includes laziness:

Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote so you don’t have to answer so many questions about it.

I don’t disagree: being able to offload repetitive tasks to a program is one of the best things about knowing how to code. However, sometimes problems can’t be solved by automation. If you’re willing to embrace the grind you’ll look like a magician.

Few people are willing to spend a whole day looking at an animation hundreds of times, tweaking dozens of parameters until it looks good. I'm glad that I have been able to pull it off in quite a few occasions. It was very worth it every time.