Empty your bladder before watching movie

Toilet sign What does emptying your bladder before watching movies have anything to do with software development? Read on to find out… Before that, I want to tell you a story… and no, it doesn’t start with “Once upon a time”…

The movie afternoon

It was a beautiful Saturday afternoon. I had just taken my lunch and on a whim, decided to watch a movie. Glancing through the available movies, I thought “Bee Movie” seemed interesting. So I got my tickets and went in punctually.

Well, I don’t know how movies are aired in other countries, but in Singapore, there’s a 10 minute segment where commercials and movie trailers are aired before the actual movie is shown. There’s a comfortable seat waiting for me and there’s air conditioning (believe me, in Singapore, low temperatures are a premium), so I usually just go in to the movie theatre early and rest up. Besides, I get to view new movie trailers and sometimes, the commercials are funny or inventive or creative.

Anyway, I was already comfortably slumped in my seat and this lady and her maid towing two children came along. They were sitting in my row, so I shifted slightly to let them pass and they sat down. Since it’s still within that 10 minute segment, the lady asked one of her children that he go to the toilet now. Then she promptly dragged that boy out. Unsurprisingly, I’ve got to move again to let them out.

After a few minutes, they came back, just in time for the movie, and again, I’ve got to move to let them in.

This situation is actually very common. Parents do that. And couples. And large groups of teenagers. Anytime there’s more than one person in the movie watching group, this situation potentially comes up.

These people come in, sit down, and after like 1 minute, decide that they need to go to the toilet, or buy a hot dog, or get a drink. Wouldn’t they have thought of those errands before they come in to the theatre?

There’s only one answer: laziness.

Movie watching is a fairly common activity. You probably did it quite a few times. Is it very difficult to foresee that you want to go to the toilet or buy that hot dog and drink beforehand?

They just had to come in and check that they still have time before the actual movie starts. Then they run out like there’s no tomorrow and do whatever they need to do, and feel like oh, they’ve gotten one thing down pat.

This is not about getting things done. It’s not even a productivity issue. It’s an issue of poor planning. Do you really think coming all the way in to the theatre, sit down and then running out again to do mini errands is efficient?

The software development parallel

Just like there are tasks you can foresee for movie watching, there are tasks you can foresee for software development. Design, thinking, business logic understanding. Preparation. All before writing a single line of code.

You don’t rush in to write a fantastic code base, and then find out that “oh, maybe I should’ve thought of that…” and then rewrite your entire code base to incorporate a business logic that should have already been thought out.

You don’t rush in to write code for web pages, and then find out that “oh, if I generalise this part, it can be used as a template for other web pages as well”.

Design first. Think first. Prepare first. It doesn’t take a lot of time, and you know you should do it. So why don’t you? Laziness. It’s much easier to fall into the trap of coding to feel productive. I’ve sometimes fallen for this trap too, and it’s usually undone a lot of my work.

Just as some movies aren’t bladder friendly, some software projects aren’t design friendly either. These projects are either too complex or too simple. Complexity intimidates your mind, and you feel it’s too much work to think things through. Simplicity fools your mind, and you feel anything more than “I just code this, and code that, and everything’s done” is too much thinking.

Even a short period of designing and planning can do wonders for a software project. It’s saved my skin at least once, because of the short deadline given.

So how do you start your software development projects?