Divide and Conquer

I work as a software developer and very often must solve big, difficult problems. In most cases, first look at the problem is: “what a crap, it’s impossible to do this!”. But it isn’t true, there are no impossible things. I always take a step back, wait a moment and try to see only one or few parts of issue. Now it’s much simpler. This is divide and conquer principle. Very useful not only in IT, but also on whole live, if you know how to use it.

Too big issue

The problem with big challenges is that they can scare us – too big, too complicated, impossible to see the whole with all details. And it’s normal, because we are not machines and we have limited cognitive abilities. This fear and this scale can completely block our work, our thinking and ability to solving problems. It’s similar on IT, also on computers: huge, very complicated task to do is not good solution, because it’s difficult to understand and maintain. Of course, computer can do this, without issues, but if you will need to check or change something… it will be nightmare. Even if you are an author of something like this, even if there are a lot of comments, after few months you will don’t understand this code.

Make it simpler

It’s a place for divide and conquer principle. What does it mean and how to use it? As it name says, we should divide huge problems into smaller ones. Then, merge all small solutions and… we have solution for big trouble! You can ask: divide, but how small issues? As small, as it necessary to solve them, to make it simple (or simple and stupid – may sound strange, but it can save us a lot of work). You can divide one big problem into few smaller, then also divide each of them into smaller. And again, and again… Now you don’t have to “rescue world”, it isn’t huge, impossible thing. It’s only one, small problem. Solved? Ok, go next and solve it. And again, again… in effect, you conquer, you even close to solve whole thing.

As a developer, I use this principle very often. But it isn’t only for IT, it isn’t only for programming. You can use it every day in your life in many, many cases. You don’t belive? Do you remember your last hard running? You didn’t feel fine, but knew, that you have to run a few kilometers. Terrible? Now imagine: you must run only one kilometer. Or maybe just 500 meters? Now it’s the most important. After that, you will can do this again… and again. And you will finish your whole run. Similar in cycling. Maybe you start in ultra distance race? 100, 200, 500 kilometers? It looks terrible, but what’s about 10 kilometers? And after that, again 10 kilometers… Do you see the difference?

Principle in real world

You can use the same principle during learning anything. For example learning words in new language. Try to remember 100 words at once. It will be hard to do, and not particularly pleasant. But what about 10 or maybe only 5 words? After that, create new list, and lear next 5 words. Now it’s simpler, and you have results much faster, so you motivation is much bigger. If you must wait a long time for any result, it will be demotivating, it will be frustrating and exhausting. Don’t scare yourself by constantly watching the whole goal: it’s important, but to achieve, not to observe.

You can use this principle in many cases: to save money (small amounts, but in result, something bigger), during learning, during reading, during any sport activities, and also in work. Of course, you should always remember about rest and regeneration – small example with car: divide one, very long trip will not help you, if you you will become drowsy. You will be danger on the road. It’s great principle, but not to anything. Use it if you have problems with issue scale, or just want to solve it in a more pleasant way.