Don't Be Too Quick, Start Thinking!

Table of Contents

Don’t Be Too Quick, Start Thinking!

Sometimes I feel like the world has become too fast. Everything happens so quickly that we switch to autopilot and stop thinking about why and for what purpose we are doing a task. Are we doing it in the way we imagined, or the way someone else suggested?

This is particularly dangerous in the work of a programmer, where we enter a trance-like state after just a few minutes, becoming completely thoughtless…

You might say: “This guy is talking nonsense – programming is all about constant thinking, coming up with concepts, solutions, verifying them. I have to connect ten libraries at once and consider the performance of my code. I’m always thinking!”

You’re right. However, it’s important to distinguish between a few things you need to think about to complete your tasks:

  • Why and for what purpose am I doing THIS - This is a crucial question, especially if you are working in a dynamic environment where tasks bombard you from all sides (e.g., maintenance, or in a development department that receives “loose” assignments from different departments). Is this task truly necessary? What will happen with the result of the work once I complete it, or if I set it aside with determination, will someone be upset? And if so, why? Is it just because you didn’t do this task, or because “someone’s life will be affected”? Often, even 30-40% of tasks are unnecessary. Yes! Do you know why? Because those who assign them do not have TIME to consider their sensibility. Of course, it’s not true that they don’t have time; they simply do not DEDICATE time to it.

  • How do I want to approach doing THIS SOMETHING - Often, what we need to do can be accomplished in many different ways. For instance, a particular functionality involving collecting complex information can be realized with a single form or a wizard. A service can be created using a few if statements or through the Strategy pattern. Is it worth resorting to this pattern or some other seemingly elegant (but also flexible) solution when, upon reflection, no one will ever revisit this code? Conversely, is it worthwhile inserting a few if statements if it’s known that, as the application develops, new versions of algorithms will be introduced that will operate differently? Would the Strategy pattern be more appropriate in that scenario?

  • How do I want to execute THIS - this pertains to which classes, libraries, constructions to use, and how to write it.

At best, on autopilot, we only answer the question of how we specifically want to execute THIS. This leads us into a whirlwind of problem-solving, jumping from one idea to another, considering thousands of details. It’s faster this way. But in this case, fast means thoughtless. You do a lot, and quickly, but WITHOUT MEANING (or at least without analyzing the purpose of the task itself - HA!).

Don’t be too quick, start thinking :)

(Text translated and moved from original old blog automatically by AI. May contain inaccuracies.)

Related Posts

The Hyper-Optimizer of Time

The Hyper-Optimizer of Time

May 21, 2009 - my last entry… quite a bit of sand has flowed through the hourglasses. The arrival of a small being in my life changed a lot, but slowly :) I’m returning to the world of the living. To start off, here’s my first post after the break.

Read More

Natural Course of Refactoring online on InfoQ

I am so delighted that the article about Natural Course of Refactoring is live. It is a very simple, yet powerful idea about refactoring (but not easy after all) and I hope this way it will reach more people than ever before. So please retweet it and share it wherever you can.

Read More

Clients Want to Be Agile...

Clients Want to Be Agile…

One of the recent meetings involved establishing (by me, MS) a way to collaborate with a client (details intentionally slightly modified or omitted, though based on a real case). The client (K) said:

Read More